我正在连接到一个 telnet 监听器。Telnet 服务器每秒发送“1234”。我想阅读消息“1234”并关闭远程登录会话。下面是我的代码,但它不起作用。
#!/bin/bash
telnet 192.168.10.24 1234
read $RESPONSE
echo "Response is"$RESPONSE
echo "quit"
如何自动阅读 telnet 消息?
下面给出最简单和最简单的方法。
sleep <n> | telnet <server> <port>
n - 自动退出前的等待时间(以秒为单位)。它可能是小数,如 0.5。请注意,某些必需的输出可能不会在指定的等待时间内返回。所以我们可能需要相应地增加。
server - 目标服务器 IP 或主机名。
port - 目标服务端口号。
您还可以像这样将输出重定向到文件,
sleep 1 | telnet <server> <port> > output.log
更新 1#: 如果远程主机不接受也不丢弃连接请求,上述方法可能不起作用。在这种情况下,以下方法有效:
RESPONSE=$(timeout 5 telnet 192.168.10.24 1234)
您可以使用内部 TCP 机制:
#!/bin/bash
exec 3<>/dev/tcp/127.0.0.1/80
# echo -en "eventualy send something to the server\n" >&3
RESPONSE="`cat <&3`"
echo "Response is: $RESPONSE"
或者您可以使用 nc (netcat),但请不要使用 telnet!
将输出重定向到文件并从文件中读取
telnet [ip-address] > /tmp/tempfile.txt
已经回答了,但这里有另一个使用 curl 的观点,可用于快速检查(即服务是否处于活动状态)。我不得不努力避免“脚本”和“期望”解决方案。
只是可能的 POP3 检查的存根:
echo "quit" | curl telnet://localhost:110 > /tmp/telnet_session.txt
if grep "POP3 ready" /tmp/telnet_session.txt; then
echo "POP3 OK"
else
echo "POP3 KO"
fi