
私は次のような簡単なことを実行する blah という BASH スクリプトを作成しました (下記参照)
#./blah -x "bindas"
hello bindas
xinetd を使って動的変数でスクリプトを実行したいのですが、以下の例のようなものになります。
#telnet localhost 809 "bindas"
hello bindas.
私はこれを telnet で使用するつもりはありません。実際、他のアプリケーションが 809 ポートでこのサーバーと通信しようとします。引数を受け取るように xinetd ファイルを設定するにはどうすればよいでしょうか? server_args はパラメーターを受け取ることができることがわかりましたが、次のようなものはどうでしょうか。これは機能しますか?
# This file is being maintained by Puppet.
# DO NOT EDIT
service cont_blah
{
port = 809
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
group = root
groups = yes
server = /usr/local/bin/blah
server_args = -x $1
}
答え1
いいえ、それは機能しません。
TCPソケット経由で受信した入力はxinetdでは解釈されないため、スクリプトにコマンドライン引数として渡すことはできません。スクリプトは標準入力として受信したデータをすべて読み取る必要があります。例:
#!/bin/bash
read name
echo "Hello $name"