网站首页 > 技术文章 正文
制造业随着数字化、智能化的推进,企业内将增加大量的网络通信设备,当业务调整,或安全策略要求定期更换设备管理密码,此时就需要对网络设备配置进行批量修改。若企业内未购买专业的网络设备管理平台,该工作会非常的复杂,需管理员逐一登录进行配置,易出错且效率低下。那有没有低成本且高效的方法呢,答案是肯定的,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
猜你喜欢
- 2025-04-08 分享一份mysql一键优化脚本,值得收藏
- 2025-04-08 基于Python+MySql+Flask+Vue的电脑运维管理系统
- 2025-04-08 python常见的网络编程模式: Client/Server编程模式
- 2025-04-08 Python 生成器里面的 return 有什么用?
- 2025-04-08 Python-一些基本概念(python的意义和作用)
- 2025-04-08 使用 Python Flask 创建简易文件上传服务
- 2025-04-08 Python 爬虫入门五之 Cookie 的使用
- 2025-04-08 监控运维大屏展示,炫酷界面,尽在Grafana中
- 2025-04-08 Python运维日志排序(python日志处理)
- 2025-04-08 python快速巡检百台linux系统,并汇总到运维机生成word报告
- 264℃Python短文,Python中的嵌套条件语句(六)
- 263℃python笔记:for循环嵌套。end=""的作用,图形打印
- 261℃PythonNet:实现Python与.Net代码相互调用!
- 256℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 256℃Python实现字符串小写转大写并写入文件
- 116℃原来2025是完美的平方年,一起探索六种平方的算吧
- 96℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 89℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)