使用 telnet 在一行中在远程计算机上执行命令

使用 telnet 在一行中在远程计算机上执行命令

我需要编写一个脚本来监控远程机器的 wlan0 接口。我可以通过iwconfig wlan0反复在远程机器上执行来做到这一点。但是如何登录到该机器并通过 telnet 执行此命令呢?我可以通过 ssh 执行此操作,但 ssh 需要时间登录,并且如果在执行过程中与远程机器的连接断开,它会挂起。

答案1

您无需反复调用 ssh 命令,只需运行 ssh 即可在远程系统上反复执行该命令,然后在本地解析和使用输出。这样,您就不必继续运行 ssh 连接并忍受初始延迟。

例如:

ssh remotehost "while [ "1" ] ; do iwconfig wlan0 ; sleep 1 ; done"

或者,您可以使用 netcat 将远程系统上的输出发送回您的计算机。例如,在本地计算机上运行此命令:

nc -l 9999

然后在远程机器上:

while [ "1" ] ; do iwconfig wlan0 ; sleep 1 | nc localmachine 9999

将此处的 localmachine 替换为将执行“监控”的机器的主机或 ip。

您甚至可以将 nc 读取该端口的输出传送到另一个命令中。

更接近您的实际问题,您可以在远程系统上执行此操作以充当 telnet“服务器”:

while [ "1" ] ; do iwconfig wlan0 | nc -l 9999 ; done

然后你可以这样做来获得输出:

telnet remotehost 9999

相关内容