網(wǎng)絡(luò)自動(dòng)化運(yùn)維教程 課件 項(xiàng)目3、4 使用paramiko實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備自動(dòng)化巡檢、使用netmiko發(fā)現(xiàn)網(wǎng)絡(luò)拓_第1頁
網(wǎng)絡(luò)自動(dòng)化運(yùn)維教程 課件 項(xiàng)目3、4 使用paramiko實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備自動(dòng)化巡檢、使用netmiko發(fā)現(xiàn)網(wǎng)絡(luò)拓_第2頁
網(wǎng)絡(luò)自動(dòng)化運(yùn)維教程 課件 項(xiàng)目3、4 使用paramiko實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備自動(dòng)化巡檢、使用netmiko發(fā)現(xiàn)網(wǎng)絡(luò)拓_第3頁
網(wǎng)絡(luò)自動(dòng)化運(yùn)維教程 課件 項(xiàng)目3、4 使用paramiko實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備自動(dòng)化巡檢、使用netmiko發(fā)現(xiàn)網(wǎng)絡(luò)拓_第4頁
網(wǎng)絡(luò)自動(dòng)化運(yùn)維教程 課件 項(xiàng)目3、4 使用paramiko實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備自動(dòng)化巡檢、使用netmiko發(fā)現(xiàn)網(wǎng)絡(luò)拓_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

項(xiàng)目3使用paramiko實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備自動(dòng)化巡檢項(xiàng)目3使用paramiko實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備自動(dòng)化巡檢3.1Paramiko模塊介紹3.2Paramiko模塊的類3.3任務(wù)實(shí)施3.1PythonParamiko模塊SSH是一個(gè)是一種用于在不安全網(wǎng)絡(luò)上進(jìn)行安全遠(yuǎn)程登錄和實(shí)現(xiàn)其他安全網(wǎng)絡(luò)服務(wù)的協(xié)議,OpenSSH是其中一個(gè)開源實(shí)現(xiàn)。Paramiko是Python實(shí)現(xiàn)SSHv2協(xié)議的模塊,它支持口令認(rèn)證和公鑰認(rèn)證兩種方式。可以實(shí)現(xiàn)安全的遠(yuǎn)程命令執(zhí)行、文件傳輸?shù)裙δ堋aramiko可以使用SSHv2遠(yuǎn)程連接到Linux服務(wù)器或網(wǎng)絡(luò)設(shè)備,查看上面的日志狀態(tài),批量配置遠(yuǎn)程服務(wù)器或設(shè)備,文件上傳,文件下載等1Paramiko模塊-介紹3.1PythonParamiko模塊Paramiko模塊中有很多組件,可以歸納為:常用協(xié)議類和密鑰相關(guān)類。常用協(xié)議類主要有以下組件:最常用的兩個(gè)類為SSHClient類和SFTPClient類,分別提供SSH和SFTP功能。2Paramiko模塊–組件Channel類:該類用于創(chuàng)建在SSHTransport上的安全通道。Message類:SSHMessage是字節(jié)流。該類對(duì)字符串、整數(shù)等進(jìn)行編碼。Packetizer類:數(shù)據(jù)包處理類。Transport類:該類用于在現(xiàn)有套接字或類套接字對(duì)象上創(chuàng)建一個(gè)Transport會(huì)話對(duì)象。SFTPClient類:該類通過一個(gè)打開的SSHTransport會(huì)話創(chuàng)建SFTP會(huì)話通道并執(zhí)行遠(yuǎn)程文件操作。SSHClient類:該類是與SSH服務(wù)器會(huì)話的高級(jí)表示,集成了Transport,Channel和SFTPClient類。3.1PythonParamiko模塊密鑰相關(guān)類主要有以下組件:OpenSSH是SSH協(xié)議的免費(fèi)開源實(shí)現(xiàn)。OpenSSH提供了服務(wù)端后臺(tái)程序和客戶端工具。所有的Linux操作系統(tǒng)均集成了OpenSSH。OpenSSH把用戶訪問過每個(gè)計(jì)算機(jī)的公鑰都記錄在~/.ssh/known_hosts。當(dāng)下次訪問相同計(jì)算機(jī)時(shí),OpenSSH會(huì)核對(duì)公鑰。如果公鑰不同,OpenSSH會(huì)發(fā)出警告,避免用戶受到中間人攻擊等。3Paramiko模塊–組件SSHAgent類:該類用于SSH代理。Hostkeys類:該類與OpenSSHknown_hosts文件相關(guān),用于創(chuàng)建一個(gè)hostkeys對(duì)象。Keyhandling類:該類用于創(chuàng)建對(duì)應(yīng)密鑰類型的實(shí)例,如RSA密鑰,DSS(DSA)密鑰。3.1PythonParamiko模塊在Windows主機(jī),打開Win10的命令行CMD,執(zhí)行:pipinstallparamiko命令。建議使用國內(nèi)pip源安裝。測(cè)試paramiko,可以看出paramiko的版本為2.7.24Paramiko模塊安裝C:\Users\Administrator>pipinstallparamiko-i/pypi/simple/--trusted-hostC:\Users\Administrator>pythonPython3.9.6(tags/v3.9.6:db3ff76,Jun282021,15:26:21)[MSCv.192964bit(AMD64)]onwin32Type"help","copyright","credits"or"license"formoreinformation.>>>>>>importparamiko>>>paramiko.__version__'2.7.2'>>>>>>exit()C:\Users\Administrator>項(xiàng)目3使用paramiko實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備自動(dòng)化巡檢3.1Paramiko模塊介紹3.2Paramiko模塊的類3.3Paramiko案例3.2

