使用expect将Ctrl+D发送到telnet连接

使用expect将Ctrl+D发送到telnet连接

我想使用expect文件自动连接到telnet会话,流程是:

  • 当我们连接到某个IP和端口时,它会显示escape character is ]
  • 之后我们必须给Ctrl+D

\x04我写了一个发送Ctrl+的期望文件D。当我运行该文件时,连接很好,但希望我从键盘上给出Ctrl+ 。D但我希望它自动从脚本本身输入Ctrl+ 。D不应手动执行任何操作。

你能解释一下方法吗?

答案1

您可以在不使用expect shell的情况下自动退出telnet。

sleep <n> | telnet <server> <port>

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

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

港口- 目标服务端口号。

您还可以将输出重定向到文件,如下所示:

sleep 1 | telnet <server> <port> > output.log

答案2

我建议将转义字符更改为您可以更轻松地发送的字符expect。例如,如果您知道自己没有发送感叹号,请将其用作转义字符:

$ telnet -e ! 10.1.2.3 80
Telnet escape character is '!'.
Trying 10.1.2.3...
Connected to 10.1.2.3.
Escape character is '!'.
GET!
telnet> quit
Connection closed.

答案3

您可以输入ctrl+ V, ctrl+D来获取期望脚本中的文字字节序列。 Expect 将发送此消息,就像您交互键入ctrl+一样D

相关内容