【问题标题】:Script Telnet session with iterative command使用迭代命令编写 Telnet 会话脚本
【发布时间】:2015-09-29 11:36:25
【问题描述】:

我最熟悉 powershell 和 python,因此使用它们中的任何一个的解决方案都是理想的。

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

我能够连接并尝试了我们的默认密码 - 连接后提示输入 4 位密码 - 但没有任何效果。

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

我有一个使用 subprocess.Popen 编写的 ping 程序,我认为我可以调整它以启动 telnet 会话:

telneter = subprocess.Popen(["telnet", 主机名, "9999"], stdout=subprocess.PIPE).stdout.read() 我还看到有某种可以导入的 python telnet 模块。

如果我有一个名为“pins.txt”的文件,该文件包含 0000-9999,每行一个条目,我该如何最好地执行以下操作:

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

非常感谢您的帮助!我会做更多的工作,但我们希望尽快启动并运行它,所以我还没有做足够的研究。

编辑:我试图连接另一侧的 25 针串行转换器,但被适配器拔出,因此不再是一个选项。

Edit2:我也尝试过将 telnetlib 与 telnetlib.Telnet(host) 一起使用,但我无法取回数据流,也无法重新启动会话以遍历 pin 列表。

【问题讨论】:

    标签: python powershell scripting telnet


    【解决方案1】:

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

    它与您习惯的 popen 非常相似,只是它可以消除许多粗糙的边缘并附带实用程序,让生活更轻松。

    一般格式是

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

    This example 与您想要的有点相似,只是它将永远运行。我假设您可以根据自己的经验轻松修改它以执行您想要的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-17
      • 2019-11-06
      • 2019-10-05
      • 2013-08-22
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 2015-01-24
      相关资源
      最近更新 更多