如何使用empty与telnet交互
Posted
技术标签:
【中文标题】如何使用empty与telnet交互【英文标题】:How to interact with telnet using empty 【发布时间】:2016-12-31 16:55:51 【问题描述】:我需要替换一个非常简单的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
,我不知道该怎么做。我想到的最接近的事情是将stdin
和stdout
与named pipes
绑定使用socat - in
之类的东西。任何建议都非常受欢迎!
【问题讨论】:
我唯一的问题是,你为什么使用 telnet? 因为用户与之交互的主机运行的是telnet。 我试过cat out & cat /dev/stdin >in
,它可以工作,但它有一个额外的换行符,制表符完成不起作用,ctr+c
终止cat
而不是正在运行的主机进程。我试图说服socat
按照这些需求行事。
【参考方案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
会话,因为它确实以守护程序模式启动,因此您可以通过再次执行socat
重新连接到telnet
。要结束telnet
,你可以直接logout
。
【讨论】:
我一直在寻找socat
参数的正确组合,而您建议的组合可以提供我需要的确切行为(制表符完成、命令历史记录、行编辑等)。谢谢你。我刚刚用 escape=0x1a
替换了escape=3
,所以我可以用ctrl+z
退出,并且仍然可以像往常一样终止任何主机进程,ctrl+c
以上是关于如何使用empty与telnet交互的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 windows 自带的 telnet 服务器服务来监听端口?
扫描到telnet弱口令,但是在dos里面telnet登陆,输入用户名,密码直接回车,出现%Password empty怎么回事