xinetd / netcat - 重定向stdin / stdout

时间:2015-04-10 02:47:02

标签: bash shell netcat xinetd

我有一个简单的xinetd控制脚本,它包装了侦听给定端口的简单Java应用程序。当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负责向应用程序发送数据,但不是相反......任何帮助/提示都将不胜感激!

1 个答案:

答案 0 :(得分:0)

假设您已经控制了Java服务器代码,那么您将添加一个不需要的重定向层。不要将xinetd配置为调用shell脚本,而是将其配置为调用Java应用程序。然后只需使用Java中的System.in和System.out - 就这么简单!

一旦连接到xinetd,您的服务器就可以使用stdin / stdout。