高級(jí)路由交換技術(shù)(微課版)項(xiàng)目8 實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化運(yùn)維_第1頁(yè)
高級(jí)路由交換技術(shù)(微課版)項(xiàng)目8 實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化運(yùn)維_第2頁(yè)
高級(jí)路由交換技術(shù)(微課版)項(xiàng)目8 實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化運(yùn)維_第3頁(yè)
高級(jí)路由交換技術(shù)(微課版)項(xiàng)目8 實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化運(yùn)維_第4頁(yè)
高級(jí)路由交換技術(shù)(微課版)項(xiàng)目8 實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化運(yùn)維_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

項(xiàng)目9網(wǎng)絡(luò)自動(dòng)化運(yùn)維項(xiàng)目概述實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備自動(dòng)巡檢,自動(dòng)收集網(wǎng)絡(luò)設(shè)備信息并進(jìn)行記錄;實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備自動(dòng)配置,對(duì)批量配置采用自動(dòng)化方式進(jìn)行部署;實(shí)現(xiàn)轉(zhuǎn)發(fā)路徑分析,根據(jù)網(wǎng)絡(luò)業(yè)務(wù)對(duì)轉(zhuǎn)發(fā)路徑自動(dòng)分析。本項(xiàng)目要完成的網(wǎng)絡(luò)需求如下:知識(shí)目標(biāo)網(wǎng)絡(luò)設(shè)備運(yùn)維基礎(chǔ)網(wǎng)絡(luò)設(shè)備日常巡檢文件讀寫(xiě)基礎(chǔ)JSON基礎(chǔ)正則表達(dá)式MSTP協(xié)議Telnet協(xié)議及實(shí)現(xiàn)SSH協(xié)議及實(shí)現(xiàn)技能目標(biāo)網(wǎng)絡(luò)設(shè)備自動(dòng)巡檢實(shí)施網(wǎng)絡(luò)設(shè)備自動(dòng)配置實(shí)施轉(zhuǎn)發(fā)路徑分析實(shí)施學(xué)習(xí)目標(biāo)9.1網(wǎng)絡(luò)設(shè)備運(yùn)維基礎(chǔ)設(shè)備常見(jiàn)管理方式命令行接口方式(Command-lineInterface,CLI)Web網(wǎng)管方式SNMP網(wǎng)管方式9.1網(wǎng)絡(luò)設(shè)備運(yùn)維基礎(chǔ)設(shè)備常見(jiàn)管理方式-CLI方式

CLI是一種通過(guò)命令行界面與設(shè)備進(jìn)行交互的方式。與GUI模式(GraphicalUserInterface)相比,CLI模式更加靈活和高效。CLI模式通常使用文本界面,用戶(hù)需要記住一些命令和參數(shù),并按照特定的語(yǔ)法規(guī)則輸入命令。使用CLI管理設(shè)備可通過(guò)兩種方式登陸設(shè)備:Console口:通常用于首次登陸設(shè)備使用。Telnet/SSH協(xié)議:最常用的登陸方式,設(shè)備需要配置管理地址后才能使用。9.1網(wǎng)絡(luò)設(shè)備運(yùn)維基礎(chǔ)CLI-通過(guò)Console口登陸(本地)PCConsole線(xiàn)纜Console口COM口Console口是一種串行通信端口,由設(shè)備的主控板提供。只能在本地進(jìn)行,不能遠(yuǎn)程。CLI-通過(guò)Telnet/SSH協(xié)議(遠(yuǎn)程)9.1網(wǎng)絡(luò)設(shè)備運(yùn)維基礎(chǔ)PC網(wǎng)線(xiàn)網(wǎng)口網(wǎng)口通過(guò)主控板的網(wǎng)口或業(yè)務(wù)單板的普通業(yè)務(wù)網(wǎng)口登陸。不受設(shè)備地理位置限制,管理PC和被管理設(shè)備需要網(wǎng)絡(luò)聯(lián)通。9.1網(wǎng)絡(luò)設(shè)備運(yùn)維基礎(chǔ)設(shè)備常見(jiàn)管理方式-web網(wǎng)管方式

