【问题标题】:xinetd / netcat - redirecting stdin/stdoutxinetd / netcat - 重定向标准输入/标准输出
【发布时间】:2015-04-10 02:47:02
【问题描述】:

我有一个简单的 xinetd 控制脚本,它封装了侦听给定端口的简单 Java 应用程序。由于 xinetd 通过标准输入/标准输出进行对话,我想使用 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 完成了向应用程序发送数据的工作,但不是相反...任何帮助/提示将不胜感激!

【问题讨论】:

  • xinetd 不为您处理这些事情吗?您的服务器应该只与 stdin/stdout 通信,xinetd 将在建立连接时将它们连接到当前客户端的套接字。
  • 不幸的是,服务器无法与 stdint/stdout 通信,因此需要 netcat

标签: bash shell netcat xinetd


【解决方案1】:

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

一旦连接到 xinetd,您的服务器将能够使用 stdin/stdout。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多