xinetd 引数に関する問題

xinetd 引数に関する問題

私は次のような簡単なことを実行する 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"

関連情報