在網(wǎng)絡(luò)設(shè)備日常運(yùn)維中,如果希望網(wǎng)絡(luò)設(shè)備的運(yùn)維形式用圖形化直觀顯示,可以使用web網(wǎng)管方式。web網(wǎng)管是設(shè)備配置界面的網(wǎng)頁(yè)版呈現(xiàn),功能通常包含最常用的配置與查詢(xún)業(yè)務(wù)。在web網(wǎng)管方式中,設(shè)備為HTTP/HTTPS的服務(wù)器,管理PC為對(duì)應(yīng)的客戶(hù)端。9.1網(wǎng)絡(luò)設(shè)備運(yùn)維基礎(chǔ)設(shè)備常見(jiàn)管理方式-SNMP網(wǎng)管方式SNMP(SimpleNetworkManagementProtocol,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)規(guī)范了網(wǎng)絡(luò)管理的接口,屏蔽不同廠商設(shè)備差異,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)中設(shè)備統(tǒng)一管理。9.1網(wǎng)絡(luò)設(shè)備運(yùn)維基礎(chǔ)設(shè)備常見(jiàn)管理方式-SNMP網(wǎng)管方式(續(xù))網(wǎng)絡(luò)管理進(jìn)程N(yùn)MS代理進(jìn)程被管理設(shè)備代理進(jìn)程被管理設(shè)備代理進(jìn)程被管理設(shè)備SNMP架構(gòu)主要由NMS(NetworkManagementSystem)與被管理設(shè)備構(gòu)成,被管理設(shè)備中有一個(gè)代理進(jìn)程負(fù)責(zé)與NMS交互。通過(guò)NMS可向設(shè)備發(fā)送配置、查詢(xún)命令,設(shè)備出現(xiàn)故障時(shí)也可向NMS發(fā)送告警。9.1網(wǎng)絡(luò)設(shè)備運(yùn)維基礎(chǔ)設(shè)備常見(jiàn)管理方式優(yōu)缺點(diǎn)CLI管理方式優(yōu)缺點(diǎn)

方便,功能全面。

需一一登陸設(shè)備管理,返回非結(jié)構(gòu)化數(shù)據(jù),不利于機(jī)器進(jìn)一步處理。web管理方式優(yōu)缺點(diǎn)

簡(jiǎn)單直觀。需一一登陸設(shè)備管理,只提供設(shè)備管理的一部分功能。SNMP管理方式優(yōu)缺點(diǎn)

集中管理,跨設(shè)備商產(chǎn)品兼容。

價(jià)格昂貴,無(wú)法完全兼容跨設(shè)備商產(chǎn)品。9.1網(wǎng)絡(luò)設(shè)備運(yùn)維基礎(chǔ)

自動(dòng)化運(yùn)維python文件Telnet/SSH可根據(jù)環(huán)境編寫(xiě)運(yùn)維程序,更方便可同時(shí)管理多臺(tái)設(shè)備,更高效可對(duì)設(shè)備返回?cái)?shù)據(jù)進(jìn)行加工,更靈活9.2

網(wǎng)絡(luò)設(shè)備日常巡檢日常巡檢主要工作現(xiàn)場(chǎng)巡檢了解設(shè)備硬件運(yùn)行環(huán)境和情況。遠(yuǎn)程巡檢了解設(shè)備軟件與業(yè)務(wù)運(yùn)行情況。

使用自動(dòng)化運(yùn)維提升效率。9.2

網(wǎng)絡(luò)設(shè)備日常巡檢現(xiàn)場(chǎng)巡檢溫度

掌握不同設(shè)備對(duì)溫度要求。

觀察機(jī)房?jī)?nèi)空調(diào)運(yùn)行狀況,以保證機(jī)房的正常工作溫度。濕度

掌握設(shè)備對(duì)運(yùn)行環(huán)境的濕度要求。

觀察機(jī)房?jī)?nèi)濕度情況,保證設(shè)備正常運(yùn)行的濕度要求。清潔

觀察設(shè)備表面及防塵網(wǎng)清潔狀態(tài)。

保證設(shè)備通風(fēng)和散熱良好。設(shè)備指示燈掌握電源、風(fēng)扇、業(yè)務(wù)接口等指示燈正常顏色、閃爍情況觀察指示燈是否異常9.2

網(wǎng)絡(luò)設(shè)備日常巡檢遠(yuǎn)程巡檢設(shè)備基本狀態(tài)巡檢

