用paramiko ssh连接H3C交换机

最近在交付一个项目,项目结束后需要checklist网络设备的配置。需要在很多设备上执行相同的命令,想起用paramiko连接交换机批量执行,拷了前面用于连接华为交换机的代码发现报认证失败,把代码改成transport方式连接后正常。临时用的代码,很糙将就一下。
h3c_check.py 主文件,使用方法,先安装paramiko,把交换机管理IP分类写到conf.py文件,执行python h3c_check.py '交换机命令' 'conf.py里定义的交换机组名'
如: python h3c_check.py 'display bgp peer ipv4' 'asw'

#-*- coding: utf-8 -*-
#!/usr/bin/python 
import paramiko
import time
import os
import sys
from conf import *
cmd=sys.argv[1]
swtype=sys.argv[2]
#定义连接与操作
def ssh2(ip,user,pas,cmd):
        transport = paramiko.Transport((ip, 22))
        transport.connect(username=user, password=pas)
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh._transport = transport
        stdin, stdout, stderr = ssh.exec_command(cmd)
        result = stdout.read()
        print(result.decode(encoding="utf-8"))
        time.sleep(float(1))
        transport.close()
#判断要在哪个类型交换机上执行命令
def swtypes(swtype):
        if swtype=='asw' :
            swips = aswip
        elif  swtype=='dsw' :
            swips = dswip
        elif  swtype=='lsw' :
            swips = lswip
        elif  swtype=='isw' :
            swips = iswip
        elif  swtype=='cdlisw':
            swips = cdliswip
        elif  swtype=='omr' :
            swips = omrip
        elif  swtype=='csw' : 
            swips = cswip
        elif  swtype=='alsw' :
            swips = alswip
        elif  swtype=='oasw' :
            swips = oaswip
        else :
            print "The swtypes error,input correct swtyps!"
            exit()

        for key in swips :
            ip=swips[key]
            ssh2(ip,user,pas,cmd)


if __name__=='__main__':
        print "Begin......"
        swtypes(swtype)


conf.py,把交换机分组执行的时候加变量选要操作的组。组名对应上面IF语句。格式如下,涉及隐私删除了很多,只保留几台。注意IP对就可以。

#-*- coding: utf-8 -*-
#!/usr/bin/python

#定义交换机的用户名密码
user='admin'
pas='*********'

#定义要执行操作的交换机的组,注意IP要可连接
aswip={
        'ASW-201-75.XX190' : '10.73.0.1',
      
        };
cdliswip={
        'CSW-VM-VPC-G1-1.XX190' : '10.73.0.21',
 
        };
dswip={
        'DSW-VM-G1-P-1.XX190' : '10.73.0.5',

        };
cswip={
        'CSW-VM-VPC-G1-1.XX190' : '10.73.0.21',
    
        };
iswip={
        'ISW-VM-G1-1.XX190' : '10.73.0.23',
        
        };
lswip={
        'LSW-VM-G1-1.XX190' : '10.73.0.7',
      
        };
omrip={
        'OMR-VM-G1-1.XX190' : '10.73.5.248',
       
        };
oaswip={
        'OSW-VM-S-1.XX190' : '10.73.3.50',

        };
alswip={
        'ASW-201-75.XX190' : '10.73.0.1',
    
        };


你可能感兴趣的:(用paramiko ssh连接H3C交换机)