【问题标题】:Can't see echo output of shell script using xinetd使用 xinetd 看不到 shell 脚本的回显输出
【发布时间】:2018-07-27 12:43:05
【问题描述】:

我创建了一个名为 /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 端口

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

我是新手。如果需要更多信息,请告诉我。任何帮助将不胜感激。

【问题讨论】:

    标签: bash shell iptables xinetd


    【解决方案1】:

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

    会发生什么:

    • 你启动 ssh
    • 您的 ssh 客户端发送会话启动
    • 您的脚本启动并发送“Hello world”
    • 您的 ssh 客户端需要一个服务器公钥,但得到的是 hello world
    • 你的 ssh-client 终止了

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

    现在,其他客户端没有第一次协议握手。如果你有一个 telnet-client,你可能会得到你预期的结果

    telnet 127.0.0.1 4079
    

    否则,请尝试nc

    【讨论】:

    • 有什么方法可以使用 SSH 吗?我可以让我的脚本进行握手,接受用户名和密码,然后显示一些东西吗?有图书馆吗?
    • 有 C 库,Python 的 Twisted 似乎可以做类似的事情,但不要去那里。这几乎肯定不是您想要的。结果不会是您制作的简单脚本。
    猜你喜欢
    • 2016-08-16
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多