設(shè)備運(yùn)行情況

設(shè)備資源利用率

設(shè)備單板狀態(tài)設(shè)備復(fù)位情況設(shè)備端口狀態(tài)巡檢

端口物理狀態(tài)、協(xié)議狀態(tài)

端口收發(fā)報(bào)文情況設(shè)備業(yè)務(wù)狀態(tài)巡檢網(wǎng)絡(luò)拓?fù)淝闆r各種業(yè)務(wù)表項(xiàng)情況9.3

文件讀寫(xiě)基礎(chǔ)

對(duì)于網(wǎng)絡(luò)巡檢結(jié)果,網(wǎng)絡(luò)工程師不一定能實(shí)時(shí)查看,因此需要把巡檢結(jié)果保存到文件中,便于后續(xù)查看分析。Python提供了一些內(nèi)置函數(shù),能夠?qū)ξ募M(jìn)行訪問(wèn)和管理,首先需要把文件打開(kāi)或創(chuàng)建。f=open(file,mode=’r’,buffering=-1,encoding=None)參數(shù)file為要打開(kāi)或創(chuàng)建的文件名,是必選參數(shù),其余為可選參數(shù),打開(kāi)模式“mode”設(shè)置非常重要。打開(kāi)模式含義文件不存在時(shí)操作r/rb以只讀方式打開(kāi)文件。報(bào)錯(cuò)w/wb以只寫(xiě)方式打開(kāi)文件,若文件已存在則重寫(xiě)文件。創(chuàng)建a/ab以只寫(xiě)方式打開(kāi)文件,在文件末尾追加數(shù)據(jù)。創(chuàng)建r+/rb+以讀/寫(xiě)方式打開(kāi)文件。報(bào)錯(cuò)w+/wb+以讀/寫(xiě)方式打開(kāi)文件,若文件已存在則重寫(xiě)文件創(chuàng)建a+/ab+以讀/寫(xiě)方式打開(kāi)文件,在文件末尾追加數(shù)據(jù)。創(chuàng)建9.3

文件讀寫(xiě)基礎(chǔ)

文件打開(kāi)后可以進(jìn)行讀寫(xiě)操作,python提供了豐富的文件讀寫(xiě)操作函數(shù)。f.read():從f中讀取剩余內(nèi)容直到文件結(jié)尾,返回一個(gè)字符串。f.read(n):從f中讀取n個(gè)字符,返回一個(gè)字符串。f.readline():從f中讀取一行內(nèi)容,返回一個(gè)字符串。f.readlines():從f中讀取所有數(shù)據(jù),返回一個(gè)列表。f.write(data):向f中寫(xiě)入指定字符串data。f.write(lines):向f中寫(xiě)入列表lines中數(shù)據(jù)。9.3

文件讀寫(xiě)基礎(chǔ)

文件操作完成后需要關(guān)閉,需要使用close()函數(shù)進(jìn)行關(guān)閉。Python提供了with語(yǔ)句自動(dòng)管理資源,如文件、網(wǎng)絡(luò)連接、數(shù)據(jù)庫(kù)連接等,確保資源在使用完畢后被正確關(guān)閉。withopen('a.txt')asf:pass9.4

JSON基礎(chǔ)

JSON(JavaScriptObjectNotation)是一種輕量級(jí)的數(shù)據(jù)交換格式。易于人閱讀和編寫(xiě),可以在多種語(yǔ)言之間進(jìn)行數(shù)據(jù)交換,也易于機(jī)器解析和生成。JSON數(shù)據(jù)格式和python中的字典相似,可以表示數(shù)值、字符串、數(shù)組、對(duì)象等數(shù)據(jù)。

Python中使用JSON模塊對(duì)JSON格式的數(shù)據(jù)進(jìn)行讀寫(xiě),讀寫(xiě)方法主要分為兩類(lèi):

編碼器(Encoder)

將python對(duì)象轉(zhuǎn)換成JSON格式的字符串,涉及方法為dumps(),dump()

解碼器(Decoder)

將JSON格式的字符串轉(zhuǎn)換成python對(duì)象,涉及方法為loads(),load()

JSON表示數(shù)值格式:{“key”:value}

