《網(wǎng)絡系統(tǒng)建設與運維》課件-第11章 網(wǎng)絡自動化運維_第1頁
《網(wǎng)絡系統(tǒng)建設與運維》課件-第11章 網(wǎng)絡自動化運維_第2頁
《網(wǎng)絡系統(tǒng)建設與運維》課件-第11章 網(wǎng)絡自動化運維_第3頁
《網(wǎng)絡系統(tǒng)建設與運維》課件-第11章 網(wǎng)絡自動化運維_第4頁
《網(wǎng)絡系統(tǒng)建設與運維》課件-第11章 網(wǎng)絡自動化運維_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第11章網(wǎng)絡自動化運維學習目標了解Python運維常用庫和常用語法;掌握通過Python代碼管控網(wǎng)絡設備的配置;掌握通過Python代碼備份網(wǎng)絡設備運行配置應用。網(wǎng)絡自動運維實踐項目背景項目規(guī)劃設計項目測試拓撲規(guī)劃規(guī)劃表任務1自動化修改網(wǎng)絡設備密碼的配置任務2定時自動化備份網(wǎng)絡設備配置項目需求分析項目實施項目相關知識一、項目背景1、背景1)通過項目10的建設,Jan16公司新建的辦公大樓的現(xiàn)有網(wǎng)絡架構已經(jīng)能滿足日常辦公需求,項目轉入運維階段。為滿足運維需求,公司在網(wǎng)管計算機已預裝好CentOS7.0,規(guī)劃通過Python進行網(wǎng)絡自動運維,因此對網(wǎng)絡管理員部署了如下任務:項目轉運維后,公司管理員應馬上修改所有網(wǎng)絡設備的管理密碼;每天凌晨1點對所有網(wǎng)絡設備執(zhí)行一次配置的自動備份。一、項目背景2、Jan16公司網(wǎng)絡拓撲二、項目需求分析1、公司實際需求分析1)根據(jù)公司實際需求,管理員需要對這批設備的密碼進行批量修改,并定期對設備配置做備份。在本項目中,可以在網(wǎng)管計算機上使用Python腳本加載Paramiko模塊,然后通過SSH協(xié)議批量修改網(wǎng)絡設備的登錄密碼。2)公司還有定期備份配置這樣的工作計劃性的工作,可以調用網(wǎng)管計算機上的計劃任務程序,讓計算機按計劃執(zhí)行特定的Python腳本來實現(xiàn)。2、本項目實施具體工作任務分析1)使用Python完成自動化修改網(wǎng)絡設備的管理密碼;2)使用Python和計劃任務完成網(wǎng)絡設備的每日備份。三、項目相關知識1、Python模塊三、項目相關知識2、網(wǎng)絡運維常見Python腳本案例1)案例11-1:通過getpass模塊提示用戶輸入密碼并將用戶輸入的密碼賦值給a對象:2)案例11-2:通過time模塊暫停執(zhí)行程序60s:3)案例11-3:通過datetime模塊將當前時間賦值給a,以日-月-年時:分的形式回顯出來:importgetpassa=getpass.getpass('pleaseinputpassword:')importtimetime.sleep(60)importdatetimeimportdatetimea=datetime.now()print"a.day+"-"+a.month+"-"+a.year+""+a.hour+":"+"a.minute""三、項目相關知識4)案例11-4:通過telnetlib模塊的連接IP為的華為網(wǎng)絡設備并發(fā)送【system-view】命令進入系統(tǒng)視圖。其中telnet用戶名為admin,密碼為Huawei123importtelnetlibip=""user="admin"password="Huawei123"tn=telnetlib.Telnet(ip)tn.read_until("Username:")tn.write(user+"\n")tn.read_until("Password:")tn.write(password+"\n")tn.write("system-view"+"\n")三、項目相關知識5)案例11-5:通過Paramiko模塊連接IP為的華為網(wǎng)絡設備并發(fā)送【system-view】命令進入系統(tǒng)視圖。其中SSH用戶名為admin,密碼為Huawei1234importparamikousername="admin"password="Huawei1234"ip=""ssh_client=paramiko.SSHClient()ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh_client.connect(hostname=ip,username=username,password=password)command=ssh_client.invoke_shell()command.send("system-view"+"\n")三、項目相關知識6)案例11-6:調用open()相關函數(shù),以讀寫模式打開名為backup.txt的文件,并寫入“abcd”內容后再讀取出來:a=open('backup.txt','a+')a.write('abcd')a.close()a.read()四、項目拓撲1、公司網(wǎng)絡拓撲規(guī)劃如下圖所示五、規(guī)劃表所屬區(qū)域設備類型型號設備命名園區(qū)網(wǎng)路由器AR2220R2核心機房路由器AR2220R1三層交換機S5700SW1三層交換機S5700SW2項目管理部二層交換機S3700SW3財務部二層交換機S3700SW4服務器群網(wǎng)管計算機RH2288Manage1、設備規(guī)劃表五、規(guī)劃表本端設備本端端口端口配置對端設備對端端口SW2GE0/0/10VLAN90Manageeth0Manageeth0VLAN90SW2GE0/0/102、端口互聯(lián)規(guī)劃五、規(guī)劃表設備命名接口IP地址用途SW1VLANIF100/24設備管理地址SW2VLANIF100/24設備管理地址SW3VLANIF100/24設備管理地址SW4VLANIF100/24設備管理地址Manageeth0DHCP設備管理地址3、IP規(guī)劃表五、規(guī)劃表型號設備命名SSH用戶名舊密碼新密碼用戶等級VTY認證方式S5700SW1adminHwEdu12#$Jan16@Hw15AAAS5700SW2adminHwEdu12#$Jan16@Hw15AAAS3700SW3adminHwEdu12#$Jan16@Hw15AAAS3700SW4adminHwEdu12#$Jan16@Hw15AAA4、SSH服務規(guī)劃六、項目實施本次項目中,具體涉及以下工作任務。任務1自動化修改網(wǎng)絡設備登錄密碼的配置,主要在網(wǎng)管計算機上編寫Python腳本,實現(xiàn)批量自動更改網(wǎng)絡設備的登錄密碼。任務2定期自動化備份網(wǎng)絡設備配置,主要需要運用Python自動化運維的相關知識在網(wǎng)管計算機上編寫Python腳本讀取網(wǎng)絡設備的運行配置并以規(guī)劃好的文件命名格式(“年-月-日-IP.txt”)保存到/root/backup目錄下,并配置系統(tǒng)計劃任務程序實現(xiàn)每天凌晨1點自動執(zhí)行一次。七、任務1自動化修改網(wǎng)絡設備密碼的配置1、配置過程1)在網(wǎng)管計算機聯(lián)網(wǎng)狀態(tài)下安裝paramiko;[root@manage~]#curl“https://bootstrap.pypa.io/get-pip.py”-o“get-pip.py”//獲取pip安裝腳本[root@manage~]#pythonget-pip.py//安裝pip工具[root@manage~]#pipinstallparamiko//通過pip安裝python第三方模塊paramiko七、任務1自動化修改網(wǎng)絡設備密碼的配置2)編寫Python腳本【changepassword.py】,實現(xiàn)對交換機SW1~SW4的密碼修改:[root@manage~]#vichangepassword.py##導入paramiko、time、getpass模塊importparamikoimporttimeimportgetpass##通過raw_input()函數(shù)獲取用戶輸入的SSH用戶名并賦值給usernameusername=raw_input('Username:')##通過getpass模塊中的getpass()函數(shù)獲取用戶輸入字符串作為密碼賦值給passwordpassword=getpass.getpass('Password:')##通過foriinrange(1,5)和ip="192.168.100."+str(i)語句實現(xiàn)循環(huán)登錄交換機SW1-SW4foriinrange(1,5):ip="192.168.100."+str(i)ssh_client=paramiko.SSHClient()ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh_client.connect(hostname=ip,username=username,password=password)command=ssh_client.invoke_shell()......續(xù)下一頁......七、任務1自動化修改網(wǎng)絡設備密碼的配置

