2015-07-10 53 views
1

我最熟悉PowerShell和Python,所以使用其中任何一个的解决方案都是理想的。使用迭代命令的脚本Telnet会话

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

我能够连接并尝试我们的默认密码 - 连接后它会提示输入4位数的引脚 - 但没有任何工作。

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

我有一个爆震程序一段时间我回了信,其使用subprocess.Popen并认为我可以适应它与启动telnet会话:

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

如果我有一个叫做“pins.txt”文件,该文件是每行0000-9999一个条目的文件,我如何才能最好地做到以下几点:

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

非常感谢您的帮助!我会更加努力地工作,但是这是我们希望尽快起床并运行的事情,因为我还没有做足够的研究。

编辑:我试图在另一端连接一个25针串口转换器,但与适配器断开,因此不再是一个选项。

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

回答

3

当人们想要将Python用于应该交互的东西时,使用pexpect来处理这种事情是相当普遍的。 pexpect基于expect的概念。

这和popen非常相似,就像你习惯的那样,只是它消除了很多粗糙的边缘,并附带了实用程序,使生活变得更加简单。

一般格式为

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

This example有点类似于你想要,只是它会永远跑什么。我假设你可以根据你的经验轻松修改它以做你想做的事。