Paramiko模塊的類SSHClient的作用類似于Linux的SSH命令,是對(duì)SSH會(huì)話的封裝,該類封裝了傳輸(Transport),通道(Channel)及SFTPClient類,通常用于執(zhí)行遠(yuǎn)程命令。SSHClient常用方法如下:1SSHClient類及其方法connect():實(shí)現(xiàn)遠(yuǎn)程服務(wù)器的連接與認(rèn)證,對(duì)于該方法只有hostname是必傳參數(shù)。常用參數(shù):Hostname:

連接的目標(biāo)主機(jī);

port:SSH_PORT指定端口

username:驗(yàn)證的用戶名;

password:驗(yàn)證的用戶密碼

pkey:私鑰方式用于身份驗(yàn)證;key_filename:一個(gè)文件名或文件列表,指定私鑰文件

timeout:可選的tcp連接超時(shí)時(shí)間;compress:是否打開壓縮

allow_agent:是否允許連接到ssh代理,默認(rèn)為True允許

look_for_keys:是否在~/.ssh中搜索私鑰文件,默認(rèn)為True允許3.2

Paramiko模塊的類2SSHClient類及其方法set_missing_host_key_policy():設(shè)置遠(yuǎn)程服務(wù)器沒有在know_hosts文件中記錄時(shí)的應(yīng)對(duì)策略。load_system_host_keys():從系統(tǒng)文件加載主機(jī)密鑰,如果沒有參數(shù),那么就嘗試從用戶本地的“knownhosts”文件中讀取密鑰信息。目前支持三種策略:AutoAddPolicy:自動(dòng)添加主機(jī)名及主機(jī)密鑰到本地HostKeys對(duì)象,不依賴load_system_host_key的配置。即新建立ssh連接時(shí)不需要再輸入yes或no進(jìn)行確認(rèn)WarningPolicy用于記錄一個(gè)未知的主機(jī)密鑰的python警告。并接受,功能上和AutoAddPolicy類似,但是會(huì)提示是新連接RejectPolicy自動(dòng)拒絕未知的主機(jī)名和密鑰,依賴load_system_host_key的配置。此為默認(rèn)選項(xiàng)3.2

Paramiko模塊的類3SSHClient類及其方法exec_command():在遠(yuǎn)程服務(wù)器執(zhí)行Linux命令的方法。invoke_shell():基于SSH會(huì)話連接,啟動(dòng)一個(gè)交互式shell會(huì)話。open_sftp():在當(dāng)前ssh會(huì)話的基礎(chǔ)上創(chuàng)建一個(gè)sftp會(huì)話。該方法會(huì)返回一個(gè)SFTPClient對(duì)象。利用SSHClient對(duì)象的open_sftp()方法,可以直接返回一個(gè)基于當(dāng)前連接的sftp對(duì)象,可以進(jìn)行文件的上傳等操作。如

sftp=client.open_sftp()

sftp.put('test.txt','text.txt')3.2

Paramiko模塊的類SFTPCLient類作為一個(gè)sftp的客戶端對(duì)象,根據(jù)SSH傳輸協(xié)議的sftp會(huì)話,實(shí)現(xiàn)遠(yuǎn)程文件操作,如上傳、下載、權(quán)限、狀態(tài)。常用的方法:4SFTPClient類及其方法from_transport():從開啟的Transport通道創(chuàng)建一個(gè)SFTP客戶端通道。常用到的參數(shù):

T:一個(gè)認(rèn)證過的開啟的Transport會(huì)話;window_size:可選參數(shù),SFTP會(huì)話窗口大小max_packet_size:可選參數(shù),SFTP會(huì)話最大數(shù)據(jù)包大小3.2

