我正在连接到一个 telnet 监听器。 Telnet 服务器每秒发送一些数据。我想在 X 秒内读取消息并将其写入文件(我们将花费 6 秒的示例)。
注意:示例中的 IP 地址已更改为“IP”。 “端口”也一样。
我已经尝试了一些东西:
#!/bin/bash
#myScript.sh
telnet IP Port >> myFile.txt
sleep 6
pkill myScript.sh
这个解决方案写在我的文件中,但我的脚本永远不会结束。
这是我的第二个建议:
#!/bin/bash
#myScript.sh
timeout 6 telnet IP Port >> myFile.txt
这里,这是另一个问题,遵守超时,脚本在 6 秒后结束,但在“myFile.txt”中,我有
Trying IP...
Connected to IP.
Escape character is '^]'
我怎样才能使这个脚本正确?
注意:我必须使用Telnet。
最佳答案
在您的第一个解决方案中,您可以尝试:
telnet IP Port 2>&1 | tee myFile.txt & sleep 6 exit
这会将 telnet 命令发送到后台进程,然后在 6 秒后退出。
在您的第二个解决方案中,您可以尝试:
timeout 6 telnet IP Port 2>&1 | tee myFile.txt
这会将 stderr 和 stdoutt 发送到 myFile.txt
https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html
或者,正如其他人所建议的那样,使用 netcat:
timeout 6 nc -vz IP Port 2>&1 | tee myFile.txt
关于Linux 脚本在一段时间内将 telnet 消息中的数据写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56897998/