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

Python多線程技術(shù)在網(wǎng)絡(luò)運維中的應(yīng)用概述

2021-06-11 05:39:14郭小崗徐益強
科學(xué)與信息化 2021年15期
關(guān)鍵詞:語言

郭小崗 徐益強

1.江蘇天創(chuàng)科技有限公司 江蘇 南京 210018

2.江蘇省生態(tài)環(huán)境監(jiān)控中心 江蘇 南京 210036

引言

隨著信息化的不斷發(fā)展,政府和企事業(yè)單位的內(nèi)部辦公和對外業(yè)務(wù)受理已基本實現(xiàn)了計算機應(yīng)用系統(tǒng)化。隨之而來的系統(tǒng)數(shù)量增加、應(yīng)用規(guī)模擴大的需求,需要由服務(wù)器、存儲、網(wǎng)絡(luò)設(shè)備和安全設(shè)備等基礎(chǔ)設(shè)置的不斷擴容來提供底層支撐,同時網(wǎng)絡(luò)環(huán)境也變得更為復(fù)雜,運維工作量不斷增加。此時,傳統(tǒng)的運維方式已經(jīng)無法滿足日益增長的軟硬件運維需求,并逐漸暴露出其弱點。傳統(tǒng)運維主要靠人工方式完成,很難規(guī)避人為的誤操作,無法確保運維的質(zhì)量;另一方面,人工一對一“串行”的運維方式,運維效率得不到提升。隨著運維事務(wù)的增加,“事必躬親”的傳統(tǒng)運維模式下,總體運維效率已很難滿足當(dāng)下的計算機應(yīng)用規(guī)模,只有通過計算機應(yīng)用技術(shù),對應(yīng)用系統(tǒng)進行計算機化的運維,才能提高運維效率、提升運維質(zhì)量。而選用Python作為運維的語言工具,絕非偶然。在很多操作系統(tǒng)中,Python是標準的系統(tǒng)組件,大多數(shù)Linux發(fā)行版都預(yù)裝集成了Python,可以在終端下直接運行。同時,Python豐富的類庫很好地滿足了網(wǎng)絡(luò)運維以及操作系統(tǒng)運維必要的功能需求,運維復(fù)雜度也較選用shell、perl、ruby等語言來的簡單易用。

1 Python優(yōu)劣

Python是一種跨平臺的計算機程序設(shè)計語言,是一個高層次的、結(jié)合了解釋性、編譯性、互動性和面向?qū)ο蟮哪_本語言。最初被設(shè)計用于編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,越來越多被用于獨立的、大型項目的開發(fā)。

如果把一次編程比作生產(chǎn)一輛汽車,對使用C語言而言,就好比要自主研發(fā)生產(chǎn)發(fā)動機、底盤、車身和電器設(shè)備,最后進行組裝。而對于Python則是拿來主義,我們并不需要開發(fā)各類配件,可以直接使用第三方的“發(fā)動機”、“底盤”等類庫即可,Python開發(fā)關(guān)心的是各類配件組裝的邏輯效果,而不關(guān)心程序本身運行的速度。作為“膠水語言”,Python的強大來自全世界各行各業(yè)的開發(fā)者,他們把不同領(lǐng)域的對象進行類庫化,把優(yōu)點進行了整合。目前主要應(yīng)用領(lǐng)域有web開發(fā)、網(wǎng)絡(luò)爬蟲、計算與數(shù)據(jù)分析、人工智能、自動化運維、云計算和網(wǎng)絡(luò)編程等方面,截至當(dāng)前,TIOBE編程社區(qū)Python穩(wěn)居前三,排名如圖1所示。

每一種語言的誕生,都有他適用的場景,Python因其豐富類庫、較強的可移植性、易于維護的源代碼和可嵌入等優(yōu)點,實際生產(chǎn)中被各領(lǐng)域廣泛的使用[1]。

圖1 TIOBE Index for July 2020

2 Python在網(wǎng)絡(luò)運維中的應(yīng)用

在政府和企事業(yè)單位網(wǎng)絡(luò)運維工作中,我們通常面向大量的網(wǎng)絡(luò)交換機和路由器的運維,此類工作具有大量的重復(fù)性,采用傳統(tǒng)的人工維護方式,會浪費大量的時間和人力成本。因此網(wǎng)絡(luò)運維人員可以利用Python程序語言,編寫維護腳本,代替人工對網(wǎng)絡(luò)交換機和路由器的運行狀態(tài)進行檢測和維護。

2.1 運維需求