Paramiko模塊的類5SFTPClient類及其方法get():將遠(yuǎn)程文件(remotepath)從SFTP服務(wù)器復(fù)制到本地主機(jī)的指定路徑中(localpath),操作引發(fā)的任何異常都將被傳遞。put():將本地文件(localpath)從本地主機(jī)復(fù)制到SFTP服務(wù)器的指定路徑中(remotepath),操作引發(fā)的任何異常都將被傳遞。mkdir()在服務(wù)器上創(chuàng)建目錄remove()在服務(wù)器上刪除目錄rename()在服務(wù)器上重命名目錄stat()查看服務(wù)器文件狀態(tài)listdir()列出服務(wù)器目錄下的文件3.2

Paramiko模塊的類Keyhandling類用于創(chuàng)建對(duì)應(yīng)密鑰類型的實(shí)例,如RSA密鑰,DSS(DSA)密鑰。這個(gè)類包含了密鑰的讀取,寫入等相關(guān)方法。常用方法:6Keyhandling類及其方法RSAKey.from_private_key_file(filename):從文件讀取RSA私鑰來創(chuàng)建密鑰對(duì)象DSSKey.from_private_key_file(filename):從文件讀取DSS私鑰來創(chuàng)建密鑰對(duì)象項(xiàng)目3使用paramiko實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備自動(dòng)化巡檢3.1Paramiko模塊介紹3.2Paramiko模塊的類3.3Paramiko任務(wù)實(shí)施3.3使用Paramiko登錄設(shè)備公司A的網(wǎng)絡(luò)已經(jīng)在正常運(yùn)行?,F(xiàn)在考慮對(duì)運(yùn)行中的網(wǎng)絡(luò)設(shè)備進(jìn)行日常巡檢,除了日常的設(shè)備環(huán)境檢查外,還要檢查設(shè)備基本信息和設(shè)備運(yùn)行狀態(tài)等。本任務(wù)將收集網(wǎng)絡(luò)設(shè)備的版本信息、補(bǔ)丁信息、時(shí)鐘信息、板卡運(yùn)行狀態(tài)、CPU使用率和內(nèi)存使用率以及日志信息,便于分析網(wǎng)絡(luò)運(yùn)行狀態(tài)。如圖2-1所示,本任務(wù)只考慮深圳總部園區(qū)網(wǎng)絡(luò)和服務(wù)器區(qū)網(wǎng)絡(luò),各設(shè)備的IP地址連接參見表2-3。按照公司的整體網(wǎng)絡(luò)規(guī)劃,運(yùn)維工程師將對(duì)深圳總部園區(qū)網(wǎng)絡(luò)和服務(wù)器區(qū)網(wǎng)絡(luò)使用paramiko模塊實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化巡檢,需要完成的任務(wù)如下。

(1)配置并驗(yàn)證SSH服務(wù)端。

(2)使用paramiko登錄設(shè)備。

