我需要替换一个非常简单的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
,我不知道该怎么办。我想到的最接近的事情是stdin
和stdout
与named pipes
绑定,使用socat - in
之类的东西。任何建议都非常欢迎!
答案 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
。