运维少年系列 - python and cisco(2)

运维少年系列 - python and cisco(2),第1张

概述运维少年系列-pythonandcisco(2)骚年运维少年运维少年系列-pythonandcisco(2)一、任务概述假设网络有多台可管理的二层交换机,现在需要在每台交换机上创建10个VLAN,在没有CDP的情况下,如何使用python完成?(别忘了python几乎适用于所有支持远程登录的设备)二、实现步骤说明1 运维少年系列 - python and cisco(2)

骚年 运维少年

运维少年系列 - python and cisco(2)一、任务概述

假设网络有多台可管理的二层交换机,现在需要在每台交换机上创建10个VLAN,在没有CDP的情况下,如何使用python完成?(别忘了python几乎适用于所有支持远程登录的设备)

二、实现步骤说明1) 先决条件

首先准备的还是和上篇文章一样,交换机需要开启SSH和配置IP,请将所有设备登录的用户名和密码配置一致。

2) 拓扑图

3) 如何实现多IP

如果网络中有台设备,那么每台设备的IP地址都是不一样的(这是废话),我们如何去逐个登录多台设备然后执行命令呢?

在python中,如果是连续的地址,那么我们可以使用for循环实现逐个登录设备的功能,比如

[root@yunwei cisco]# cat for.py for i in range(1,10):    print '192.168.108.%s' %i[root@yunwei cisco]# [root@yunwei cisco]# python for.py 192.168.108.1192.168.108.2192.168.108.3192.168.108.4192.168.108.5192.168.108.6192.168.108.7192.168.108.8192.168.108.9

但是,如果IP不是连续的怎么办呢?那么在python中我们可以将所有的IP写入一个文件,然后使用for循环去逐行循环该文件,实现登录。如

[root@yunwei cisco]# cat IP.txt 192.168.108.252192.168.108.253[root@yunwei cisco]# [root@yunwei cisco]# cat for.py ip = file('IP.txt','rb')  # 以只读的形式打开文件for i in ip.xreadlines(): # 逐行读取文件中的内容    print i,[root@yunwei cisco]# [root@yunwei cisco]# python for.py 192.168.108.252192.168.108.253[root@yunwei cisco]#
4) 如何实现多命令

如何一次性执行多个文件?我们可以像上次那样使用多次send函数,但很显然,这样效率太低了。我们可以将命令写道一个文件中,使用for循环对文件进行逐行读取,然后执行。如

[root@yunwei cisco]# cat command.txt conf t vlan 10name V10vlan 20name V20vlan 30name V30vlan 40name V40vlan 50name V50vlan 60name V60vlan 70name V70vlan 80name V80vlan 90name V90vlan 100name V100exitint e0/0switchport trunk encapsulation dot1qswitchport mode trunkendshow vlan show int trunk[root@yunwei cisco]# [root@yunwei cisco]# cat for.py cmd = file('command.txt','rb')for i in cmd.xreadlines():    print i,[root@yunwei cisco]# 
最终脚本

这里做个简单的注释,详细注释请参考第一篇文章。

import paramiko # 导入模块import timeuser = 'yunwsn' # 定义登录用户名passwd = '123456' # 定义登录密码s = paramiko.SSHClIEnt() # 实例化s.set_missing_host_key_policy(paramiko.autoAddPolicy())IP = file('IP.txt','rb') # 打开IP文件for ip in IP.xreadlines(): # 循环IP文件    s.connect(ip,username=user,password=passwd,look_for_keys=False,allow_agent=False)      # 登录读取到的IP文件行    print '[ 3[0;32m success3[0m ] login %s ' %ip  # 打印登录成功信息    cmd = s.invoke_shell()     # 交互式sshell    command = file('command.txt','rb') # 因为上面已经登录成功,这里打开命令文件    for command in command.xreadlines(): # 逐行读取命令        cmd.send(command)  # 执行命令        time.sleep(0.1)        output = cmd.recv(65535) # 每执行一个命令就打印一次        print output    cmd.close() # 一个IP命令执行完毕,关闭交互式shell,循环下一个ipIP.close() # 全部Ip执行完成,则关闭IP文件

效果如下(动图)


登录交换机查看结果

总结

以上是内存溢出为你收集整理的运维少年系列 - python and cisco(2)全部内容,希望文章能够帮你解决运维少年系列 - python and cisco(2)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1188818.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存