999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Python在交換機自動化運維中的應用

2024-04-14 15:00:13王小霞李騰楊啟超肖凝游閩王凱睿
現代信息科技 2024年1期

王小霞 李騰 楊啟超 肖凝 游閩 王凱睿

DOI:10.19850/j.cnki.2096-4706.2024.01.028

收稿日期:2023-05-16

摘? 要:交換機自動化運維是日常工程生產中的一個普遍問題,文章針對電力公司中廣泛使用的華三交換機(S5500),將信息運維人員日常工作中有關交換機的大量重復性操作指令編寫成Python腳本,解決了多臺交換機同時操作時的耗時費力問題,具體來說就是多臺交換機的賬號密碼不一致,管理復雜度高;交換機內部不同策略的指令復雜度不一致,對運維人員要求高等問題。交換機自動化運維切實提高了信息運維人員的工作效率和操作結果的準確性。

關鍵詞:Python;自動化運維;交換機;Netmiko

中圖分類號:TP311.1;TP391? 文獻標識碼:A? 文章編號:2096-4706(2024)01-0134-04

Application of Python in Automatic Operation and Maintenance of Switch

WANG Xiaoxia, LI Teng, YANG Qichao, XIAO Ning, YOU Min, WANG Kairui

(State Grid Nanchang Power Supply Company, Nanchang? 330069, China)

Abstract: Automatic operation and maintenance of switches is a common problem in daily engineering production. This paper focuses on the widely used Huasan switch (S5500) in power companies, and compiles a large number of repetitive operation instructions related to switches in the daily work of information operation and maintenance personnel into Python scripts, solving the time-consuming and labor-intensive problem of multiple switches operating simultaneously. Specifically, the account passwords of multiple switches are inconsistent and the management complexity is high; the instruction complexity of different strategies within the switch is inconsistent, which poses high requirements for operation and maintenance personnel. Automatic operation and maintenance of switches has effectively improved the work efficiency and accuracy of operation results of information operation and maintenance personnel.

Keywords: Python; automatic operation and maintenance; switch; Netmiko

0? 引? 言

隨著互聯網的蓬勃發展和IT新技術的不斷涌現,人們的生產生活方式逐漸趨于便捷化[1]。在傳統國網信息運維過程中,交換機的維護往往占用工作人員大量的時間[2]。因此,僅僅依靠手工操作管理公司網絡設備的做法已經遠遠不能滿足信息運維人員的日常運維需求。

交換機配置的自動化勢在必行。主要體現在以下幾個方面:1)多線程執行交換機腳本。2)多臺交換機賬號密碼的批量修改。3)交換機內部組策略的批量制定和執行等。這些操作基本上是運維人員每天都要做的重復性工作,采用網絡自動化配置替代傳統的手工配置,其效率更高,成本更低[3]。

本文以公司廣泛使用的華三交換機(S5500)為例,將信息運維人員日常運維工作中有關交換機的大量重復性操作指令編寫成Python腳本,實現批量交換機的自動化操作,有效提高信息運維人員的工作效率和操作結果的準確性。

1? 問題及對策

問題一:多臺交換機同時操作時耗時費力,人工多開進程繁雜易亂。

問題描述:在傳統的日常網絡維護工作中,信息運維人員需要手動配置n臺交換機,首先登錄SecureCRT,輸入交換機的管理地址,選擇通過遠程登錄服務的標準協議SSH進行登錄(此過程大約耗時10~15秒);然后在登錄界面中輸入交換機的用戶名和密碼,運行配置命令,保存配置后退出交換機(此過程大約耗時3~5分鐘);接下來對下一臺交換機執行類似操作。

解決對策:利用Python中第三方庫Gevent實現不同交換機多線程并發處理。該函數的優點就是便于切換控制流,簡化編程模型。針對不同的交換機,只需導入交換機的IP地址表,一鍵執行腳本文件并發處理,大大提升了工作效率。

問題二:多臺交換機的賬號密碼不一致,管理復雜度高。

問題描述:在傳統的日常網絡維護工作中,不同交換機的賬號密碼往往由多名信息運維人員創建和修改,而不同運維人員更換密碼的時間不同,容易導致多臺交換機存在同一時間密碼不一致的問題,這樣會給后續運維人員帶來不必要的麻煩。