本文以定期備份華為或華三網(wǎng)絡(luò)交換機的配置為例,說明Python為運維工作帶來的便捷可靠性,同時結(jié)合Python多線程并發(fā)技術(shù),將該任務(wù)以一定的并發(fā)量分批執(zhí)行,即便運維人員面對大量設(shè)備的配置備份需求時,該項運維工作依然保持高效可靠。

2.2 Python在網(wǎng)絡(luò)運維中的實現(xiàn)方式

考慮到python2官方已停止維護,以下代碼部分均基于python3編寫。

本例主程序主要使用了paramiko模塊和multiprocessing.pool模塊分別實現(xiàn)自動ssh登錄和多線程并發(fā),通過模擬登錄交換機運行display current-configuration命令獲取到每臺網(wǎng)絡(luò)交換機設(shè)備的配置。接下來具體分析每個部分的實現(xiàn)代碼。

2.2.1 datafile為數(shù)據(jù)部分,主要是登錄交換機所必需的信息,數(shù)據(jù)格式為字典。示例如下:

#!/usr/bin/python3

#coding:utf-8

dict1 = {}

dict1[“192.168.101.10”]= [22,“user”,“password”,“display cur”,“<NewF1-outside-1>”]

dict1[“192.168.101.11”] = [22,“user”,“password”,“display cur”,“<NewF2-outside-1>”]

2.2.2 導(dǎo)入各類所需的模塊。

#!/usr/bin/python3

#coding:utf-8

import paramiko

import os, sys importtime,datetime

from datafile import *

frommultiprocessing.pool import ThreadPool

2.2.3 定義ssh登錄函數(shù),獲取交換機登錄歡迎信息,發(fā)送交互命令,返回交互結(jié)果。

defsshconfig(ip, port, username, password, cmd, PS1):

# 實例化SSHClient

client = paramiko.SSHClient()

# 自動添加策略,保存服務(wù)器的主機名和密鑰信息

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 連接SSH服務(wù)端,以用戶名和密碼進行認證

client.connect(hostname=ip, username=username,password=password, look_for_keys=False)

#獲取登陸shell,并設(shè)置超時時間

getshell =client.invoke_shell()

getshell.settimeout(9000)

# 獲取登錄后的消息

welcomeinfo = ‘’

while True:

line = str(getshell.recv(4096),encoding=”utf-8”)

welcomeinfo += line

if (PS1 is not None) & (len(PS1) > 0):

isFindPS1 = False;

fori in range(len(PS1)):

if PS1[i] in line:

isFindPS1 = True

if isFindPS1 == True:

break;

getshell.send(cmd + ‘ ’)

result = ‘’

# more交互處理

more1 = ‘More’

more2 = ‘--More--’

more3 = ‘<--- More --->’

more4 = ‘---- More ----’

# 循環(huán)獲取數(shù)據(jù)

time.sleep(1)

while True:

line2 = str(getshell.recv(65535),encoding=”utf-8”)

result += line2

if (more1 in line2) | (more2 in line2) | (more3 in line2) | (more4 in line2):

getshell.send(“ “)

time.sleep(1)

continue

if (PS1 is not None) & (len(PS1) > 0):

isFindPS1 = False;

fori in range(len(PS1)):

if PS1[i] in line2:

isFindPS1 = True

if isFindPS1 == True:

break

return result

2.2.4 定義獲取交換機配置函數(shù),以時間、key和.config結(jié)合作為文件名保存配置文件[2]。

defgetconfig(key,port,user,passwd,command,ps):

k = sshconfig(key,port,user,passwd,command,ps)

tm = datetime.datetime.now()

recordtime = tm.strftime(“%Y-%m-%d”)

filename = recordtime + “_” + key + “.config”

file = open(filename,’w’)

file.write(k)

file.close()

file = open(filename,’r’)

f = file.read()

file.close()

if “vty” in f:

return key

else:

key1 = ‘!’ + key

return key1

2.2.5 以多線程執(zhí)行交換機配置備份,線程池并發(fā)數(shù)為5。

result1 = []

if __name__ == “__main__”:

# 多線程部分定義線程池,即以5線程同時獲取5臺交換機設(shè)備的配置。

begin = datetime.datetime.now()

pool = ThreadPool(5)

for key, value in dict1.items():

result = pool.apply_async(getconfig,args=(key,value[0],va lue[1],value[2],value[3],value[4]))

result1.append(result)

pool.close()

pool.join()

for i in result1:

ifi.get().startswith(‘!’):

print(“fail to save %s configuration!” % i.get().strip(‘!’))

else:

print(“success to save %s configuration!” % i.get())

end=datetime.datetime.now()

print(end-begin)

2.2.6 備份結(jié)果和備份文件部分內(nèi)容。

