如何使用 empty 与 telnet 交互
How to interact with telnet using empty
我需要替换一个非常简单的 expect
脚本,如下所示:
#!/usr/bin/expect
spawn telnet 192.168.1.175
expect {
"assword" {send "lamepassword\r"}
}
interact
使用 empty
的等效 bash
脚本,如下所示:
#!/bin/bash
empty -f -i in -o out telnet 192.168.1.175
empty -w -i out -o in "assword" "lamepassword\n"
之后我需要用户使用 telnet interact
,我不知道该怎么做。我想到的最接近的事情是使用类似 socat - in
的方法将 stdin
和 stdout
与 named pipes
绑定。任何建议都非常受欢迎!
I tried cat out & cat /dev/stdin >in
, it works, but it has an extra
newline, tab completion does not work and ctr+c
terminates cat
and
not the running host process. I am trying to persuade socat
to act
according to those needs.
使用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
.
我需要替换一个非常简单的 expect
脚本,如下所示:
#!/usr/bin/expect
spawn telnet 192.168.1.175
expect {
"assword" {send "lamepassword\r"}
}
interact
使用 empty
的等效 bash
脚本,如下所示:
#!/bin/bash
empty -f -i in -o out telnet 192.168.1.175
empty -w -i out -o in "assword" "lamepassword\n"
之后我需要用户使用 telnet interact
,我不知道该怎么做。我想到的最接近的事情是使用类似 socat - in
的方法将 stdin
和 stdout
与 named pipes
绑定。任何建议都非常受欢迎!
I tried
cat out & cat /dev/stdin >in
, it works, but it has an extra newline, tab completion does not work andctr+c
terminatescat
and not the running host process. I am trying to persuadesocat
to act according to those needs.
使用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
.