您当前的位置:首页 > 电脑百科 > 网络技术 > 网络技术

看我怎么通过Python脚本给100台网络设备一键化下发相同的配置

时间:2020-05-07 10:01:33  来源:  作者:

提出需求

现在有这样的需求:全网的监控骨干设备及VPN骨干设备都要新增SSH配置(开通SSH登录),涉及到的网络设备上百台,若一台台登录到设备上去配置,想想工作量都巨大。那么Python的应用来啦。只需要简单的100来行代码,就可以自动下发相应配置到设备上。

会点Python编程的网络工程师,工作效率嗖嗖嗖的提升!

需要应用到的Python模块:

  • 1、telnetlib 远程telnet到网络设备(socket连上后想干嘛干嘛)
  • 2、time、datetime模块(需要表述时间),time模块的sleep()常常被用到,休眠、停顿的意思。
  • 3、multiproccessing 多进程,使用多进程可以节省时间(多进程占用更多的CPU,区别于多线程-threading模块)
  • 4、pyMySQL模块,用它来连接数据库,操作数据库。

直接上脚本:(Python2编写,linux环境下实测运行正常)

# -*- coding: UTF-8 -*-

#! /usr/bin/python2.7

import telnetlib

import datetime

import time

from time import sleep

from multiprocessing import Process

import pymysql.cursors

def GO(H, ip,device_type_id):

    username = 'username'

    password = 'password'

    if device_type_id == 20:

        tn = telnetlib.Telnet(ip)

        tn.read_until('login:', timeout=3)

        tn.write(username + 'n')

        tn.read_until('Password:', timeout=3)

        tn.write(password + 'n')

        time.sleep(4)

        tn.write('su' + 'n')

        tn.read_until('Password:', timeout=3)

        tn.write('hzcnc_enable' + 'n')

        time.sleep(3)

        tn.read_until('>', timeout=3)

        tn.write('sys n ssh server enable n ssh server acl 2001n quitn  ')

        time.sleep(2)

        tn.close()

        print "H3C-%s is OK! Now time is %s" % (H, datetime.date.today())

    #interface_config.close()

    if device_type_id == 21 or device_type_id == 22 or device_type_id == 24 or device_type_id == 19:

        tn = telnetlib.Telnet(ip)

        tn.read_until('Username:', timeout=3)

        tn.write(username + 'n')

        tn.read_until('Password:', timeout=3)

        tn.write(password + 'n')

        time.sleep(4)

        tn.write('su' + 'n')

        tn.read_until('Password:', timeout=3)

        tn.write('hzcnc_enable' + 'n')

        time.sleep(3)

        tn.read_until('>', timeout=3)

        tn.write('sys n ssh server enable n ssh server acl 2001n quitn  ')

        time.sleep(2)

        tn.close()

        print "H3C-%s is OK! Now time is %s" % (H, datetime.date.today())

    if device_type_id == 23 or device_type_id == 16:

        tn = telnetlib.Telnet(ip)

        tn.read_until('login:', timeout=3)

        tn.write(username + 'n')

        tn.read_until('Password:', timeout=3)

        tn.write(password + 'n')

        time.sleep(3)

        tn.write('su' + 'n')

        tn.read_until('Password:', timeout=3)

        tn.write('hzcnc_enable' + 'n')

        time.sleep(3)

        tn.read_until('>', timeout=3)

        tn.write('sys n ssh server enable n ssh server acl 2001n quitn  ')

        time.sleep(2)

        tn.close()

        print "H3C-%s is OK! Now time is %s" % (H, datetime.date.today())

if __name__ == '__main__':

    connection = pymysql.connect(host='localhost',

                                 user='username',

                                 password='passwd',

                                 db='db_name',

                                 charset='utf8mb4',

                                 cursorclass=pymysql.cursors.DictCursor)

    try:

        with connection.cursor() as cursor:

            sql = "SELECT name, manage_ip, device_type_id FROM devices WHERE device_role_id=6"

            # sql = "SELECT name, manage_ip, device_type_id FROM dcim_device WHERE manage_ip ='device_ip'"

            cursor.execute(sql)

            result = cursor.fetchall()

    finally:

        connection.close()

    for x in result:

        p = Process(target=GO, args=(str(x['name']),str(x['manage_ip']),int(x['device_type_id']),))

        p.start()

        sleep(2)

配置结果:

看我怎么通过Python脚本给100台网络设备一键化下发相同的配置

完美配置完毕

【笔者为网络工程师,懂点Python编程基础,习惯用自动化编程的思维去编程相关运维脚本,工作多年,希望把自己的经验分享给大家,觉得有用的,可以关注、点赞、转发,如有相同或者不同观点,欢迎评论,谢谢!】