圖2 備份結(jié)果

圖3 備份文件內(nèi)容節(jié)選

2.3 結(jié)果驗證

比較單任務(wù)和多任務(wù)執(zhí)行的結(jié)果,雖然多任務(wù)執(zhí)行備份的任務(wù)量增加了,但執(zhí)行時間上來說,跟單任務(wù)執(zhí)行的時間上是相當(dāng)?shù)模s44s左右),兩次配置文件備份的大小也一樣,說明是完整的[3]。

本次多線程并發(fā)執(zhí)行是成功的。

2.3.1 單任務(wù)時,耗時44.429942秒,如下圖。

2.3.2 5任務(wù)并發(fā)時,耗時44.22秒。

3 結(jié)束語

python自動化運維可以在提高運維效率的同時,降低運維成本和運維工作的出錯率,再結(jié)合多線程技術(shù)的應(yīng)用,可以使具體工作任務(wù)完成得更為高效,從而大大地提高運維交付的速度。本文是python在網(wǎng)絡(luò)運維工作中的一個應(yīng)用案例,旨在說明多線程技術(shù)為網(wǎng)絡(luò)運維工作帶來的高效性,同時python在諸如系統(tǒng)運維等工作中也有著廣闊的應(yīng)用前景,有待我們深入的學(xué)習(xí)和研究。

猜你喜歡
語言
詩之新,以語言創(chuàng)造為基
中華詩詞(2023年8期)2023-02-06 08:51:28
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
讓語言描寫搖曳多姿
多向度交往對語言磨蝕的補正之道
累積動態(tài)分析下的同聲傳譯語言壓縮
日常語言與播音語言
新聞傳播(2016年10期)2016-09-26 12:15:04
語言技能退化與語言瀕危
我有我語言
論語言的“得體”
語文知識(2014年10期)2014-02-28 22:00:56
Only Words慎用你的語言
主站蜘蛛池模板: 国产一区二区丝袜高跟鞋| 欧美精品伊人久久| 欧美成人怡春院在线激情| 华人在线亚洲欧美精品| 国产成人av一区二区三区| 亚洲精品午夜无码电影网| 亚洲天堂色色人体| 亚洲av无码片一区二区三区| 国产在线欧美| 国产精选自拍| 亚洲男人天堂久久| 一本大道无码高清| 91精品国产一区自在线拍| 在线色国产| 欧洲精品视频在线观看| 中文无码日韩精品| 制服丝袜在线视频香蕉| 91精品最新国内在线播放| 免费无码AV片在线观看中文| www.av男人.com| 久久无码av三级| 亚洲制服丝袜第一页| 狼友视频一区二区三区| 视频二区亚洲精品| 欧美亚洲国产一区| 久久性视频| 日韩欧美国产精品| 国产国产人成免费视频77777| 日韩成人免费网站| 国产精品永久久久久| 国产成人乱无码视频| 亚洲 成人国产| 一级香蕉视频在线观看| 久久精品无码专区免费| 99精品高清在线播放| 免费看黄片一区二区三区| 中文字幕无码中文字幕有码在线| 永久免费无码成人网站| 国产91久久久久久| 性色一区| 日韩色图在线观看| 亚洲伦理一区二区| 久久五月天综合| 色首页AV在线| 亚洲AⅤ综合在线欧美一区| 亚洲国产天堂久久九九九| 国产精品大白天新婚身材| 亚洲视频黄| 免费人欧美成又黄又爽的视频| 久久99精品国产麻豆宅宅| 国产精品理论片| 久精品色妇丰满人妻| 国产福利微拍精品一区二区| 国产成人高清精品免费软件| 亚洲中文精品久久久久久不卡| 福利在线免费视频| 国产精品久久久久鬼色| 亚洲AV永久无码精品古装片| 狠狠v日韩v欧美v| 色妺妺在线视频喷水| 福利一区在线| 久久久精品国产SM调教网站| 青青操国产| 精品久久高清| 亚洲综合激情另类专区| 在线免费不卡视频| 亚洲欧洲日韩国产综合在线二区| 免费福利视频网站| 蝌蚪国产精品视频第一页| 亚洲国产第一区二区香蕉| 欧美啪啪一区| 日a本亚洲中文在线观看| 欧美成人精品一区二区| 国产极品粉嫩小泬免费看| 欧美啪啪网| 中文字幕 日韩 欧美| 中文字幕在线播放不卡| 亚洲高清中文字幕在线看不卡| 国产美女精品人人做人人爽| 毛片免费在线| 国产伦片中文免费观看| 欧美日韩免费在线视频|