示例:{"interfaceID1":1,"interfaceID2":2}JSON表示字符串格式:{“key”:“value”}示例:{"Vendor1":"Huawei","Vendor2":"Cisco"}JSON表示數(shù)組格式:{“key”:[value]}示例:{"interfaceID":[1,2],"Vendor":["Huawei","Cisco"]}JSON表示對(duì)象格式:{“key”:{value}}示例:{"device1":

{

"interfaceID":

[1,2],

"Vendor":["Huawei"]

},"device2":

{

"interfaceID":

[3,4],

"Vendor":

["Cisco"]

}}9.4

JSON基礎(chǔ)JSON數(shù)據(jù)表示JSON數(shù)據(jù)編碼9.4

JSON基礎(chǔ)json.dumps()json.dumps()把python對(duì)象轉(zhuǎn)換成json對(duì)象,生成的是字符串。importjsonx={"interfaceID1":1,"Vendor1":"Huawei"}#用dumps將python編碼成json字符串并輸出print(json.dumps(x))print(type(x))print(type(json.dumps(x)))執(zhí)行以上代碼輸出得到的結(jié)果如下:

{"interfaceID1":1,"Vendor1":"Huawei"}<class'dict'><class'str'>json.dump()

json.dump()把轉(zhuǎn)換后的json數(shù)據(jù)儲(chǔ)存到文件中。importjsonx={"interfaceID1":1,"Vendor1":"Huawei"}#將python編碼成json放在文件中

filename='device.json'withopen(filename,'w')asf:json.dump(x,f)執(zhí)行以上代碼后生成device.json文件:9.4

JSON基礎(chǔ)JSON數(shù)據(jù)解碼

json.loads()json.loads()針對(duì)內(nèi)存對(duì)象,將JSON格式的字符串轉(zhuǎn)換為python字典。

importjsonx={"interfaceID1":1,"Vendor1":"Huawei"}#用dumps將python編碼成json字符串x=json.dumps(x)#用loads將json編碼成python對(duì)象

y=json.loads(x)print(y)print(type(y))

執(zhí)行以上代碼輸出得到的結(jié)果如下:{'interfaceID1':1,'Vendor1':'Huawei'}<class'dict'>

json.load()json.load()針對(duì)文件,從JSON格式的文件讀取數(shù)據(jù)并轉(zhuǎn)換為python字典。

importjson

x={"interfaceID1":1,"Vendor1":"Huawei"}filename='device.json‘withopen(filename,'w')asf:

json.dump(x,f)withopen(filename)asf_1:

y=json.load(f_1)

print(y)

print(type(y))

執(zhí)行以上代碼得到的輸出結(jié)果如下:{'interfaceID1':1,'Vendor1':'Huawei'}<class'dict'>9.5

正則表達(dá)式

正則表達(dá)式是對(duì)字符串操作的一種邏輯公式,用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來(lái)表達(dá)對(duì)字符串的一種過(guò)濾邏輯。

正則表達(dá)式特點(diǎn):強(qiáng)大的匹配能力:正則表達(dá)式可以通過(guò)使用特殊字符和語(yǔ)法規(guī)則來(lái)描述和匹配文本的模式,能夠處理復(fù)雜的匹配需求,如字符串匹配、替換、提取等。靈活性:正則表達(dá)式提供了多種元字符和語(yǔ)法規(guī)則,支持在模式中指定字符集、次數(shù)、位置和條件等,具有高度的靈活性。廣泛支持:正則表達(dá)式在主流編程語(yǔ)言中得到廣泛支持,如Python、Java、JavaScript等,使得其應(yīng)用范圍非常廣泛。高效性:對(duì)于文本匹配問(wèn)題,使用正則表達(dá)式可以通過(guò)一次模式定義實(shí)現(xiàn)多次匹配,提高了匹配效率。正則表達(dá)式常見(jiàn)形式表達(dá)式形式含義表達(dá)式樣例匹配的實(shí)例.任意除換行符’\n’外的字符。a.cabc\轉(zhuǎn)義字符,使后一個(gè)字符改變?cè)瓉?lái)的意思a\.ca.c[…]方括號(hào)中的任意字符。a[bcd]eabe/ace/ade\d任意數(shù)字[0-9]a\dca8c\D任意非數(shù)字a\Dcadc\s空白字符,等價(jià)于[\r\n\t\v\f],\r:表示一個(gè)回車(chē)符,\n:表示一個(gè)換行符,\t:表示一個(gè)制表符(tab鍵),\v:表示一個(gè)垂直制表符,\f表示一個(gè)換頁(yè)符。a\scac\S非空白字符。a\Scabc\w單詞字符,表示數(shù)字字母或下劃線(xiàn)[A-Za-z0-9_]a\wcaBc\W非單詞字符a\Wcac^字符串開(kāi)頭,在多行模式中匹配每一行的開(kāi)頭。^abcabc$字符串末尾,在多行模式中匹配每一行的末尾。abc$abc*匹配前一個(gè)字符0或無(wú)限次。abc*ababccc+匹配前一個(gè)字符1次或無(wú)限次。abc+abcabcc?匹配前一個(gè)字符0次或1次abc?ababc{m}匹配前一個(gè)字符m次。ab{2}cabbc{m,n}匹配前一個(gè)字符m至n次。ab{1,2}cabcabbc9.5

