程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

python网络运维,批量修改交换机配置

hfteth 2025-04-08 14:26:46 技术文章 5 ℃

制造业随着数字化、智能化的推进,企业内将增加大量的网络通信设备,当业务调整,或安全策略要求定期更换设备管理密码,此时就需要对网络设备配置进行批量修改。若企业内未购买专业的网络设备管理平台,该工作会非常的复杂,需管理员逐一登录进行配置,易出错且效率低下。那有没有低成本且高效的方法呢,答案是肯定的,Python。

测试设备:H3C、HuaWei交换机,已开启Telnet登录。
环境要求:一台具备python3执行环境,且已安装netmiko组件。
脚本代码如下,已托管至github ,
https://github.com/hzh1019/SwitchAutoBackup:


1:python脚本:switch_command.py

from netmiko import ConnectHandler
from netmiko.ssh_exception import  NetMikoAuthenticationException, NetMikoTimeoutException
import threading
import datetime
import queue
import re, os

def conn_info(ip):
    dev = {
        'device_type': 'huawei_telnet', #指定设备类型,该类型适用于h3c,huawei设备,telnet方式
        'host': ip,
        'username':'admin', #设备管理员用户
        'password': 'TJuOO8Uz', #管理员用户密码
    }
    return dev
 
def conn_dev(dev_q):
    while not dev_q.empty(): 
        dev_ip = dev_q.get()
        try:
            dev_conn = ConnectHandler(**conn_info(dev_ip))
            print("[%s] Connected." % dev_ip)
 
            dev_conn.send_config_from_file('cmds.txt') 
 
            dev_conn.disconnect()
            print('[%s] done.\n' % dev_ip )
 
        except NetMikoAuthenticationException:
            print("[%s] Error! Please check username or password ..." % dev_ip)
        except NetMikoTimeoutException:
            print("[%s] Error! Connect time out ..." % dev_ip)
        except Exception as e:
            print('[%s] Error:%s' % (dev_ip, e))
 

if __name__ == "__main__":    
    devs_ip = ['192.168.12.34','192.168.12.35','192.168.13.19'] #需进行配置的交换机ip地址列表
    
    devs_q = queue.Queue()
    for dev in devs_ip:
        devs_q.put(dev)
 
    max_conn = 15 # 同时操作交换机数量(可增加或减少)
    
    ts = []  # 线程集合
    for i in range(max_conn):
        t = threading.Thread(target=conn_dev, args=(devs_q,))
        t.start()
        ts.append(t)
    for t in ts:
        t.join()
 
    print("Done.")


2:待批量执行命令:cmds.txt

sys
ssh server enable
local-user admin
password simple boE6Wzjv
local-user it
password simple FD39@fs..2!
authorization-attribute user-role level-1
service-type ssh
clock timezone UTC add 8
ntp-service unicast-server 192.168.12.10
save f


使用方法
1:将switch_command.py与cmds存放在同一目录内。
2:编辑switch_command.py,填入你本地交换机对应信息。需修改的项已在上面代码内注释。
3:编辑cmds.txt,填入需执行的命令。
4:运行 python3 switch_command.py


该脚本调用netmiko组件,亦可支持cisco、dell、dlink等主流网络设备以及ssh登录方式,详细使用方法请见该组件仓库或留言咨询。
https://github.com/ktbyers/netmiko

Tags:

最近发表
标签列表