特定のポートでリッスンする単純な Java アプリケーションをラップする単純な xinetd 制御スクリプトがあります。xinetd は stdin/stdout を介して通信するため、netcat を使用してトラフィックを Java アプリとの間でリダイレクトしたいと考えています。現時点では、次の構成があります。
xinetd
service my_server
{
type = UNLISTED
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
port = 2177
log_on_success += DURATION HOST USERID
server = /opt/stuff/my_server.sh
}
my_server.sh
port=2111
# start the java process on the given port
java -jar /opt/stuff/myserver.jar "$port" &
# redirect traffic using netcat
retry_counter=0
until nc -v 127.0.0.1 ${port}
do
let "retry_counter++"
echo "retrying... (${retry_counter})" >> /var/log/smpp_nc
sleep 0.1
done
netcat はアプリにデータを送信する仕事をしているようですが、その逆ではありません...ヘルプ/ヒントをいただければ幸いです!