網絡自動化運維教程 課件 項目3、4 使用paramiko實現網絡設備自動化巡檢、使用netmiko發現網絡拓_第1頁
網絡自動化運維教程 課件 項目3、4 使用paramiko實現網絡設備自動化巡檢、使用netmiko發現網絡拓_第2頁
網絡自動化運維教程 課件 項目3、4 使用paramiko實現網絡設備自動化巡檢、使用netmiko發現網絡拓_第3頁
網絡自動化運維教程 課件 項目3、4 使用paramiko實現網絡設備自動化巡檢、使用netmiko發現網絡拓_第4頁
網絡自動化運維教程 課件 項目3、4 使用paramiko實現網絡設備自動化巡檢、使用netmiko發現網絡拓_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

項目3使用paramiko實現網絡設備自動化巡檢項目3使用paramiko實現網絡設備自動化巡檢3.1Paramiko模塊介紹3.2Paramiko模塊的類3.3任務實施3.1PythonParamiko模塊SSH是一個是一種用于在不安全網絡上進行安全遠程登錄和實現其他安全網絡服務的協議,OpenSSH是其中一個開源實現。Paramiko是Python實現SSHv2協議的模塊,它支持口令認證和公鑰認證兩種方式??梢詫崿F安全的遠程命令執行、文件傳輸等功能。Paramiko可以使用SSHv2遠程連接到Linux服務器或網絡設備,查看上面的日志狀態,批量配置遠程服務器或設備,文件上傳,文件下載等1Paramiko模塊-介紹3.1PythonParamiko模塊Paramiko模塊中有很多組件,可以歸納為:常用協議類和密鑰相關類。常用協議類主要有以下組件:最常用的兩個類為SSHClient類和SFTPClient類,分別提供SSH和SFTP功能。2Paramiko模塊–組件Channel類:該類用于創建在SSHTransport上的安全通道。Message類:SSHMessage是字節流。該類對字符串、整數等進行編碼。Packetizer類:數據包處理類。Transport類:該類用于在現有套接字或類套接字對象上創建一個Transport會話對象。SFTPClient類:該類通過一個打開的SSHTransport會話創建SFTP會話通道并執行遠程文件操作。SSHClient類:該類是與SSH服務器會話的高級表示,集成了Transport,Channel和SFTPClient類。3.1PythonParamiko模塊密鑰相關類主要有以下組件:OpenSSH是SSH協議的免費開源實現。OpenSSH提供了服務端后臺程序和客戶端工具。所有的Linux操作系統均集成了OpenSSH。OpenSSH把用戶訪問過每個計算機的公鑰都記錄在~/.ssh/known_hosts。當下次訪問相同計算機時,OpenSSH會核對公鑰。如果公鑰不同,OpenSSH會發出警告,避免用戶受到中間人攻擊等。3Paramiko模塊–組件SSHAgent類:該類用于SSH代理。Hostkeys類:該類與OpenSSHknown_hosts文件相關,用于創建一個hostkeys對象。Keyhandling類:該類用于創建對應密鑰類型的實例,如RSA密鑰,DSS(DSA)密鑰。3.1PythonParamiko模塊在Windows主機,打開Win10的命令行CMD,執行:pipinstallparamiko命令。建議使用國內pip源安裝。測試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>項目3使用paramiko實現網絡設備自動化巡檢3.1Paramiko模塊介紹3.2Paramiko模塊的類3.3Paramiko案例3.2

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

連接的目標主機;

port:SSH_PORT指定端口

username:驗證的用戶名;

password:驗證的用戶密碼

pkey:私鑰方式用于身份驗證;key_filename:一個文件名或文件列表,指定私鑰文件

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

allow_agent:是否允許連接到ssh代理,默認為True允許

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

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

Paramiko模塊的類3SSHClient類及其方法exec_command():在遠程服務器執行Linux命令的方法。invoke_shell():基于SSH會話連接,啟動一個交互式shell會話。open_sftp():在當前ssh會話的基礎上創建一個sftp會話。該方法會返回一個SFTPClient對象。利用SSHClient對象的open_sftp()方法,可以直接返回一個基于當前連接的sftp對象,可以進行文件的上傳等操作。如

sftp=client.open_sftp()

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

Paramiko模塊的類SFTPCLient類作為一個sftp的客戶端對象,根據SSH傳輸協議的sftp會話,實現遠程文件操作,如上傳、下載、權限、狀態。常用的方法:4SFTPClient類及其方法from_transport():從開啟的Transport通道創建一個SFTP客戶端通道。常用到的參數:

T:一個認證過的開啟的Transport會話;window_size:可選參數,SFTP會話窗口大小max_packet_size:可選參數,SFTP會話最大數據包大小3.2

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

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

(1)配置并驗證SSH服務端。

(2)使用paramiko登錄設備。

(3)自動執行網絡巡檢的各項命令。項目4使用netmiko發現網絡拓撲項目4使用netmiko發現網絡拓撲4.1Netmiko模塊介紹4.2Netmiko的方法4.3任務實施4.1Netmiko模塊Paramiko實現了SSH2的功能,但它并不是專門為網設備開的模塊。在用Paramiko和網絡設備交互時并不很簡單和通用。Netmiko基于Paramiko開發專門處理網絡設備的SSH模塊。這個模塊目前能支持很多廠商設備SSH連接。1Netmiko模塊-介紹4.1Netmiko模塊Netmiko支持各種設備。這些設備分為三類,具體參閱鏈接:https://ktbyers.github.io/netmiko/PLATFORMS.html2Netmiko模塊-介紹定期測試:在每次NetMiko發布之前,都會嘗試對這組設備運行完整的測試套件。定期測試支持平臺,如AristavEOS、CiscoASA、CiscoIOS、CiscoSG300、Linux(更多參閱鏈接網站);有限測試:有限的測試意味著配置和顯示操作系統測試在某個時間點通過了該平臺上的測試,因此,可以認為netmiko可以在這些平臺是可以工作的。有限測試支持平臺如下:HPEComware7、Huawei、IPInfusionOcNOS、JuniperScreenOS等(更多參閱鏈接網站)實驗性:沒有警告過定期測試和有限測試,但通過檢查PR,應當是可以支持的,但是關于是否完全通過單元測試或其可靠性如何,沒有足夠的數據。實驗室支持平臺如下:A10、Accedian、Aruba、CienaSAOS、CheckPointGAiA(更多參閱鏈接網站)4.1Netmiko模塊Netmiko基于Paramiko開發專門處理網絡設備的SSH模塊,是網絡運維工程師日常工作中最常用的模塊之一。相對Paramiko,Netmiko將很多細節優化和簡化,如不需要導入time模塊做休眠,輸入每條命令不需要在后面加換行符\n,不需要執行system-view,quit等命令。方便提取、打印回顯內容,還可以配合Jinja2模塊調用配置模板,以及配合TextFSM、pyATS、Genie等模塊將回顯內容以有序的JSON格式輸出,方便過濾和提取出所需的數據等3Netmiko模塊–更容易使用4.1Netmiko模塊在Windows主機,打開Win10的命令行CMD,執行:pipinstallnetmiko命令。建議使用國內pip源安裝。測試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>項目4使用netmiko發現網絡拓撲4.1Netmiko模塊介紹4.2Netmiko的方法4.3Netmiko案例4.2Netmiko方法Netmiko的核心對象主要是ConnectHandler類。ConnetHandler()用來登錄設備,包含幾個必要的參數和可選參數,必要參數包括device_type,ip(或host),username和password,可選參數包括port,secret,use_keys,key_file,conn_timeout等。ConnetHandler()的參數有2中方式。一種是直接傳入參數,一種是通過字典傳入參數。注意,通過字典傳入參數時要用2個星號。1Netmiko登錄設備方法importnetmikonet_connect=netmiko.ConnectHandler(device_type="huawei",ip="00",username="python",password="Huawei12#$")importnetmikoSW1={"device_type":"huawei","ip":"00","username":"python","password":"Huawei12#$"}#注意:參數中上2個星號net_connect=netmiko.ConnectHandler(**SW1)4.2Netmiko方法Netmiko主要用到3個方法向設備做配置:send_command(),send_config_set()以及send_config_from_file();還有一個不太常用的send_command_timing():send_command()方法:2Netmiko配置設備方法send_command()只支持向設備發送一條命令,通常是`display`之類的查詢、排錯命令或者`save`這樣保存配置的命令。發出命令后,這個函數默認情況下一直等待,直到接收到設備的完整回顯內容為止。如果超時,則會返回一個**OSError**的異常。如果想要指定netmiko從回顯內容中讀到需要的內容,則需要用到expect_string參數(expect_string默認值為None),如果send_command()從回顯內容中讀到了expec

溫馨提示

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

評論

0/150

提交評論