(3)自動(dòng)執(zhí)行網(wǎng)絡(luò)巡檢的各項(xiàng)命令。項(xiàng)目4使用netmiko發(fā)現(xiàn)網(wǎng)絡(luò)拓?fù)漤?xiàng)目4使用netmiko發(fā)現(xiàn)網(wǎng)絡(luò)拓?fù)?.1Netmiko模塊介紹4.2Netmiko的方法4.3任務(wù)實(shí)施4.1Netmiko模塊Paramiko實(shí)現(xiàn)了SSH2的功能,但它并不是專門為網(wǎng)設(shè)備開的模塊。在用Paramiko和網(wǎng)絡(luò)設(shè)備交互時(shí)并不很簡單和通用。Netmiko基于Paramiko開發(fā)專門處理網(wǎng)絡(luò)設(shè)備的SSH模塊。這個(gè)模塊目前能支持很多廠商設(shè)備SSH連接。1Netmiko模塊-介紹4.1Netmiko模塊Netmiko支持各種設(shè)備。這些設(shè)備分為三類,具體參閱鏈接:https://ktbyers.github.io/netmiko/PLATFORMS.html2Netmiko模塊-介紹定期測(cè)試:在每次NetMiko發(fā)布之前,都會(huì)嘗試對(duì)這組設(shè)備運(yùn)行完整的測(cè)試套件。定期測(cè)試支持平臺(tái),如AristavEOS、CiscoASA、CiscoIOS、CiscoSG300、Linux(更多參閱鏈接網(wǎng)站);有限測(cè)試:有限的測(cè)試意味著配置和顯示操作系統(tǒng)測(cè)試在某個(gè)時(shí)間點(diǎn)通過了該平臺(tái)上的測(cè)試,因此,可以認(rèn)為netmiko可以在這些平臺(tái)是可以工作的。有限測(cè)試支持平臺(tái)如下:HPEComware7、Huawei、IPInfusionOcNOS、JuniperScreenOS等(更多參閱鏈接網(wǎng)站)實(shí)驗(yàn)性:沒有警告過定期測(cè)試和有限測(cè)試,但通過檢查PR,應(yīng)當(dāng)是可以支持的,但是關(guān)于是否完全通過單元測(cè)試或其可靠性如何,沒有足夠的數(shù)據(jù)。實(shí)驗(yàn)室支持平臺(tái)如下:A10、Accedian、Aruba、CienaSAOS、CheckPointGAiA(更多參閱鏈接網(wǎng)站)4.1Netmiko模塊Netmiko基于Paramiko開發(fā)專門處理網(wǎng)絡(luò)設(shè)備的SSH模塊,是網(wǎng)絡(luò)運(yùn)維工程師日常工作中最常用的模塊之一。相對(duì)Paramiko,Netmiko將很多細(xì)節(jié)優(yōu)化和簡化,如不需要導(dǎo)入time模塊做休眠,輸入每條命令不需要在后面加換行符\n,不需要執(zhí)行system-view,quit等命令。方便提取、打印回顯內(nèi)容,還可以配合Jinja2模塊調(diào)用配置模板,以及配合TextFSM、pyATS、Genie等模塊將回顯內(nèi)容以有序的JSON格式輸出,方便過濾和提取出所需的數(shù)據(jù)等3Netmiko模塊–更容易使用4.1Netmiko模塊在Windows主機(jī),打開Win10的命令行CMD,執(zhí)行:pipinstallnetmiko命令。建議使用國內(nèi)pip源安裝。測(cè)試netmiko,可以看出netmiko的版本為3.4.0

4netmiko模塊安裝C:\Users\Administrator>pipinstallnetmiko-i/pypi/simple/--trusted-hostC:\Users\Administrator>pythonPython3.9.6(tags/v3.9.6:db3ff76,Jun282021,15:26:21)[MSCv.192964bit(AMD64)]onwin32Type"help","copyright","credits"or"license"formoreinformation.>>>importnetmiko>>>netmiko.__version__'3.4.0'>>>exit()C:\Users\Administrator>項(xiàng)目4使用netmiko發(fā)現(xiàn)網(wǎng)絡(luò)拓?fù)?.1Netmiko模塊介紹4.2Netmiko的方法4.3Netmiko案例4.2Netmiko方法Netmiko的核心對(duì)象主要是ConnectHandler類。ConnetHandler()用來登錄設(shè)備,包含幾個(gè)必要的參數(shù)和可選參數(shù),必要參數(shù)包括device_type,ip(或host),username和password,可選參數(shù)包括port,secret,use_keys,key_file,conn_timeout等。ConnetHandler()的參數(shù)有2中方式。一種是直接傳入?yún)?shù),一種是通過字典傳入?yún)?shù)。注意,通過字典傳入?yún)?shù)時(shí)要用2個(gè)星號(hào)。1Netmiko登錄設(shè)備方法importnetmikonet_connect=netmiko.ConnectHandler(device_type="huawei",ip="00",username="python",password="Huawei12#$")importnetmikoSW1={"device_type":"huawei","ip":"00","username":"python","password":"Huawei12#$"}#注意:參數(shù)中上2個(gè)星號(hào)net_connect=netmiko.ConnectHandler(**SW1)4.2Netmiko方法Netmiko主要用到3個(gè)方法向設(shè)備做配置:send_command(),send_config_set()以及send_config_from_file();還有一個(gè)不太常用的send_command_timing():send_command()方法:2Netmiko配置設(shè)備方法send_command()只支持向設(shè)備發(fā)送一條命令,通常是`display`之類的查詢、排錯(cuò)命令或者`save`這樣保存配置的命令。發(fā)出命令后,這個(gè)函數(shù)默認(rèn)情況下一直等待,直到接收到設(shè)備的完整回顯內(nèi)容為止。如果超時(shí),則會(huì)返回一個(gè)**OSError**的異常。如果想要指定netmiko從回顯內(nèi)容中讀到需要的內(nèi)容,則需要用到expect_string參數(shù)(expect_string默認(rèn)值為None),如果send_command()從回顯內(nèi)容中讀到了expec

溫馨提示

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

評(píng)論

0/150

提交評(píng)論