《路由交換技術(shù)》部署和實(shí)施網(wǎng)絡(luò)自動(dòng)化(任務(wù)1-2-3)_第1頁(yè)
《路由交換技術(shù)》部署和實(shí)施網(wǎng)絡(luò)自動(dòng)化(任務(wù)1-2-3)_第2頁(yè)
《路由交換技術(shù)》部署和實(shí)施網(wǎng)絡(luò)自動(dòng)化(任務(wù)1-2-3)_第3頁(yè)
《路由交換技術(shù)》部署和實(shí)施網(wǎng)絡(luò)自動(dòng)化(任務(wù)1-2-3)_第4頁(yè)
《路由交換技術(shù)》部署和實(shí)施網(wǎng)絡(luò)自動(dòng)化(任務(wù)1-2-3)_第5頁(yè)
已閱讀5頁(yè),還剩40頁(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)介

部署和實(shí)施網(wǎng)絡(luò)自動(dòng)化引例描述本項(xiàng)目將使用Python編程語(yǔ)言,圍繞Python中的telnetlib、paramiko和netmiko模塊編寫(xiě)自動(dòng)化腳本實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化運(yùn)維與管理。按照公司的整體網(wǎng)絡(luò)功能和自動(dòng)化運(yùn)維管理的要求,運(yùn)維部工程師需要完成的任務(wù)如下。(1)使用telnetlib模塊實(shí)現(xiàn)網(wǎng)絡(luò)配置下發(fā)。(2)使用paramiko模塊實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化巡檢。(3)使用netmiko模塊實(shí)現(xiàn)網(wǎng)絡(luò)拓?fù)浒l(fā)現(xiàn)。項(xiàng)目任務(wù)任務(wù)6-1使用telnetlib模塊實(shí)現(xiàn)網(wǎng)絡(luò)配置下發(fā)任務(wù)陳述知識(shí)準(zhǔn)備任務(wù)實(shí)施任務(wù)陳述隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大、復(fù)雜性的增加,網(wǎng)絡(luò)運(yùn)維管理也在發(fā)生非常大的變化,一些傳統(tǒng)的網(wǎng)絡(luò)運(yùn)維技術(shù)及管理方式越來(lái)越不能滿(mǎn)足網(wǎng)絡(luò)發(fā)展及快速、高效運(yùn)維管理的需求。本任務(wù)主要要求讀者夯實(shí)和理解網(wǎng)絡(luò)自動(dòng)化運(yùn)維必要性、SNMP架構(gòu)和工作原理、NTP工作原理和工作模式以及telnetlib模塊的方法和使用等基礎(chǔ)知識(shí),通過(guò)使用telnetlib模塊自動(dòng)下發(fā)網(wǎng)絡(luò)配置,掌握Telnet服務(wù)配置、NTP服務(wù)配置、SNMP配置、Python的基礎(chǔ)語(yǔ)法、Python的數(shù)據(jù)類(lèi)型、Python的文件處理和telnetlib的使用方法等職業(yè)技能,為后續(xù)網(wǎng)絡(luò)自動(dòng)化運(yùn)維做好準(zhǔn)備。知識(shí)準(zhǔn)備1.1自動(dòng)化運(yùn)維簡(jiǎn)介1.2telnetlib模塊1.1自動(dòng)化運(yùn)維簡(jiǎn)介在工作中你是否遇到過(guò)這樣的場(chǎng)景:設(shè)備升級(jí):現(xiàn)網(wǎng)有數(shù)千臺(tái)網(wǎng)絡(luò)設(shè)備,你需要周期性、批量性地對(duì)設(shè)備進(jìn)行升級(jí)。配置審計(jì):企業(yè)年度需要對(duì)設(shè)備進(jìn)行配置審計(jì)。例如要求所有設(shè)備開(kāi)啟sTelnet功能,以太網(wǎng)交換機(jī)配置生成樹(shù)安全功能。你需要快速地找出不符合要求的設(shè)備。配置變更:因?yàn)榫W(wǎng)絡(luò)安全要求,需要每三個(gè)月修改設(shè)備賬號(hào)和密碼。你需要在數(shù)千臺(tái)網(wǎng)絡(luò)設(shè)備上刪除原有賬號(hào)并新建賬號(hào)。傳統(tǒng)的網(wǎng)絡(luò)運(yùn)維工作需要網(wǎng)絡(luò)工程師手動(dòng)登錄網(wǎng)絡(luò)設(shè)備,人工查看和執(zhí)行配置命令,肉眼篩選配置結(jié)果。這種嚴(yán)重依賴(lài)“人”的工作方式操作流程長(zhǎng),效率低下,而且操作過(guò)程不易審計(jì)。網(wǎng)絡(luò)設(shè)備經(jīng)典運(yùn)維場(chǎng)景設(shè)備多!操作煩瑣!效率低!1.1自動(dòng)化運(yùn)維簡(jiǎn)介網(wǎng)絡(luò)自動(dòng)化,通過(guò)工具實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化地部署、運(yùn)行和運(yùn)維,逐步減少對(duì)“人”的依賴(lài)。這能夠很好地解決傳統(tǒng)網(wǎng)絡(luò)運(yùn)維的問(wèn)題。業(yè)界有很多實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化的開(kāi)源工具,例如Ansible、SaltStack、Puppet、Chef等。從網(wǎng)絡(luò)工程能力構(gòu)建的角度考慮,更推薦工程師具備代碼編程能力。PythonChefAnsible網(wǎng)管工具自動(dòng)化腳本SaltStackShell網(wǎng)絡(luò)自動(dòng)化關(guān)鍵詞1.1自動(dòng)化運(yùn)維簡(jiǎn)介近幾年隨著網(wǎng)絡(luò)自動(dòng)化技術(shù)的興起,以Python為主的編程能力成為了網(wǎng)絡(luò)工程師的新技能要求。Python編寫(xiě)的自動(dòng)化腳本能夠很好的執(zhí)行重復(fù)、耗時(shí)、有規(guī)則的操作。網(wǎng)絡(luò)自動(dòng)化能做什么?最直觀的一個(gè)網(wǎng)絡(luò)自動(dòng)化例子就是自動(dòng)化配置設(shè)備。我們可以把這個(gè)過(guò)程分為兩個(gè)步驟:編寫(xiě)配置文件和編寫(xiě)Python代碼將配置文件推送到設(shè)備上。首先用命令行方式寫(xiě)配置腳本,然后通過(guò)Telnet/SSH將它傳到設(shè)備上運(yùn)行。這種方式對(duì)于初學(xué)網(wǎng)絡(luò)編程與自動(dòng)化的網(wǎng)絡(luò)工程師來(lái)說(shuō),比較容易理解。本章節(jié)主要介紹這種方式實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化。網(wǎng)絡(luò)設(shè)備舉例:Python實(shí)現(xiàn)設(shè)備自動(dòng)化配置SysnameSW1Vlan10descriptionAVlan20descriptionBVLAN30descriptionC配置文件SSH/TelnetPython文件1.1自動(dòng)化運(yùn)維簡(jiǎn)介Python是一門(mén)完全開(kāi)源的高級(jí)編程語(yǔ)言。它的作者是GuidoVanRossum。由于Python具有非常豐富的第三方庫(kù),加上Python語(yǔ)言本身的優(yōu)點(diǎn),所以Python可以在非常多的領(lǐng)域內(nèi)使用:人工智能、數(shù)據(jù)科學(xué)、APP、自動(dòng)化運(yùn)維腳本等。Python的優(yōu)點(diǎn):Python擁有優(yōu)雅的語(yǔ)法、動(dòng)態(tài)類(lèi)型具有解釋性質(zhì)。能夠讓學(xué)習(xí)者從語(yǔ)法細(xì)節(jié)的學(xué)習(xí)中抽離,專(zhuān)注于程序邏輯。Python同時(shí)支持面向過(guò)程和面向?qū)ο蟮木幊?。Python擁有豐富的第三方庫(kù)。Python可以調(diào)用其他語(yǔ)言所寫(xiě)的代碼,又被稱(chēng)為膠水語(yǔ)言。Python的缺點(diǎn):運(yùn)行速度慢。Python是解釋型語(yǔ)言,不需要編譯即可運(yùn)行。代碼在運(yùn)行時(shí)會(huì)逐行地翻譯成CPU能理解的機(jī)器碼,這個(gè)翻譯過(guò)程非常耗時(shí)。1.1自動(dòng)化運(yùn)維簡(jiǎn)介Python程序編譯運(yùn)行的過(guò)程操作過(guò)程1、在操作系統(tǒng)上安裝Python和運(yùn)行環(huán)境。2、編寫(xiě)Python源碼。3、編譯器運(yùn)行Python源碼,編譯生成pyc文件(字節(jié)碼)。4、Python虛擬機(jī)將字節(jié)碼轉(zhuǎn)換為機(jī)器語(yǔ)言。5、硬件執(zhí)行機(jī)器語(yǔ)言。編譯器pyc文件(字節(jié)碼)Python虛擬機(jī)運(yùn)行Python源碼1.1自動(dòng)化運(yùn)維簡(jiǎn)介Python有兩種運(yùn)行方式,交互式運(yùn)行和腳本式運(yùn)行。交互式編程不需要?jiǎng)?chuàng)建腳本文件,是通過(guò)Python解釋器的交互模式編寫(xiě)代碼。C:\Users\Richard>pythonPython3.7.4(default,Aug92019,18:34:13)[MSCv.191564bit(AMD64)]::Anaconda,Inc.onwin32Type"help","copyright","credits"or"license"formoreinformation.>>>print("helloworld")helloworld>>>a=1>>>b=2>>>print(a+b)3>>>1.Input--2.Output--3.Input--4.Input--5.Input--6.Output--1.1自動(dòng)化運(yùn)維簡(jiǎn)介腳本模式中的代碼可以在各種Python編譯器或者集成開(kāi)發(fā)環(huán)境上運(yùn)行。例如Python自帶的IDLE、Atom、VisualStudio、Pycharm和Anaconda等。demo.py文件print("helloworld")a=1b=2print(a+b)C:\Users\Richard>pythondemo.pyhelloworld3編寫(xiě)Python腳本文件(.py)執(zhí)行腳本文件121.Input--2.Output--3.Output--1.2telnetlib模塊在Python項(xiàng)目開(kāi)發(fā)過(guò)程中,功能需求會(huì)越來(lái)越多,從而代碼也會(huì)越來(lái)越多,如果所有的代碼全部寫(xiě)在一個(gè).py的Python文件里面,代碼可讀性很差,也不容易維護(hù)。因此,Python提出了模塊的概念。如果將一些經(jīng)常使用的函數(shù)存儲(chǔ)到與主程序分離的文件中,在任何程序中都可以調(diào)用,則使用起來(lái)會(huì)更加方便,在Python中,這種文件就稱(chēng)為模塊。對(duì)于模塊我們可以使用import或者from...import語(yǔ)句引入模塊。本任務(wù)中,涉及的模塊主要有elnetlib模塊。1.2telnetlib模塊telnetlib是Python標(biāo)準(zhǔn)庫(kù)中的模塊。它提供了實(shí)現(xiàn)Telnet功能的類(lèi)telnetlib.Telnet。這里通過(guò)調(diào)用telnetlib.Telnet類(lèi)里的不同方法實(shí)現(xiàn)不同功能。fromtelnetlibimportTelnettn=Telnet(host=None,port=0[,timeout])tn.read_all()…導(dǎo)入telnetlib模塊Telnet類(lèi)--Telnet連接到指定服務(wù)器上--調(diào)用read_all()方法--方法功能Telnet.read_until(expected,timeout=None)讀取直到給定的字符串expected或超時(shí)秒數(shù)。Telnet.read_all()讀取所有數(shù)據(jù)直到EOF(EndOfFile)。阻塞直到連接關(guān)閉。Telnet.read_very_eager()讀取從上次IO阻斷到現(xiàn)在所有的內(nèi)容,返回字節(jié)串。連接關(guān)閉或者沒(méi)有數(shù)據(jù)時(shí)觸發(fā)EOFError異常。Telnet.write(buffer)寫(xiě)入數(shù)據(jù)。在套接字(Socket)上寫(xiě)一個(gè)字節(jié)串,加倍任何IAC(InterpretAsCommand)字符。Telnet.close()關(guān)閉連接。1.2telnetlib模塊案例:使用telnetlib登陸設(shè)備現(xiàn)有一臺(tái)網(wǎng)絡(luò)設(shè)備作為T(mén)elnet服務(wù)器,需要實(shí)現(xiàn)使用Pythontelnetlib作為T(mén)elnet客戶(hù)端登錄此設(shè)備。實(shí)現(xiàn)過(guò)程分為四個(gè)步驟:配置設(shè)備Telnet服務(wù)。手動(dòng)驗(yàn)證和查看Telnet登錄步驟,作為代碼實(shí)現(xiàn)的參考。編寫(xiě)和運(yùn)行Python代碼。驗(yàn)證結(jié)果。GE1/0/1000Telnet服務(wù)器Telnet客戶(hù)端配置設(shè)備Telnet查看Telnet登陸步驟編寫(xiě)Python代碼結(jié)果驗(yàn)證1.2telnetlib模塊[Huawei]user-interfacevty04[Huawei-ui-vty0-4]authentication-modepassword[Huawei-ui-vty0-4]setauthenticationpasswordsimpleHuawei@123[Huawei-ui-vty0-4]protocolinboundtelnet[Huawei-ui-vty0-4]userprivilegelevel15[Huawei-ui-vty0-4]quit[Huawei]telnetserverenable[Huawei]interfaceGE1/0/0[Huawei-GE1/0/0]ipadd024[Huawei-GE1/0/0]quitGE1/0/1000Telnet服務(wù)器Telnet客戶(hù)端配置設(shè)備接口地址:配置設(shè)備Telnet服務(wù):配置設(shè)備Telnet查看Telnet登陸步驟編寫(xiě)Python代碼結(jié)果驗(yàn)證1.2telnetlib模塊C:\Users\Richard>telnet0LoginauthenticationPassword:Info:ThemaxnumberofVTYusersis5,andthenumberofcurrentVTYusersonlineis1.Thecurrentlogintimeis2020-01-1521:12:57.<Huawei>GE1/0/1000Telnet服務(wù)器Telnet客戶(hù)端Telnet登錄操作:登錄命令--

