伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

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

来源:本站原创 浏览:88次 时间:2022-08-10
运维少年系列 - 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 '[ \033[0;32m success\033[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文件

效果如下(动图)


登录交换机查看结果

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net