やーまんぶろぐ

気が向いた時にだけ書くブログ

xinetdを使って特定のサービスを起動させてみる

他のサーバのnginxの設定を書きかえてreloadするようなことができないかを検討中です。

xinetdを使って外部から要求のあったときにだけサービスを起動させることができれば、実現可能かと思ったので検証してみようと思います。

今回は、xinetdを使って特定のサービスを起動させるところまでやってみます。

xinetdの説明は下のリンクがわかりやすかったです。
mosuke5.hateblo.jp

xinetdをインストール

yumでインストールしましょう。

sudo yum install xinetd

サービスの窓口のサービスを作成

/etc/xinetd.d/ の下にファイルを作成します。
今回は/etc/xinetd.d/test というファイルを作成しました。

service test
{
  disable = no
  socket_type = stream
  wait = no
  user = root
  protocol = tcp
  server = /bin/sh
  server_args = /usr/local/bin/test
  log_on_failure += USERID
  port = 12345
}

サービスの窓口を叩くと、server_argsで設定したサービスを起動させることができます。

起動させるサービスを作成

/usr/local/bin/test を下のように記述してみました。

#!/bin/sh
echo test

awk '{print $0}'

ファイルを作成したら権限を変更しておきましょう。

sudo chmod 755 /usr/local/bin/test

xinetdを起動

xinetdを起動させて、指定したポートをLISTENしているか確認してみます。

sudo /etc/init.d/xinetd start

sudo netstat -tan | grep 12345
→ tcp        0      0 :::12345                    :::*                        LISTEN

要求を送ってサービスを起動

いよいよncで要求を送ってみます。

echo hoge | nc localhost 12345test
 hoge

文字列を渡して、特定のサービスが動いたことが確認できました。

最後に

他のサーバのnginxの設定を書きかえてreloadするところは、次回試してみます。

気が向いたら、また書きます。