Linux 脚本在一段时间内将 telnet 消息中的数据写入文件

标签 linux bash telnet

我正在连接到一个 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。

最佳答案

  1. 在您的第一个解决方案中,您可以尝试:

    telnet IP Port 2>&1 | tee myFile.txt &
    sleep 6
    exit
    

这会将 telnet 命令发送到后台进程,然后在 6 秒后退出。

  1. 在您的第二个解决方案中,您可以尝试:

    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

  1. 或者,正如其他人所建议的那样,使用 netcat:

    timeout 6 nc -vz IP Port 2>&1 | tee myFile.txt
    

http://netcat.sourceforge.net/

关于Linux 脚本在一段时间内将 telnet 消息中的数据写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56897998/

相关文章:

bash - 如何在 Bash 中保留带引号的字符串中的换行符?

bash - 区分大小写的排序 Unix Bash

linux - Telnet 使用用户名和密码登录邮件服务器

perl - Perl ssh连接并执行telnet连接

c++ - 如果我使用 popen,如何获取收到的数据包数量、ping 命令的平均往返时间

linux - 使用 Ansible 删除属性

sql-server - 带有 FreeTDS、MSSQL 的东方字符

linux - shell 脚本 : moving files to another directory

java - 使用 telnet 和服务器套接字连接到您自己的 PC。每次连接都被拒绝

linux - 存储库 'http://repository.spotify.com xenial Release' 没有发布文件