正則表達(dá)式9.5

正則表達(dá)式正則表達(dá)式實(shí)現(xiàn)

Python中的內(nèi)置re模塊主要是通過(guò)正則表達(dá)式來(lái)匹配處理字符串。re模塊提供一些方法供用戶(hù)從字符串中提取信息。

生成正則表達(dá)式對(duì)象re_pattern=pile(pattern,flags=0)參數(shù)說(shuō)明:pattern:正則表達(dá)式對(duì)象。flags:代表功能標(biāo)志位,擴(kuò)展正則表達(dá)式的匹配。該函數(shù)返回一個(gè)Pattern對(duì)象,使用該對(duì)象的match(),search(),findall()等方法可以實(shí)現(xiàn)文本的匹配查找。9.5

正則表達(dá)式正則表達(dá)式實(shí)現(xiàn)(續(xù))

根據(jù)正則表達(dá)式匹配目標(biāo)字符串內(nèi)容(1)re.findall()re.findall(pattern,string,flags=0)該函數(shù)的返回值是匹配到的內(nèi)容列表。參數(shù)含義:pattern:正則表達(dá)式對(duì)象。string:目標(biāo)字符串。flags:代表功能標(biāo)志位,擴(kuò)展正則表達(dá)式的匹配。(2)re_pattern.findall()re_pattern.findall(string,pos,endpos)其中re_pattern為調(diào)用pile()函數(shù)返回的Pattern對(duì)象。參數(shù)含義:string目標(biāo)字符串。pos:

目標(biāo)字符串的開(kāi)始匹配位置。Endpos:

目標(biāo)字符串的結(jié)束匹配位置。9.5

正則表達(dá)式正則表達(dá)式實(shí)現(xiàn)(續(xù))

匹配目標(biāo)字符串第一個(gè)符合的內(nèi)容(1)re.search()

re.search(pattern,string,flags=0)

參數(shù)含義:

pattern:正則表達(dá)式

string:目標(biāo)字符串

(2)re_pattern.search()

re_pattern.search(string,pos,endpos)

其中re_pattern為使用pile()方法返回的Pattern對(duì)象。

參數(shù)含義:

string:目標(biāo)字符串

pos截取目標(biāo)字符串的開(kāi)始匹配位置。

endpos截取目標(biāo)字符串的結(jié)束匹配位置。9.5

正則表達(dá)式正則表達(dá)式實(shí)現(xiàn)示例要求:找出字符串中的所有數(shù)字importrepattern=pile('\d+')#使用正則表達(dá)式創(chuàng)建一個(gè)pattern對(duì)象str='12hello456,python'#待匹配的目標(biāo)字符串result=re.findall(pattern,str)#根據(jù)正則表達(dá)式匹配目標(biāo)字符串result1=pattern.findall(str)#使用Pattern對(duì)象中的方法匹配目標(biāo)字符串print(result)print(type(result))print(result1)print(type(result1))輸出結(jié)果為目標(biāo)字符串中的數(shù)字列表,兩種匹配方法效果相同。['12','456']<class'list'>['12','456']<class'list'>9.6

MSTP協(xié)議STP(SpanningTreeProtocol)