......續(xù)上一頁腳本的內容......##調度交換機命令行執(zhí)行命令command.send("system-view"+"\n")command.send("aaa"+"\n")command.send("local-useradminpasswordcipherJan16@Hw"+"\n")##更改登錄密碼結束后,返回用戶視圖并保存配置command.send("return"+"\n")command.send("save"+"\n")command.send("Y"+"\n")command.send("\n")##暫停2秒,并將命令執(zhí)行過程賦值給output對象,通過printoutput語句回顯內容time.sleep(2)output=command.recv(65535)printoutput##退出SSHssh_client.close()七、任務1自動化修改網(wǎng)絡設備密碼的配置3)在網(wǎng)管計算機執(zhí)行腳本【changepassword.py】:[root@manage~]#pythonchangepassword.py

//調度python執(zhí)行腳本Username:admin

//手動輸入SSH用戶名,這里是adminPassword://手動輸入SSH用戶密碼,這里是HwEdu12#$七、任務1自動化修改網(wǎng)絡設備密碼的配置2、任務驗證1)在網(wǎng)管計算機查看腳本的回顯內容:Info:ThemaxnumberofVTYusersis5,andthenumberofcurrentVTYusersonlineis1.Thecurrentlogintimeis2020-01-1815:12:48.<SW1>system-viewEntersystemview,returnuserviewwithCtrl+Z.[SW1]aaa[SW1-aaa]local-useradminpasswordcipherJan16@Hw[SW1-aaa]return<SW1>saveThecurrentconfigurationwillbewrittentothedevice.Areyousuretocontinue?[Y/N]YNowsavingthecurrentconfigurationtotheslot0.Savetheconfigurationsuccessfully.<SW1>……省略部分內容……七、任務1自動化修改網(wǎng)絡設備密碼的配置2)在網(wǎng)管計算機使用【sshadmin@】命令重新連接SW1[root@manage~]#sshadmin@admin@‘spassword://這里輸入新密碼Jan16@HwInfo:ThemaxnumberofVTYusersis5,andthenumberofcurrentVTYusersonlineis2.Thecurrentlogintimeis2020-01-1815:15:48.<SW1>八、任務2定時自動化備份網(wǎng)絡設備配置1、配置過程1)在網(wǎng)管計算機創(chuàng)建備份交換機運行配置的腳本【backup.py】;[root@manage~]#vibackup.py##導入paramiko、time、datetime等模塊importparamikoimporttimefromdatetimeimportdatetime##設置SSH用戶名和密碼,需要注意這里的密碼是新密碼username="admin"password="Jan16@Hw"##通過for語句遍歷i的值為1/2/3/4,結合ip="192.168.100."+str(i)語句循環(huán)SSH登錄交換機設備foriinrange(1,5):ip="192.168.100."+str(i)ssh_client=paramiko.SSHClient()ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh_client.connect(hostname=ip,username=username,password=password)command=ssh_client.invoke_shell()……續(xù)下一頁內容……八、任務2定時自動化備份網(wǎng)絡設備配置

