Python网络设备.. 一般查询:
这个方法有效: 我以前为Cisco公司编写设备驱动程序。 我通过Putty登录到他们的设备,使用Telnet连接设备的IP地址,然后进入设备,接着在我的脚本中使用一些命令来获取信息,比如在我的脚本中使用“show version”命令,然后把所有信息读入CSV文件中。
下面问题的解决方案 现在我们有一个新的供应商,叫NORTEL。当我在Putty中使用他们的IP地址时,它会进入一个完全由菜单或键盘驱动的设备。
- 它会要求我按Ctrl-y继续,并列出一些选项,比如“硬件信息”,我需要使用箭头键选择,然后按回车键来获取信息。
我该如何编写脚本来进入这个完全由键盘驱动的Nortel设备呢?比如使用Ctrl-y、Ctrl-x,或者使用箭头键等等。
1 个回答
3
可以使用pexpect这个工具。它是一个专门用来和本地或远程进程互动的Python模块。下面是它官网上的一个例子,展示了如何用它连接到一个需要键盘输入的FTP子进程。
import pexpect
child = pexpect.spawn ('ftp ftp.openbsd.org')
child.expect ('Name .*: ')
child.sendline ('anonymous')
child.expect ('Password:')
child.sendline ('noah@example.com')
child.expect ('ftp> ')
child.sendline ('ls /pub/OpenBSD/')
child.expect ('ftp> ')
print child.before # Print the result of the ls command.
child.interact() # Give control of the child to the user.
你只需要查找一些特殊的控制代码,比如控制键的代码。