Linux脚本解析telnet消息并退出

use*_*117 7 linux bash telnet

我正在连接到telnet监听器.Telnet服务器每秒发送"1234".我想阅读消息"1234"并关闭telnet会话.以下是我的代码,但它不起作用.

#!/bin/bash
telnet 192.168.10.24 1234
read $RESPONSE
echo "Response is"$RESPONSE
echo "quit"
Run Code Online (Sandbox Code Playgroud)

如何自动读取telnet消息?

dAm*_*m2K 6

您可以使用内部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"
Run Code Online (Sandbox Code Playgroud)

或者您可以使用nc(netcat),但请不要使用telnet!

  • 您可以查看bash手册页上的REDIRECTION段落,了解/ dev/tcp,exec和<>的工作原理.实际上,您正在请求bash打开以在同一个shell上读取和写入文件描述符#3,并将其附加到127.0.0.1端口80上的TCP流. (2认同)

Sef*_*eff 6

下面给出了最简单,最简单的方法。

sleep <n> | telnet <server> <port>
Run Code Online (Sandbox Code Playgroud)

n-自动退出之前的等待时间(以秒为单位)。它可以是小数,例如0.5。请注意,某些必需的输出可能不会在指定的等待时间内返回。因此,我们可能需要相应增加。

服务器 -目标服务器IP或主机名。

port-目标服务端口号。

您还可以像这样将输出重定向到文件,

sleep 1 | telnet <server> <port> > output.log
Run Code Online (Sandbox Code Playgroud)