##設置回顯內容不分屏顯示

command.send("screen-length0temporary"+"\n")##獲取交換機運行配置

output=(command.send("displaycurrent-configuration"+"\n"))##程序暫停2秒

time.sleep(2)##讀取當前時間

now=datetime.now()##打開備份文件

backup=open("/root/backup/"+str(now.year)+"-"+str(now.month)+"-"+str(now.day)+"-"+ip+".txt","a+")##將查詢運行配置的回顯內容賦值給recv這個對象

recv=command.recv(65535)##將回顯內容寫入backup這個對象,相當于寫入了備份文件中

backup.write(recv)##關閉打開的文件

backup.close()##結束,斷開SSH連接ssh_client.close()八、任務2定時自動化備份網(wǎng)絡設備配置2)配置計劃任務實現(xiàn)每天凌晨1點自動執(zhí)行腳本進行備份[root@manage~]#vi/etc/crontab//編輯計劃任務配置文件##在文件末尾填入下列內容后退出001***rootpython/root/backup.py[root@manage~]#mkdir/root/backup

//新建/root/backup文件夾[root@manage~]#systemctlrestartcrond//重啟crond計劃任務服務[root@manage~]#systemctlenablecrond//設置計劃任務服務開機自啟動八、任務2定時自動化備份網(wǎng)絡設備配置2、任務驗證1)凌晨1點后在網(wǎng)管計算機上使用【ls-l/root/backup】查看/root/backup目錄下的文件。[root@manage~]#ls-l/root/backuptotal28-rw-r--r--.1rootroot2924Jan1901:002020-1-19-.txt-rw-r--r--.1rootroot4281Jan1901:002020-1-19-.txt-rw-r--r--.1rootroot4188Jan1901:002020-1-19-.txt-rw-r--r--.1rootroot4238Jan1901:002020-1-19-.txt八、任務2定時自動化備份網(wǎng)絡設備配置2)查看設備備份的備份文件,以2020-1-19-.txt為例。[root@manage~]#cat/root/backup/2020-1-19-.txtInfo:ThemaxnumberofVTYusersis5,andthenumberofcurrentVTYusersonlineis1.Thecurrentlogintimeis2020-01-1909:47:04.<SW1>screen-length0temporaryInfo:Theconfigurationtakeseffectonthecurrentuserterminalinterfaceonly.<SW1>displaycurrent-configuration#sysnameSW1#vlanbatch1020100201#stpmoderstpstpinstance0priority4096……省略部分內容……九、項目測試1、在網(wǎng)管計算機使用【sshadmin@】命令重新連接SW1,用戶輸入新密碼才可以正常ssh登錄設備[root@manage~]#sshadmin@admin@‘spassword://這里輸入新密碼Jan16@HwInfo:ThemaxnumberofVTYusersis5,andthenumberofcurrentVTYusersonlineis2.Thecurrentlogintimeis2020-01-1815:17:02.<SW1>九、項目測試2、在網(wǎng)管計算機上使用【date-s"00:592020-1-20"】命令修改系統(tǒng)時間為新一天凌晨0點59分,1分鐘后再使用【ls-l/root/backup】命令查看/root/backup目錄下的文件,將能查看到新一天的備份已經(jīng)生成。[root@manage~]#date-s"00:592020-1-20"MonJan2000:59CST2020[root@manage~]#ls-l/root/backuptotal56-rw-r--r--.1rootroot2924Jan1901:002020-1-19-.txt-rw-r--r--.1rootroot4281Jan1901:002020-1-19-.txt-rw-r--r--.1rootroot4188Jan1901:002020-1-19-.txt-rw-r--r--.1rootroot4238Jan1901:002020-1-19-.txt-rw-r--r--.1rootroot2924Jan2001:002020-1-20-.txt-rw-r--r--.1rootroot4281Jan2001:002020-1-20-.txt-rw-r--r--.1rootroot4188Jan2001:002020-1-20-.txt-rw-r--r--.1rootroot4238Jan2001:002020-1-20-.txt本章通過公司批量自動更改交換機登錄密碼和自動備份的需求,展示了Python在網(wǎng)絡自動化運維領域的具體應用,通過項目背景、項目需求分析、項目規(guī)劃設計為子任務做鋪墊,將項目實施部分拆分為多個子任務,符合工程項目實施的一般規(guī)律。通過對本章的學習,讀者應對項目實施流程有一定的了解,同時能掌握Python在網(wǎng)絡自動化運維的原理,應能熟練運用Python代碼進行自動化、批量的運維操作。下列哪個選項是正確將這個IP賦值給a對象的Python代碼()?A.a=B.a=””C.””=aD.”a”=””在下列的選項中哪些不是Python的內建模塊()?A.OS模塊 B.Telnetlib模塊 C.Paramiko模塊 D.getpass模塊管理員在/etc/crontab計劃任務配置文件中寫入了如下內容,說法正確的是()?0121**rootpython/root/backup.pyA.計劃任務將在每個月的1日2點01分重復執(zhí)行B.計劃任務將在1月的2日的1點被執(zhí)行C.計劃任務將由python用戶執(zhí)行D.計劃任務將有root程序執(zhí)行如下所示是管理員在一個Python腳本中寫下的內容,下面說法正確的是()?importparamikopassword="123456"username="admin"ssh_client=paramiko.SSHClient()ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh_client.connect(hostname=ip,username=username,password=password)A.此時管理員調用的是telnet模塊相關代碼B.此時管理員提供的用戶名為123456,密碼為adminC.此時管理員提供的用戶名為admin,密碼為123456D.如果這是python腳本全部代碼,那么管理員執(zhí)行這些代碼將會成功下列哪些Python模塊提供了SSH協(xié)議連接網(wǎng)絡設備的功能()?A.time模塊 B.Telnetlib模塊 C.Paramiko模塊 D.getpass模塊實踐拓展1.項目背景與要求在各

溫馨提示

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

評論

0/150

提交評論