脚本Telnet会话与迭代命令

时间:2015-07-10 16:10:30

标签: python powershell scripting telnet

我对PowerShell和python最熟悉,所以使用其中任何一个的解决方案都是理想的。

所以我遇到这样一种情况:带有串口到以太网适配器的旧设备重新启动并从我们的网络上掉下来。我用交叉电缆连接并使用wireshark找到它的IP并最终看到一个arp req(206.250.11.x - 显然不是之前的设置),一个portscan给了我一些选项,一个拉了telnet提示我正在寻找。

我能够连接并尝试使用我们的默认密码 - 在连接后提示输入4位数字的引脚 - 但没有一个工作。

我想编写一个启动会话的python脚本,等待一秒钟,输入第一个引脚:0000看是否显示“连接到主机丢失”。如果没有,则报告它使用的引脚。

我有一个ping作用程序,我写了一段时间后使用subprocess.Popen并认为我可以调整它以启动telnet会话:

telneter = subprocess.Popen([“telnet”,hostname,“9999”],stdout = subprocess.PIPE).stdout.read() 我还看到有一些可以导入的python telnet模块。

如果我有一个名为'pins.txt'的文件,这个文件有0000-9999,每行有一个条目,我怎样才能做到以下几点:

1)启动Telnet到地址/端口2)等到它提示引脚(通常不到一秒)3)输入pins.txt文件的第一行4)检查会话是否结束并打印“连接到主机丢失”5)报告哪个引脚没有失败并且会话保持活动状态?

非常感谢您的帮助!我会更多地研究它,但我们想早点起床再跑,所以我还没有做足够的研究。

编辑:我试图用另一端的25针串口转换器连接,但是用适配器敲了一下,这样就不再是一个选择了。

Edit2:我也尝试过使用telnetlib和Telnetlib.Telnet(主机),但我无法获取数据流,也无法重新启动会话以遍历引脚列表。

1 个答案:

答案 0 :(得分:3)

当人们想要将Python用于应该是交互式的东西时,使用pexpect这类事情是相当常见的。 pexpect基于expect的概念。

它非常类似于你喜欢的popen,除了它可以消除很多粗糙的边缘,并带有实用工具,让生活更轻松。

一般格式是

x = pexpect.spawn("telnet")
x.expect("Connected")
x.sendline("thing")
x.expect("Connection ended")

This example有点类似于你想要的东西,除了它会永远运行。我假设你可以根据自己的经验轻松修改它以做你想做的事。