如何使用空的telnet进行交互

时间:2016-08-24 13:54:20

标签: linux bash pipe expect telnet

我需要替换一个非常简单的expect脚本,如下所示:

#!/usr/bin/expect
spawn telnet 192.168.1.175
expect {
    "assword" {send "lamepassword\r"}
}
interact

使用bash的等效empty脚本,如下所示:

#!/bin/bash
empty -f -i in -o out telnet 192.168.1.175
empty -w -i out -o in "assword" "lamepassword\n"

之后我需要用户使用telnet interact,我不知道该怎么办。我想到的最接近的事情是stdinstdoutnamed pipes绑定,使用socat - in之类的东西。任何建议都非常欢迎!

1 个答案:

答案 0 :(得分:1)

  

我尝试了cat out & cat /dev/stdin >in,它有效,但它有一个额外的   换行符,制表符完成功能无效,ctr+c终止cat和   不是正在运行的主机进程。我试图说服socat采取行动   根据这些需要。

使用socat将键盘输入传输到telnet进程是一个好主意。例如:

cat out & socat -u -,raw,echo=0 ./in

要允许Ctrl - C终止socat,请添加escape=3

cat out & socat -u -,raw,echo=0,escape=3 ./in

但请注意,这不会终止telnet会话,因为它以守护程序模式启动,因此您可以通过执行telnet重新连接到socat再次。要结束telnet,您可以logout