為解決以太網(wǎng)絡(luò)環(huán)路會(huì)帶來(lái)廣播風(fēng)暴、MAC地址表震蕩、重復(fù)數(shù)據(jù)幀等問(wèn)題,產(chǎn)生了生成樹(shù)協(xié)議STP(SpanningTreeProtocol)。運(yùn)行STP協(xié)議的設(shè)備通過(guò)相互交換協(xié)議報(bào)文發(fā)現(xiàn)網(wǎng)絡(luò)中的環(huán)路,并對(duì)環(huán)路上的某個(gè)端口進(jìn)行阻塞,最終將環(huán)型拓?fù)湫藜舫蓸?shù)型拓?fù)?,從而避免環(huán)路帶來(lái)的問(wèn)題。RSTP(RapidSpanningTreeProtocol)STP協(xié)議存在收斂速度慢的缺陷,IEEE在2001年發(fā)布了802.1W標(biāo)準(zhǔn)定義快速生成樹(shù)協(xié)議RSTP(RapidSpanningTreeProtocol)。RSTP在STP基礎(chǔ)上進(jìn)行改進(jìn),實(shí)現(xiàn)了網(wǎng)絡(luò)拓?fù)淇焖偈諗?。MSTP(MultipleSpanningTreeProtocol)STP協(xié)議與RSTP協(xié)議在網(wǎng)絡(luò)中只有一棵生成樹(shù),會(huì)出現(xiàn)次優(yōu)路徑問(wèn)題或鏈路使用不充分問(wèn)題,IEEE802.1s中定義的多生成樹(shù)協(xié)議MSTP(MultipleSpanningTreeProtocol)能夠在網(wǎng)絡(luò)中生成多棵樹(shù),在解決環(huán)路問(wèn)題時(shí)避免單生成樹(shù)的缺陷。9.6

MSTP協(xié)議MSTP協(xié)議中角色定義

MSTP協(xié)議中設(shè)備角色分為根橋與非根橋,端口角色為根端口、指定端口、預(yù)備端口、備份端口和邊緣端口。

端口角色轉(zhuǎn)發(fā)狀態(tài)根端口轉(zhuǎn)發(fā)指定端口轉(zhuǎn)發(fā)預(yù)備端口阻塞備份端口阻塞邊緣端口轉(zhuǎn)發(fā)9.6

MSTP協(xié)議MSTP生成樹(shù)轉(zhuǎn)發(fā)路徑MSTP把一個(gè)交換網(wǎng)絡(luò)劃分成多個(gè)域,每個(gè)域內(nèi)有多棵生成樹(shù)實(shí)例,每棵生成樹(shù)實(shí)例是一個(gè)或多個(gè)vlan的集合。生成樹(shù)之間相互獨(dú)立,有自己的轉(zhuǎn)發(fā)路徑。

轉(zhuǎn)發(fā)路徑分析工作量隨生成樹(shù)數(shù)量增加而變大。9.7

Telnet協(xié)議及實(shí)現(xiàn)Telnet協(xié)議是TCP/IP協(xié)議族中的一員,是Internet遠(yuǎn)程登錄服務(wù)的標(biāo)準(zhǔn)協(xié)議和主要方式,協(xié)議具體細(xì)節(jié)可參考RFC854。在網(wǎng)絡(luò)運(yùn)維中,通常使用telnet協(xié)議遠(yuǎn)程登陸網(wǎng)絡(luò)設(shè)備進(jìn)行配置管理。

telnet協(xié)議通過(guò)客戶(hù)端與服務(wù)器之間交互報(bào)文完成通信過(guò)程,總體分為連接建立、命令執(zhí)行和連接斷開(kāi)三個(gè)部分。

9.7

Telnet協(xié)議及實(shí)現(xiàn)Telnet協(xié)議跨平臺(tái)性

為屏蔽不同終端之間的差異,telnet協(xié)議使用NVT(NetworkVirtualTerminal)將不同類(lèi)型終端轉(zhuǎn)換為NVT格式,使得不同類(lèi)型的終端都可以通過(guò)telnet協(xié)議通信。

終端Telnet客戶(hù)端Telnet服務(wù)器端終端驅(qū)動(dòng)程序網(wǎng)絡(luò)本地字符集NVT字符集遠(yuǎn)端字符集9.7