Tags:Python脚本   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
扼要:1、学会搭建monkeyrunner开发环境;2、学会使用monkeyrunner+python进行编写脚本;monkeyrunner是Android SDK自带的一个黑盒自动化测试工具。其支持java、python两种语言。...【详细内容】
2021-04-06  Tags: Python脚本  点击:(225)  评论:(0)  加入收藏
自从新个税计税后,每个月发工资你是否真的清楚如何扣税的?今天跟大家分享下如何计算,希望大家喜欢。计税方法科普 这里需要知道两个计算的点: 个税起征点调到 5000; 累积预扣法:税...【详细内容】
2020-08-10  Tags: Python脚本  点击:(67)  评论:(0)  加入收藏
如果有人告诉您可以使用150-200行代码创建交互式Web应用程序,该怎么办? 有趣的权利。 Streamlit为您提供了使用简单的python脚本和一些streamlit调用来创建漂亮的Web应用程序...【详细内容】
2020-06-16  Tags: Python脚本  点击:(622)  评论:(0)  加入收藏
提出需求现在有这样的需求:全网的监控骨干设备及VPN骨干设备都要新增SSH配置(开通SSH登录),涉及到的网络设备上百台,若一台台登录到设备上去配置,想想工作量都巨大。那么Python的...【详细内容】
2020-05-07  Tags: Python脚本  点击:(60)  评论:(0)  加入收藏
B站在小视频功能处提供了 API 接口,今天的任务爬取Bilibili视频~B 站视频网址:https://vc.bilibili.com/p/eden/rank#/?tab=全部 此次爬取视频,我们爬取前100个~我们做好前期...【详细内容】
2019-11-27  Tags: Python脚本  点击:(71)  评论:(0)  加入收藏
前言群里看到有人询问:谁会用python将微信音频文件后缀m4a格式转成mp3格式,毫不犹豫回了句:我会。然后就私下聊起来了解决方法介绍如下:工具:windows系统,python2.7,转换库ffmpeg...【详细内容】
2019-10-08  Tags: Python脚本  点击:(143)  评论:(0)  加入收藏
▌简易百科推荐
写一个shell获取本机ip地址、网关地址以及dns信息。经常会遇到取本机ip、网关、dns地址,windows一个命令ipconfig /all全部获取到,但linux系统却并非如此。linux系统都自带ifc...【详细内容】
2021-12-27  K佬食古    Tags:shell   点击:(2)  评论:(0)  加入收藏
步骤1、配置 /etc/sysconfig/network-scripts/ifcfg-eth0 里的文件。it动力的CentOS下的ifcfg-eth0的配置详情:[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifc...【详细内容】
2021-12-24  忆梦如风    Tags:网卡   点击:(10)  评论:(0)  加入收藏
1、查找当前目录下所有以.tar结尾的文件然后移动到指定目录find . -name “*.tar” -execmv {}./backup/ ;注解:find –name 主要用于查找某个文件名字,-exec 、xargs可...【详细内容】
2021-12-17  郭主任    Tags:运维   点击:(20)  评论:(0)  加入收藏
对于经常上网的朋友来说,除了手机购物上网,pc端玩网页游戏还是很多小伙伴首选的,但是有时候明明宽带链接上了,打开浏览器却出现上不了网的现象,下面小编要来跟大家说说电脑有网络...【详细内容】
2021-12-16  小白系统    Tags:网页无法打开   点击:(28)  评论:(0)  加入收藏
在访问像github、gitlab这样的外国网站时,很有可能会出现页面加载不出来或找不到页面的错误。这时候有的朋友就会以为是网络的问题,于是把Wifi断掉连上自己手机的热点,结果却还...【详细内容】
2021-12-15  启施技术IT狼叔    Tags:外网   点击:(16)  评论:(0)  加入收藏
网络地址来源:获取公网IP地址 https://ipip.yy.com/get_ip_info.phphttp://pv.sohu.com/cityjson?ie=utf-8http://www.ip168.com/json.do?view=myipaddress...【详细内容】
2021-12-15  韦廷华12    Tags:外网ip   点击:(15)  评论:(0)  加入收藏
准备好软件IPOP、用ENSP模拟一下华为交换机 启动交换机 <Huawei>sysEnter system view, return user view with Ctrl+Z.[Huawei]sysname FTPClient[FTPClient]interface vla...【详细内容】
2021-12-15  思源Edward    Tags:交换机   点击:(24)  评论:(0)  加入收藏
我们经常用到netstat命令查看主机连接状况,包括连接ip、端口、状态等,今天就练习下shell分析netsat结果。描述假设netstat命令运行的结果我们存储在nowcoder.txt里,格式如下:Pro...【详细内容】
2021-12-14  K佬食古    Tags:netstat   点击:(19)  评论:(0)  加入收藏
什么是滑动窗口?窗口是操作系统开辟的一块缓存空间,发送方在收到接收方ACK应答之前,必须在缓冲区保留已发送的数据,如果按期收到确认应答,数据就可以从缓冲区移除。什么是滑动窗...【详细内容】
2021-12-14  DifferentJava    Tags:TCP   点击:(30)  评论:(0)  加入收藏
概述日常管理华为路由设备过程中,难为会忘记设备登录密码,那么该如何重置设备登录密码吗?本期文章将全面向各位小伙伴总结分享。重置华为设备登录密码思路先行 采用console登录...【详细内容】
2021-12-10  onme0    Tags:   点击:(27)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条