使用 Python Telnet 到 CISCO 路由器并将输出存储在本地机器上

问题描述 投票:0回答:2

我是Python新手,我设法使用Python代码远程登录到我的思科路由器。 我可以在屏幕上显示命令,但我想将输出保存在我的 Linux 机器上,与 python 脚本所在的位置相同。

有什么建议吗?

我的目标是在本地存储输出,然后导入 matplotlib 来绘制一些漂亮的带宽使用情况、CPU 使用情况、内存使用情况以及接口使用情况的图表。

python python-2.7 matplotlib cisco telnetlib
2个回答
0
投票

下面的脚本会将您的数据保存到您运行该脚本的服务器上的文件中。文件名将是 routeroutput。只需在下面的代码中输入交换机 IP、密码和启用密码,然后使用 python 从服务器运行它。

它需要一个名为 pexpect 的附加模块。您可以从这里下载并安装它https://pypi.python.org/pypi/pexpect/

import pexpect


try:
switchIP= 'x.x.x.x'
switchPassword = 'your-switch-password'
switchEnable= 'your-enable-password'
commandTorun= 'The command you want to run'


telnet = 'telnet ' + switchIP

#Login to the switch
t=pexpect.spawn(telnet)
t.expect('word:')
t.sendline(switchPassword)
t.expect('#')
t.sendline(switchEnable)
t.expect('>')

#Send the command
t.sendline('commandTorun')
t.expect('>')
data =  t.before 

#Closing the Telnet Connection
t.sendline('exit')
t.expect('>')
t.sendline('exit')
t.expect(pexpect.EOF)

#Opening the file and writing the data to it
f = open('routeroutput', 'w')
f.write(data)
f.close()

except Exception, e:
print "The Script failed to login"
print str(e)

0
投票

对于您想要做的事情,您应该考虑使用 SNMP,而不是尝试处理 telnet I/O。

您将能够提取您所描述的值并将它们放入您选择的数据存储中(文本、mysql 等)

http://www.cisco.com/en/US/docs/ios/12_2/configfun/configuration/guide/fcf014.html

© www.soinside.com 2019 - 2024. All rights reserved.