Telnet協(xié)議及實(shí)現(xiàn)Telnet協(xié)議實(shí)現(xiàn)Telnetlib是

python標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,提供了Telnet協(xié)議客戶(hù)端功能。Telnetlib模塊提供了一個(gè)實(shí)現(xiàn)telnet協(xié)議的類(lèi)Telnet,使用telnetlib.Telnet(host=None,port=0[,timeout])進(jìn)行Telnet類(lèi)實(shí)例的初始化。實(shí)例初始化后使用Telnet類(lèi)提供的方法進(jìn)行telnet相關(guān)操作,實(shí)現(xiàn)對(duì)設(shè)備的配置管理。

方法

使用說(shuō)明open(host,

port=0[,

timeout])連接主機(jī)。read_until(expected,

timeout=None)讀取直到遇到給定字節(jié)串expected或timeout秒已經(jīng)過(guò)去。read_all()讀取數(shù)據(jù),直到遇到EOF;連接關(guān)閉前都會(huì)保持阻塞。read_some()在達(dá)到EOF前,讀取至少一個(gè)字節(jié)的數(shù)據(jù)。read_very_eager()在不阻塞I/O的情況下讀取所有的內(nèi)容。write(buffer)向套接字寫(xiě)入一個(gè)字節(jié)字符串。close()關(guān)閉連接對(duì)象。9.8

SSH協(xié)議及實(shí)現(xiàn)Telnet協(xié)議缺點(diǎn)Telnet協(xié)議以明文形式傳輸數(shù)據(jù),不提供加密機(jī)制,任何位于數(shù)據(jù)傳輸路徑上的節(jié)點(diǎn)都可以攔截、竊取或篡改Telnet會(huì)話(huà)中的信息,用戶(hù)數(shù)據(jù)安全得不到保證。9.8

SSH協(xié)議及實(shí)現(xiàn)

SSH(SecureShell)通過(guò)對(duì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行加密和驗(yàn)證,建立SSH客戶(hù)端和SSH服務(wù)器之間的安全隧道,可以代替telnet,也可以為網(wǎng)絡(luò)服務(wù)提供安全的傳輸通道。SSH協(xié)議的細(xì)節(jié)可參考標(biāo)準(zhǔn)RFC4250~RFC4254。傳輸層協(xié)議各種SSH高層網(wǎng)絡(luò)安全應(yīng)用協(xié)議服務(wù)器認(rèn)證數(shù)據(jù)機(jī)密性信息完整性連接協(xié)議用戶(hù)認(rèn)證協(xié)議9.8

SSH協(xié)議及實(shí)現(xiàn)SSH協(xié)議工作七個(gè)階段:

連接建立

版本協(xié)商

算法協(xié)商

密鑰交換

用戶(hù)認(rèn)證

會(huì)話(huà)請(qǐng)求

會(huì)話(huà)交互9.8

SSH協(xié)議及實(shí)現(xiàn)SSH協(xié)議實(shí)現(xiàn)-Paramiko

Paramiko是python中實(shí)現(xiàn)SSH協(xié)議進(jìn)行設(shè)備遠(yuǎn)程管理的模塊,是一個(gè)著名的開(kāi)源SSHv2項(xiàng)目,支持口令認(rèn)證和公鑰認(rèn)證兩種方式,可以實(shí)現(xiàn)安全的遠(yuǎn)程命令執(zhí)行、文件傳輸?shù)裙δ堋aramiko中常用的兩個(gè)類(lèi)為SSHClient和SFTPClient,分別提供安全遠(yuǎn)程管理SSH和安全文件傳輸SFTP功能。SSHagents

HostKeysKeyhandling密鑰相關(guān)類(lèi)ChannelMessagePacketizerTransportSSHClientSFTPClient常用協(xié)議類(lèi)ParamikoSSHClient類(lèi)常用方法9.8

SSH協(xié)議及實(shí)現(xiàn)connect()

ssh_client.connect(

)實(shí)現(xiàn)遠(yuǎn)程服務(wù)器的連接與認(rèn)證,該方法中hostname是必選參數(shù),主要參數(shù)含義:hostname連接的目標(biāo)主機(jī)。port=SSH_PORT指定端口,默認(rèn)為22。username=None驗(yàn)證的用戶(hù)名。password=None驗(yàn)證的用戶(hù)密碼。pkey=None用于身份驗(yàn)證的私鑰。key_filename=None一個(gè)文件名或文件列表,指定私鑰文件。timeout=None可選的tcp連接超時(shí)時(shí)間。SSHClient類(lèi)常用方法9.8

