问题
我正在连接到一个 telnet 监听器。telnet 服务器每秒发送 '1234'。我想读取这条消息 '1234' 并关闭 telnet 会话。 下面是我的代码,但它不起作用。
代码语言:javascript复制#!/bin/bash
telnet 192.168.10.24 1234
read $RESPONSE
echo "Response is"$RESPONSE
echo "quit"
我如何自动读取 telnet 消息?
回答
如果你的目标 telnet 服务端口是可访问的,那么最简单和最容易的方法就是:
代码语言:javascript复制sleep <n> | telnet <server> <port>
- n - 自动退出前的等待时间,以秒为单位。这个时间可以是小数,例如 0.5 秒。请注意,某些需要的输出可能不会在指定的等待时间内返回。因此,我们可能需要相应地增加等待时间。
- server - 目标服务器IP或主机名。
- port - 目标服务端口号。
你也可以像这样将输出重定向到文件,
代码语言:javascript复制sleep 1 | telnet <server> <port> > output.log
如果你的目标 telnet 服务端口不可正常访问,或者说远程主机不接受也不丢弃连接请求,则上述方法可能不奏效。 在这种情况下,需使用以下方法:
代码语言:javascript复制RESPONSE=$(timeout 5 telnet 192.168.10.24 1234)
参考
- stackoverflow question 10172860
- man telnet