百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

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

wptr33 2025-01-01 22:58 31 浏览

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

相关推荐

python数据容器之列表、元组、字符串

数据容器分为5类,分别是:列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)list#字面量[元素1,元素2,元素3,……]...

深入理解 PYTHON 虚拟机:令人拍案叫绝的字节码设计

深入理解PYTHON虚拟机:令人拍案叫绝的字节码设计在本篇文章当中主要给大家介绍cpython虚拟机对于字节码的设计以及在调试过程当中一个比较重要的字段co_lnotab的设计原理!PYT...

Python快速学习第一天!

第一天:Python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言一、运行Python:1、在交互式环境下,直接输入Python进入Python编程环境[root@tanggao/]#...

Java 程序员的第一套Python代码

选择的Web组件是Python里面的Django,这不一定是一个最佳的框架或者最快的框架,当时他应该算是一个最成熟的框架。...

Python 中 必须掌握的 20 个核心函数及其含义,不允许你不会

以下是Python中必须掌握的20个核心函数及其含义...

Python代码:按和值奇偶比对号码进行组合

Python代码:按和值奇偶比对号码进行组合不少朋友在选定号码以后,会按照一定的和值来组号,比如大乐透常见和值有626372737481108116等我们不用固定在一个数上,我们可以给定...

30天学会Python编程:16. Python常用标准库使用教程

16.1collections模块16.1.1高级数据结构16.1.2示例...

Python强大的内置模块collections

1.模块说明collections是Python的一个内置模块,所谓内置模块的意思是指Python内部封装好的模块,无需安装即可直接使用。...

Python自动化办公应用学习笔记31—全局变量和局部变量

一个Python程序中的变量包括两类:全局变量和局部变量。一、全局变量·...

精通Python可视化爬虫:Selenium实战全攻略

在数据驱动的时代,爬虫技术成为获取信息的强大武器。而Python作为编程界的“瑞士军刀”,搭配Selenium库,更是让我们在动态网页抓取领域如鱼得水。本文将带你深入探索PythonSelenium...

Python中的数据类型操作

...

Python教程(二十五):装饰器–函数的高级用法

今天您将学习什么...

玩转Python列表/字典:增删改查与高效遍历技巧

为什么列表和字典是Python的灵魂?你是否遇到过这样的场景?想存储学生成绩,用列表却发现查找某个学生的分数像大海捞针?用字典存储购物车商品,却不知道如何高效批量修改价格?遍历数据时,传统循环写得...

Python列表操作

Python添加列表4分钟阅读在Python操作列表有各种方法。例如–简单地将一个列表的元素附加到...

充分利用Python多进程提高并发

在计算机编程中,我们经常需要同时执行多个任务。然而,传统的单线程方式无法充分利用计算机的多核处理器,导致程序的执行效率低下。Python中的多进程编程技术可以帮助我们解决这个问题,通过同时运行多个进程...