无法使用xinetd查看Shell脚本的回显输出

时间:2018-07-27 12:43:06

标签: bash shell iptables xinetd

我已经创建了一个名为/ usr / sbin / helloworld的简单shell脚本

#!/bin/bash
echo "Hello World"
mkdir ~/itran
read -p "Say Hello : " hello
echo "$hello"
exit 0

我如下创建了/etc/xinetd.d/testservice-map

service testservice
{
    port            = 4079
    socket_type     = stream
    protocol        = tcp
    wait            = no
    user            = root
    server          = /usr/sbin/helloworld
    server_args     = test
}

并在/ etc / services中添加以下行

testservice 4079/tcp

我已为主机分配了一个IP,并添加了IPTABLE规则以将该IP 22端口上的请求重定向到localhost的4079端口

现在,当我使用另一台计算机上的腻子通过SSH SSH到该IP时,从日志(/ var / log / messages)中可以看到我的服务正在主机上执行,但看不到“ Hello World”信息。 目录“ itran”已创建,但是我看不到回显消息,也无法输入任何值。

我是新来的。请让我知道是否需要更多信息。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您遇到的问题是ssh的功能超出您的预期。

会发生什么:

  • 您启动ssh
  • 您的ssh客户端发送会话的启动
  • 您的脚本启动并发送“ Hello world”
  • 您的ssh客户端需要服务器公共密钥,但是会获得问候世界
  • 您的SSH客户端终止

在ssh客户端上有一些详细选项,您可能会观察到这种行为。

现在,其他客户端没有第一个协议握手。如果您有telnet客户端,则使用

可能会得到预期的结果
telnet 127.0.0.1 4079

否则,请尝试nc