美文网首页
对python连接华为交换机批量配置优化

对python连接华为交换机批量配置优化

作者: wsf535 | 来源:发表于2018-03-15 11:58 被阅读445次

    前天写了用paramiko多线程SSH登陆华为交换机处理简单的命令,后面看了有很多问题。比如用户名密码及配置命令是写死在主文件中。要改起来比较麻烦,可扩展性不好。今天做了优化,让它适用在配置过SSH登陆的同用户名密码同类交换机做批量配置。(在华为交换机测试过运行正常)
    目录结构如下:只需要改动前两个配置文件

    [root@10-57-22-238 sshsw]# ll
    total 12
    -rw-r--r-- 1 root root  79 Mar 14 23:53 cmd.txt
    -rw-r--r-- 1 root root 274 Mar 14 23:32 conf.py
    -rw-r--r-- 1 root root 933 Mar 14 23:51 ssh_sw_cmd.py
    

    cmd.txt用来存放要配置到交换机的命令,内容如下(以下内容为配置NTP)。

    sys
    ntp unicast-peer 192.168.6.100 version 4 source-interface LoopBack0
    commit
    

    conf.py 保存交换机的管理IP,及登陆交换机的用户名密码

    #-*- coding: utf-8 -*-
    #!/usr/bin/python
    #要执行操作的交换机管理
    swip={
    'testare4' : '172.16.200.6',
    'testare1' : '10.57.1.22',
    };
    
    #交换机SSH用户名密码    
    username = "wsf535"  #用户名
    passwd = "****"    #密码
    threads = [10]   #多线程
    

    ss_sw_cmd.py为主运行文件

    #-*- coding: utf-8 -*-
    #!/usr/bin/python 
    import paramiko
    import threading
    import time
    import os
    from conf import *
    
    #拿到cmd.txt文件中的命令
    with open('./cmd.txt', 'r') as f:
        cmd_line= f.readlines()
    cmd=[]
    for c in cmd_line:
         cmd.append(c)
    #定义连接与操作
    def ssh2(ip,username,passwd,cmd):
        try:
            ssh = paramiko.SSHClient()
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            ssh.connect(ip,22,username,passwd,timeout=5)
            ssh_shell = ssh.invoke_shell()
            for m in cmd:
                res = ssh_shell.sendall(m)
                time.sleep(float(1))
            print ssh_shell.recv(1024)
            ssh.close()
        except :
            print '%s\tError\n'%(ip)
    
    if __name__=='__main__':
        print "Begin......"
        for key in swip:
            ip = swip[key]
            a=threading.Thread(target=ssh2,args=(ip,username,passwd,cmd))
            a.start() 
    

    相关文章

      网友评论

          本文标题:对python连接华为交换机批量配置优化

          本文链接:https://www.haomeiwen.com/subject/ztthqftx.html