解決對策:利用Python中第三方庫Netmiko實現同一時間批量修改不同交換機的賬號密碼。該函數的優點就是便于在交換機上批量處理指令[4]。針對不同的交換機,只需導入交換機的IP地址表,指定一名專員定期執行腳本文件,從而減少其他運維人員的工作量。

問題三:交換機內部不同策略的指令復雜度不一致,對運維人員要求高。

問題描述:在傳統的日常網絡維護工作中,需要對多個交換機的某一端口進行關閉,以及對不同信息運維人員的終端IP進行管理[5]。這些配置的復雜度不一,給運維人員的工作帶來困擾。

解決對策:利用Python中第三方庫Netmiko實現批量修改配置交換機策略。該函數的優點就是便于在交換機上批量處理指令。針對不同策略的配置寫成不同函數,只需導入IP端口對應表或ACL用戶權限表等即可實現批量處理指令。模塊化的設計理念,使得后續功能可隨意擴展,提升了代碼的適用性。

2? 典型做法

2.1? 框架結構

本文針對公司大量網絡設備需要重復性配置的情況,基于Python開源庫Gevent、Netmiko設計如圖1所示的自動化操作流程。該自動化操作流程通過Python編程方式實現對人工登錄網絡設備配置參數的計算機模擬[6],實現自動化的參數配置。

如圖1所示,該自動化操作過程分為六個階段:1)讀取txt數據文件解析生成模板,主要借助Python內置函數open讀取IP列表文件,作為腳本進行輸入。2)實現交換機多線程并發處理,主要借助Python中第三方庫Gevent多線程執行配置命令。3)建立Python與交換機的連接,主要借助Python中第三方庫Netmiko實現后臺操作交換機。4)實現批量同步修改登錄密碼。5)實現封端口、綁定IP-MAC等批量修改交換機策略配置。6)保存配置同時備份配置日志,便于日后維護和審計溯源。

整體代碼結構如圖2所示,包含read_device_txt()、Login_Multithread()、change_ Password()、strategy_Banport()、backup_Config()等函數。

2.2? 編碼思路

編寫函數read_device_txt(),讀取ip_lists.txt文件中交換機的管理IP、用戶名和密碼,利用Python中set集合生成形如(IP、username、password)格式的三元組數據,以便后續多線程讀取數據,優化輸入。

簡單的代碼示例如下:

defread_device_txt():

# 讀取iplist.txt 里面的ip地址

ipread = open('iplist.txt', 'r', encoding='ascii')

ip_addr = ipread.readlines()

ipread.close()

iplist = []

for tmp in ip_addr:

tmp = tmp.replace("\n", "")

ip = tmp.split("")[0]

username = tmp.split("")[1]

password = tmp.split("")[2]

iptup = (ip, username, password)

iplist.append(iptup)

return iplist

利用Python中ThreadPoolExecutor模塊實現多線程并發,每個線程后臺開啟一個交換機,可同時開啟n(n≥2)個交換機進行處理,這樣可節約大量時間:

defmain():

starting_time = time()

ip_list = read_device_txt()

#? 異步線程ThreadPoolExecutor

with ThreadPoolExecutor(max_workers=20) as executor:

result = executor.map(run_gevent, ip_list)

print('\n---- End get config threading, elapsed time=', time() - starting_time)

利用Python中第三方庫Netmiko的ConnectHandler()模塊,實現基于SSH遠程控制Python與交換機的連接,編寫函數run_gevent(),實現交換機多線程并行處理數據:

defrun_gevent(ipaddr):

issue_device = []

ip = ipaddr[0]

username = ipaddr[1]

password = ipaddr[2]

try:

S5130 = {

'device_type': 'hp_comware',

'ip': ip,

'username': username,

'password': password

}

net_connect = ConnectHandler(**S5130)

sucessloginip = ip

print('sucess: '+ sucessloginip)

except (AuthenticationException):

issue_message = (ipaddr +': 認證錯誤 ')

issue_device.append(issue_message)

except NetMikoTimeoutException:

issue_message = (ipaddr +': 網絡不可達 ')

issue_device.append(issue_message)

except (SSHException):

issue_message = (ipaddr +': SSH端口異常 ')

issue_device.append(issue_message)

exceptExceptionas unknown_error:

issue_message = (ipaddr +': 發生未知錯誤: ')

issue_device.append(issue_message + str(unknown_error))