SSH協(xié)議及實(shí)現(xiàn)set_missing_host_key_policy()設(shè)置連接的遠(yuǎn)程服務(wù)器沒(méi)有本地主機(jī)密鑰或HostKeys對(duì)象時(shí)的策略,目前支持三種:AutoAddPolicy自動(dòng)添加主機(jī)名及主機(jī)密鑰到本地HostKeys對(duì)象,不依賴(lài)load_system_host_key的配置。WarningPolicy用于記錄一個(gè)未知的主機(jī)密鑰的python警告并接受,功能上和AutoAddPolicy類(lèi)似,但是會(huì)提示是新連接。RejectPolicy自動(dòng)拒絕未知的主機(jī)名和密鑰,依賴(lài)load_system_host_key的配置,此為默認(rèn)選項(xiàng)。SSHClient類(lèi)常用方法9.8

SSH協(xié)議及實(shí)現(xiàn)

invoke_shell()

創(chuàng)建一個(gè)交互式shell會(huì)話(huà),該方法的返回值為一個(gè)類(lèi)型為Channel的對(duì)象,Channel對(duì)象提供send(),recv()方法發(fā)送命令和接收命令執(zhí)行結(jié)果。

exec_command()

在遠(yuǎn)程服務(wù)器上執(zhí)行命令。就執(zhí)行單條命令而言,

它與采用invoke_shell()方式相同。

exec_command()每次通過(guò)開(kāi)一個(gè)新的Channel來(lái)執(zhí)行傳輸?shù)拿睿瑘?zhí)行后會(huì)退出當(dāng)前的shell。屬于非交互式方式。

如果想在當(dāng)前的shell下根據(jù)輸出提示持續(xù)輸出,即持久化、交互式方式,此時(shí)就需要使用invoke_shell()方式。close()

關(guān)閉遠(yuǎn)程連接。9.8

SSH協(xié)議及實(shí)現(xiàn)SSH協(xié)議實(shí)現(xiàn)-NetmikoNetmiko是工程師KirkByers于2015年發(fā)布的一個(gè)用于簡(jiǎn)化眾多廠商網(wǎng)絡(luò)設(shè)備CLI連接(SSH、Telnet、Serial)的工具。Netmiko基于Paramiko開(kāi)發(fā),優(yōu)點(diǎn)較多。多廠商支持Netmiko支持大量網(wǎng)絡(luò)設(shè)備廠商,包括Cisco、Juniper、HPE、Arista、Fortinet等。

簡(jiǎn)化的操作Netmiko提供了一系列簡(jiǎn)化的操作方法,可以輕松地執(zhí)行命令、配置設(shè)備、上傳和下載文件等操作,而不需要手動(dòng)處理底層的SSH連接細(xì)節(jié)。自動(dòng)化功能Netmiko提供許多自動(dòng)化功能,如批量執(zhí)行命令、從文件中加載配置、批量配置設(shè)備等,方便批量操作大量設(shè)備。豐富的文檔和社區(qū)支持Netmiko擁有詳細(xì)的官方文檔和活躍的社區(qū)支持,可以幫助用戶(hù)了解和解決使用過(guò)程中的問(wèn)題。9.8

SSH協(xié)議及實(shí)現(xiàn)Netmiko常用方法

send_command()

該函數(shù)只支持向設(shè)備發(fā)送一條命令。發(fā)出命令后,默認(rèn)情況下該函數(shù)會(huì)一直等待直到接收到設(shè)備的完整回顯內(nèi)容。如果在一定時(shí)間內(nèi)沒(méi)有獲取到完整的回顯內(nèi)容,Netmiko會(huì)拋出異常。主要參數(shù)為:command_string:待執(zhí)行的命令。expect_string:預(yù)期的輸出結(jié)束信息,默認(rèn)是設(shè)備的提示符。read_timeout:等待超時(shí)時(shí)間。delay_factor:延遲因子,等待時(shí)間延遲2*delay_factor秒的時(shí)間。

send_confi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論