回顯信息--輸入密碼--回顯信息--12配置設(shè)備Telnet查看Telnet登陸步驟編寫(xiě)Python代碼結(jié)果驗(yàn)證1.2telnetlib模塊importtelnetlibhost='0'password='Huawei@123'tn=telnetlib.Telnet(host)tn.read_until(b’Password:’)tn.write(password.encode('ascii')+b"\n")print(tn.read_until(b'<Huawei>').decode('ascii’))tn.close()GE1/0/1000Telnet服務(wù)器Telnet客戶(hù)端導(dǎo)入模塊定義登錄設(shè)備IP定義登錄設(shè)備密碼Telnet登錄到主機(jī)讀取直到回顯信息為”P(pán)assword:”

輸入編碼為ASCII的密碼并換行輸出讀取直到到”<Huawei>”的信息關(guān)閉Telnet連接配置設(shè)備Telnet查看Telnet登陸步驟編寫(xiě)Python代碼結(jié)果驗(yàn)證--

--------------1.2telnetlib模塊#編譯器運(yùn)行Python代碼Info:ThemaxnumberofVTYusersis5,andthenumberofcurrentVTYusersonlineis1.Thecurrentlogintimeis2020-01-1522:12:57.<Huawei>配置設(shè)備Telnet查看Telnet登陸步驟編寫(xiě)Python代碼手動(dòng)Telnet登錄結(jié)果:C:\Users\Richard>telnet0LoginauthenticationPassword:Info:ThemaxnumberofVTYusersis5,andthenumberofcurrentVTYusersonlineis1.Thecurrentlogintimeis2020-01-1521:12:57.<Huawei>結(jié)果驗(yàn)證Python代碼運(yùn)行結(jié)果:任務(wù)實(shí)施工程師需要完成的任務(wù)如下。(1)手動(dòng)在路由器SZ1和SZ2,交換機(jī)S1、S2和S4上配置Telnet服務(wù),Telnet登錄用戶(hù)名為python,密碼為Huawei12#$。(2)使用telnetlib在所有路由器和交換機(jī)上配置運(yùn)維用戶(hù),用戶(hù)級(jí)別為1,用戶(hù)名為yunwei_001,密碼為Huawei@123(3)手動(dòng)配置ISP路由器作為NTP的時(shí)鐘源,使用IP地址為,配置路由器SZ2作為深圳總部園區(qū)網(wǎng)絡(luò)和服務(wù)器區(qū)網(wǎng)絡(luò)所有設(shè)備的NTP服務(wù)器,IP地址是,使用telnetlib在所有路由器和交換機(jī)下發(fā)NTP配置,與其進(jìn)行時(shí)間同步。(4)使用telnetlib在所有路由器和交換機(jī)上配置SNMPv3,SNMPv3用戶(hù)名為user01,所屬組名為group01,鑒別方式為SHA,鑒別密碼為Huawei@123,加密方式為AES128,加密密碼為Huawei@123。1.提供了USM的認(rèn)證加密和VACM的SNMP版本是()。A.v3 B.v2 C.v2c D.v12.在使用telnetlib模塊時(shí)傳遞的是()。A.列表 B.字符串 C.字典 D.字節(jié)串3.NTP工作模式有()。A.組播模式 B.對(duì)等體模式C.廣播模式 D.單播客戶(hù)端/服務(wù)器模式4.Python在文件處理時(shí)需要下面()步驟。A.打開(kāi)文件 B.文件讀寫(xiě)操作 C.關(guān)閉文件 D.保存文件5.Python中,下面()數(shù)據(jù)類(lèi)型是不可變類(lèi)型。A.?dāng)?shù)字(Number) B.字符串(String)C.元組(Tuple) D.字典(Dict)任務(wù)6-2使用paramiko模塊實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化巡檢任務(wù)陳述知識(shí)準(zhǔn)備任務(wù)實(shí)施任務(wù)陳述本任務(wù)主要要求讀者夯實(shí)和理解網(wǎng)絡(luò)設(shè)備巡檢的意義和任務(wù)、paramiko模塊功能和組件、SSHClient類(lèi)和SFTPClient類(lèi)等基礎(chǔ)知識(shí),通過(guò)使用paramiko模塊實(shí)現(xiàn)自動(dòng)化巡檢,掌握網(wǎng)絡(luò)基本信息的收集、設(shè)備運(yùn)行狀態(tài)信息的收集、SSH服務(wù)的配置和paramiko模塊的使用方法等職業(yè)技能,為后續(xù)網(wǎng)絡(luò)自動(dòng)化運(yùn)維做好準(zhǔn)備。知識(shí)準(zhǔn)備2.1Paramiko模塊2.1Paramiko模塊Paramiko簡(jiǎn)介Paramiko是Python語(yǔ)言編寫(xiě)的支持以加密和認(rèn)證方式,進(jìn)行遠(yuǎn)程控制模塊;它遵循SSH2協(xié)議,使用Paramiko可以方便地通過(guò)SSH協(xié)議執(zhí)行遠(yuǎn)程主機(jī)的程序或腳本。Paramiko有兩個(gè)重要的基礎(chǔ)類(lèi):Channel類(lèi)和Transport類(lèi)。Channel類(lèi):是對(duì)SSH2Channel的抽象類(lèi),作用類(lèi)似于套接字(Socket),是SSH傳輸?shù)陌踩ǖ?。常用的方法有:execcommand()、exit_status_ready()、recv_exit_status()、close()等。Transport類(lèi):是核心協(xié)議的實(shí)現(xiàn)類(lèi),是一種加一個(gè)加密的流隧道。常用的方法有:send()、recv()、close()等密的會(huì)話(huà),使用時(shí)會(huì)同步創(chuàng)建。2.1Paramiko模塊Paramiko核心組件SSHClient類(lèi)SSHClient類(lèi)封裝了Transport類(lèi)、Channel類(lèi)及SFTPClient類(lèi),通常用于執(zhí)行遠(yuǎn)程命令。常用的方法有connect、exec_command、set_missing_host_policyconnect方法用于實(shí)現(xiàn)遠(yuǎn)程SSH連接并進(jìn)行校驗(yàn)。其中,hostname(str類(lèi)型)參數(shù)表示連接的目標(biāo)主機(jī)地址;port(int類(lèi)型)參數(shù)表示連接目標(biāo)主機(jī)的端口,默認(rèn)為22;username(str類(lèi)型)參數(shù)表示校驗(yàn)的用戶(hù)名(默認(rèn)為當(dāng)前的本地用戶(hù)名);password(str類(lèi)型)參數(shù)表示密碼用于身份校驗(yàn)或解鎖私鑰;timeout(float類(lèi)型)參數(shù)表示連接超時(shí)時(shí)間(以秒為單位),為可選項(xiàng)。connect(hostname,port=22,username=None,password=None,timeout=None)2.1Paramiko模塊Paramiko核心組件(續(xù))SSHClient類(lèi)exec_command方法為遠(yuǎn)程命令執(zhí)行方法,該命令的輸入與輸出流為標(biāo)準(zhǔn)輸入(stdin)、輸出(stdout)、錯(cuò)誤(stderr)的Python文件對(duì)象。其中,command(str類(lèi)型)參數(shù)表示執(zhí)行的命令串;bufsize(int類(lèi)型)參數(shù)表示文件緩沖區(qū)大小,默認(rèn)為-1(不限制)。load_system_host_keys方法用于加載本地公鑰校驗(yàn)文件。其中,filename(str類(lèi)型)參數(shù)指定遠(yuǎn)程主機(jī)公鑰記錄文件。exec_command(command,bufsize=-1,timeout=None)load_system_host_keys(self,filename=None)2.1Paramiko模塊Paramiko核心組件(續(xù))SSHClient類(lèi)(續(xù))set_missing_host_policy方法用于設(shè)置連接的遠(yuǎn)程主機(jī)沒(méi)有主機(jī)密鑰或HostKeys對(duì)象時(shí)的策略,目前支持三種,分別是AutoAddPolicy、RejectPolicy(默認(rèn))、WarningPolicy,僅限用于SSHClient類(lèi)。其中,AutoAddPolicy,目標(biāo)添加主機(jī)名及主機(jī)密鑰到本地HostKeys對(duì)象,并將其保存,不依賴(lài)load_system_host_keys()的配置;RejectPolicy,自動(dòng)拒絕未知的主機(jī)名和密鑰,依賴(lài)load_system_host_keys()的配置;WarningPolicy,用于記錄一個(gè)未知的主機(jī)密鑰的Python警告,并接收它,功能上AutoAddPolicy相似,但未知主機(jī)會(huì)有告警。invoke_shell方法在SSH服務(wù)端創(chuàng)建一個(gè)交互式的shell。set_missing_host_policys(AutoAddPolicy/RejectPolicy/WarningPolicy/)invoke_shell()2.1Paramiko模塊Paramiko模塊核心組件SFTPClient類(lèi)SFTPClient封裝了SFTP客戶(hù)端,主要用來(lái)實(shí)現(xiàn)執(zhí)行遠(yuǎn)程文件操作(文件上傳、下載、修改文件權(quán)限等)。常用的方法有:from_transport、put和get。from_transport方法用來(lái)創(chuàng)建一個(gè)已連通的SFTP客戶(hù)端通道。其中,t(transport)參數(shù)表示一個(gè)已通過(guò)驗(yàn)證的傳輸對(duì)象。put方法用于上傳本地文件到遠(yuǎn)程SFTP服務(wù)端。其中,localpath(str類(lèi)型)參數(shù)表示需上傳的本地文件(源);remotepath(str類(lèi)型)參數(shù)表示遠(yuǎn)程路徑(目標(biāo));callback(funcation(int,int))參數(shù)表示獲取已接收的字節(jié)數(shù)及總傳輸字節(jié)數(shù),以便回調(diào)函數(shù)調(diào)用,默認(rèn)為None;confirm(bool類(lèi)型)參數(shù)表示文件上傳完畢后是否調(diào)用stat()方法,以便確認(rèn)文件的大小。from_transport(cls,t)put(localpath,remotepath,callback=None,confirm=True)2.1Paramiko模塊Paramiko核心組件SFTPClient類(lèi)(續(xù))SFTPClient封裝了SFTP客戶(hù)端,主要用來(lái)實(shí)現(xiàn)執(zhí)行遠(yuǎn)程文件操作(文件上傳、下載、修改文件權(quán)限等)。常用的方法有:from_transport、put和get。get方法用于從遠(yuǎn)程SFTP服務(wù)端下載文件到本地。其中,remotepath(str類(lèi)型)參數(shù)表示需要下載的遠(yuǎn)程文件(源);localpath(str類(lèi)型)參數(shù)表示本地路徑(目標(biāo));callback(funcation(int,int)),獲取已接收的字節(jié)數(shù)及總和傳輸字節(jié)數(shù),以便回調(diào)函數(shù)調(diào)用,默認(rèn)為None。get(remotepath,localpath,callback=None)2.1Paramiko模塊Paramiko模塊安裝在使用Python編程的過(guò)程中,我們會(huì)經(jīng)常用到第三方庫(kù)包,而pip作為Python最優(yōu)秀的包管理工具之一,可以方便Python庫(kù)包的安裝管理。Python2.7.9以上或Python3.4以上版本自帶pip工具,在命令行中輸入【pip--version】命令,如果有相關(guān)的版本信息,則說(shuō)明pip工具已經(jīng)安裝,可以直接使用。安裝完成后,進(jìn)入Python解釋器,導(dǎo)入Paramiko模塊,如果沒(méi)有報(bào)錯(cuò),就說(shuō)明Paramiko模塊安裝成功。pipinstallparamikoPythonimportparamiko2.1Paramiko模塊Paramiko應(yīng)用舉例使用SSHClient連接并配置交換機(jī)importparamikoimporttimeip="1"username="admin"password="Huawei@123"\\創(chuàng)建交換機(jī)登陸信息變量ssh=paramiko.SSHClient()\\創(chuàng)建SSH對(duì)象ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())\\允許連接不在know_hosts文件中的主機(jī)ssh.connect(hostname=ip,port=22,username=username,password=password)\\SSH方式連接交換機(jī)print("成功連接",ip)2.1Paramiko模塊Paramiko應(yīng)用舉例(續(xù))使用SSHClient連接并配置交換機(jī)(續(xù))command=ssh.invoke_shell()\\調(diào)用交換機(jī)命令行command.send("sys\n")command.send("sysnameHW_Switch\n")command.send("interfaceloopback0\n")command.send("ipaddress24\n")command.send("return\n")command.send("save\n")command.send("y\n")\\發(fā)送配置命令time.sleep(3)output=command.recv(65535)print(output)\\設(shè)置等待時(shí)間并打印回顯內(nèi)容ssh.close()\\關(guān)閉連接通過(guò)SSH方式成功連接交換機(jī)后,我們需要調(diào)用paramiko.SSHClient()下面的invoke.shell()來(lái)喚醒shell,也就是華為交換機(jī)的VRP命令行,并將它賦值給變量command,之后調(diào)用invoke.shell()下面的command()函數(shù),向交換機(jī)發(fā)送配置命令。Python是一次性執(zhí)行腳本命令的,中間沒(méi)有時(shí)間間隔,這樣就會(huì)導(dǎo)致某些命令遺漏和回顯內(nèi)容不完整的問(wèn)題。我們?cè)谑褂胷ecv()函數(shù)將回顯結(jié)果保存之前,需要調(diào)用time模塊下的sleep()函數(shù)手動(dòng)讓Python停止3秒鐘,這樣回顯內(nèi)容才能被完整地打印出來(lái)。這里的command.recv(65535)中的65535代表截取65535個(gè)字符的回顯內(nèi)容。對(duì)交換機(jī)配置完畢后,使用close()方法退出SSH連接。2.1Paramiko模塊Paramiko應(yīng)用舉例使用SFTPClinent上傳和下載文件importparamiko\\導(dǎo)入paramiko模塊tran=paramiko.Transport("0",22)\\獲取Transport實(shí)例tran.connect(username="root",password="Huawei@123")\\連接遠(yuǎn)程服務(wù)器print("連接成功")sftp=paramiko.SFTPClient.from_transport(tran)\\獲取SFTPClient實(shí)例put_localpath="D:/Python/upload/upload.py"put_remotepath="/home/upload“\\設(shè)置上傳的本地/遠(yuǎn)程文件路徑變量2.1Paramiko模塊Paramiko應(yīng)用舉例(續(xù))使用SFTPClinent上傳和下載文件(續(xù))get_remotepath='/home/download/download.py’get_localpath='D:/Python/download’\\設(shè)置下載的本地/遠(yuǎn)程文件路徑變量sftp.put(put_localpath,put_remotepath)\\執(zhí)行上傳動(dòng)作并上傳文件到遠(yuǎn)程服務(wù)器sftp.get(get_localpath,get_remotepath)\\執(zhí)行下載動(dòng)作并從遠(yuǎn)程服務(wù)器下載文件tran.close()\\關(guān)閉通道任務(wù)實(shí)施工程師需要完成的任務(wù)如下。(1)配置SSH服務(wù)端。(2)使用paramiko登錄設(shè)備。(3)自動(dòng)執(zhí)行網(wǎng)絡(luò)巡檢的各項(xiàng)命令。1.下面()命令可以檢查設(shè)備運(yùn)行狀態(tài)。A.displaycpu-usage B.displayplatformC.displaydevice D.displaydiaglog2.在檢查CPU狀態(tài)時(shí),如果出現(xiàn)CPU占用率長(zhǎng)時(shí)間超過(guò)(),建議重點(diǎn)關(guān)注。A.60% B.70% C.90% D.80%3.SSH支持下面()驗(yàn)證方式。A.密碼驗(yàn)證 B.密鑰驗(yàn)證 C.指紋驗(yàn)證 D.一次性驗(yàn)證4.paramiko模塊組件中常見(jiàn)協(xié)議類(lèi)有()。A.SSHClient B.SFTPClient C.Transport D.Channel5.paramiko模塊組件中密鑰相關(guān)類(lèi)有()。A.

溫馨提示

  • 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)論