編寫函數changePassword (),實現批量修改交換機登錄密碼,該操作僅需一名運維人員定期執行腳本即可實現全網交換機密碼同步,大大節約了人工成本:

defchangePassword(ip, username, password):

S5130 = {

'device_type': 'hp_comware',

'ip': ip,

'username': username,

'password': password

}

net_connect = ConnectHandler(**S5130)

cmd = ['undo password-control enable']? # 取消密碼策略

cmd_result1 = net_connect.send_config_set(cmd)

cmd2 = ['local-user ngwl', 'display this', 'password simple xxxxxx']

cmd_result2 = net_connect.send_config_set(cmd2)

cmd_result3 = net_connect.save_config()? # 保存配置

net_connect.disconnect()

return ip

編寫函數strategy_Banport(),通過設置高危端口的ACL策略,實現批量封閉高危端口,保障網絡安全:

defstrategy_Banport(ip, username, password):

S5130 = {

'device_type': 'hp_comware',

'ip': ip,

'username': username,

'password': password

}

net_connect = ConnectHandler(**S5130)

cmd = ['acl number 3008',

'rule 1 deny tcp source-port eq 445',

'rule 2 deny tcp destination-port eq 445',

'rule 3 deny udp destination-port eq 445',

'rule 4 deny udp source-port eq 445',

'rule 5 deny tcp source-port eq 135',

'rule 6 deny tcp destination-port eq 135',

'rule 7 deny udp source-port eq 135',

'rule 8 deny udp destination-port eq 135',

'rule 9 deny udp destination-port eq 137',

'rule 10 deny udp source-port eq 137',

'rule 11 deny udp destination-port eq 138',

'rule 12 deny udp source-port eq 138',

'rule 13 deny udp destination-port eq 139',

'rule 14 deny udp source-port eq 139',

]? # 高危端口封禁

cmd_result1 = net_connect.send_config_set(cmd)

cmd2 = ['traffic classifier banPort operator and','if-match acl 3008']

cmd_result2 = net_connect.send_config_set(cmd2)

cmd3 = ['traffic behavior banPort','deny']

cmd_result3 = net_connect.send_config_set(cmd3)

cmd4 = ['traffic policy banPort','classifier banPort behavior banPort']

cmd_result4 = net_connect.send_config_set(cmd4)

cmd5 = ['qos apply policy banPort inbound','qos apply policy banPort outbound']

cmd_result5 = net_connect.send_config_set(cmd5)

cmd_result = net_connect.save_config()? # 保存配置

net_connect.disconnect()

return ip

最后,利用Netmiko庫的save_config()方法后臺保存修改過的交換機配置,同時使用backupConfig()函數進行數據備份,便于日后維護和審計溯源:

defbackupConfig(ip, username, password):

S5130 = {

'device_type': 'hp_comware',

'ip': ip,

'username': username,

'password': password

}

net_connect = ConnectHandler(**S5130)

commands = ['display current-configuration']? # dis cu

for cmd in commands:

cmd_result = net_connect.send_config_set(cmd)

timestr = time.strftime('%Y-%m-%d', time.localtime(time.time()))

filename =u'%s_%s_%s.txt'% (ip, cmd.replace(' ', '_'), timestr)

configsw = open(filename, 'w', encoding='ascii')

configsw.write(cmd_result)

print('命令執行完畢,結果保存于當前目錄%s中!\n'+ filename)

cmd_result3 = net_connect.save_config()? # 保存配置

net_connect.disconnect()

return ip

3? 效率分析

本文使用200臺H3C(S5500)交換機進行對比,在將傳統方法與本文提出的使用Python腳本對交換機進行相同操作時,比較二者所需時間的不同[7],詳情如表1所示。由表1可知,使用Python腳本進行交換機運維時,所需的時間成本和人力成本遠遠低于傳統方法。

4? 結? 論

本文利用IT領域炙手可熱的Python編程語言實現了多臺交換機配置的自動化處理,符合當今由繁入簡的生活趨勢,順應AI引領生活的時代潮流。本文將繁雜的操作編寫成Python腳本,僅需一名運維人員定期批量同步修改登錄密碼,實現了不同交換機的并發處理、批量一鍵執行不同交換機策略等功能。多臺交換機的自動化操作,減少了運維人員的工作量和時間成本,且功能模塊可擴展,操作日志可備份留存,便于后續二次開發和故障溯源。

參考文獻:

[1] 葉磊,文濤,劉立亮,等.基于python的網絡及信息系統安全過程管理工具 [J].數字技術與應用,2017(10):187-188.

[2] BOUNPASONG P.基于Python的網絡系統自動化配置方案研究 [D].蘭州:蘭州交通大學,2020.

[3] 魏小梅,傅林,苗晶晶.一種基于命令的網絡設備自動化運維工具 [J].科學技術創新,2021(32):96-98.

[4] 李朝陽,周波,張小鋒,等.一種基于Netmiko的網絡設備自動化運維方法研究 [J].通信技術,2021,54(3):773-778.

[5] 劉祥.網絡設備自動化巡檢運維的實現與應用研究 [J].信息系統工程,2019(6):92.

[6] 鎖泉凝.基于Python的園區網絡自動化運維 [J].長江信息通信,2021,34(6):74-75+78.

[7] 楊迎,李慧穎.Python在網絡運維中的應用 [J].現代信息科技,2020,4(4);122-124.

作者簡介:王小霞(1994—),女,漢族,江西南昌人,助理工程師,碩士,研究方向:信息安全;李騰(1992—),女,漢族,江西南昌人,工程師,碩士,研究方向:計算機網絡;楊啟超(1989—),男,漢族,江西南昌人,高級工程師,碩士,研究方向:計算機網絡;肖凝(1997—),女,漢族,江西南昌人,助理工程師,碩士,研究方向:計算機網絡;游閩(1984—),女,漢族,江西南昌人,高級工程師,碩士,研究方向:計算機網絡;王凱睿(1975—),女,漢族,江西南昌人,高級工程師,碩士,研究方向:計算機網絡。

主站蜘蛛池模板: 九九九精品成人免费视频7| 少妇被粗大的猛烈进出免费视频| 99精品免费在线| 亚洲精品无码不卡在线播放| 99久久精品视香蕉蕉| 久久永久精品免费视频| 一本综合久久| 天堂va亚洲va欧美va国产| www.99在线观看| 国产福利拍拍拍| 亚洲v日韩v欧美在线观看| 欧美人与动牲交a欧美精品| 中文字幕av无码不卡免费 | 午夜激情婷婷| av色爱 天堂网| 国产精品偷伦在线观看| 国产成人麻豆精品| 亚洲色图欧美在线| 国内精品自在欧美一区| 波多野结衣久久精品| 69国产精品视频免费| 亚洲第一天堂无码专区| 中文毛片无遮挡播放免费| 国产日本欧美亚洲精品视| 久热这里只有精品6| 一本大道香蕉久中文在线播放| 97综合久久| 国产女人在线视频| 久久影院一区二区h| 亚洲Av综合日韩精品久久久| 亚洲欧美国产高清va在线播放| 囯产av无码片毛片一级| 国产自无码视频在线观看| 秋霞一区二区三区| 亚洲第一黄色网| 国产成人永久免费视频| 亚洲日韩精品欧美中文字幕| 99久久国产精品无码| 欧美专区在线观看| 亚洲欧美日韩色图| 日韩国产一区二区三区无码| 午夜精品福利影院| 久久久久亚洲精品成人网| 国产精品专区第1页| 国产精品浪潮Av| 国产成人精品高清在线| 国产精品白浆无码流出在线看| 永久免费无码日韩视频| 亚洲精品日产精品乱码不卡| 2022国产无码在线| jizz在线观看| 91探花国产综合在线精品| 国产精品免费电影| 日韩欧美视频第一区在线观看| 福利一区在线| 国产不卡一级毛片视频| 视频二区亚洲精品| 一级毛片基地| 婷婷开心中文字幕| 亚洲人成人伊人成综合网无码| 最新午夜男女福利片视频| 日日拍夜夜操| 国产成人8x视频一区二区| 久久亚洲天堂| 欧美日韩精品一区二区视频| 久久天天躁夜夜躁狠狠| 午夜丁香婷婷| 麻豆国产精品一二三在线观看| 亚洲一级毛片在线观播放| 中文字幕免费播放| 九色视频一区| 永久天堂网Av| 午夜人性色福利无码视频在线观看| 国产微拍精品| 国产精品亚欧美一区二区 | 嫩草国产在线| A级毛片无码久久精品免费| 国产内射一区亚洲| 国产欧美在线观看一区| 91无码视频在线观看| 日韩免费成人| 国产精品手机在线播放|