版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第11章網絡自動化運維第頁學習目標第頁了解Python運維常用庫和常用語法;掌握通過Python代碼管控網絡設備的配置;掌握通過Python代碼備份網絡設備運行配置應用。目錄項目背景和需求分析項目背景項目需求分析項目相關知識項目規(guī)劃設計項目實施項目測試第頁11.1.1
項目背景第頁1、背景通過項目10的建設,Jan16公司新建的辦公大樓的現有網絡架構已經能滿足日常辦公需求,項目轉入運維階段。為滿足運維需求,公司在網管計算機已預裝好CentOS
7.0,規(guī)劃通過Python進行網絡自動運維,因此對網絡管理員部署了如下任務:項目轉運維后,公司管理員應馬上修改所有網絡設備的管理密碼;每天凌晨1點對所有網絡設備執(zhí)行一次配置的自動備份。11.1.1
項目背景2、Jan16公司網絡拓撲第頁11.1.2
項目需求分析第頁1、公司實際需求分析根據公司實際需求,管理員需要對這批設備的密碼進行批量修改,并定期對設備配置做備份。在本項目中,可以在網管計算機上使用Python腳本加載Paramiko模塊,然后通過SSH協議批量修改網絡設備的登錄密碼。公司還有定期備份配置這樣的工作計劃性的工作,可以調用網管計算機上的計劃任務程序,讓計算機按計劃執(zhí)行特定的Python腳本來實現。2、本項目實施具體工作任務分析使用Python完成自動化修改網絡設備的管理密碼;使用Python和計劃任務完成網絡設備的每日備份。目錄項目背景和需求分析項目相關知識項目規(guī)劃設計項目實施項目測試第頁在Python中,模塊可以通俗的理解為獨立保存好的腳本,它可以通過【import
module-name】語句來導入,module-name則代表模塊的名稱。模塊分為Python內建模塊和第三方模塊,Python內建模塊可以直接通過【import
module-name】語句導入。第三方模塊可以通過【pip
installmodule-name】終端命令安裝后再通過【import
module-name】語句導入后使用。在網絡運維中常用的Python內建模塊有os、time、getpass、datetime、re、Telnetlib等,常用的Python第三方模塊有Paramiko,Netmiko等。11.2
項目相關知識第頁1、Python模塊getpass模塊是Python的內建模塊之一,它在Python中主要是提供Python的交互式功能,在網絡運維中,可以用于提示用戶輸入密碼,通過getpass輸入的密碼是不可見的,安全性相對較高。time和datetime模塊是python的內建模塊之一,它們在Python中主要提供時間相關的功能。time模塊可以在網絡運維中提供時間戳、格式化時間、時間元組等功能。而datetime模塊則重新封裝了time模塊,它能提供更多功能,如日期、時區(qū)等。11.2
項目相關知識第頁2、網絡運維常見Python腳本案例1)案例11-1:通過getpass模塊提示用戶輸入密碼并將用戶輸入的密碼賦值給a對象:2)案例11-2:通過time模塊暫停執(zhí)行程序60s:3)案例11-3:通過datetime模塊將當前時間賦值給a,以日-月-年時:分的形式回顯出來:import
getpassa=getpass.getpass("please
input
password:")import
timetime.sleep(60)import
datetime
import
datetimea=datetime.now()print
"a.day
+"-"+a.month+"-"+a.year+"
"+a.hour+":"+"a.minute""telnetlib模塊主要是支持Python通過telnet協議遠程連接設備。它是Python中的內建模塊,使用時直接導入即可,無需額外安裝,但其在數據傳輸過程中存在一些安全性問題(如不支持密文傳輸),因此不太建議在生產網絡中使用。11.2
項目相關知識第頁4)案例11-4:通過telnetlib模塊的連接IP為192.168.1.1的華為網絡設備并發(fā)送【system-view】命令進入系統視圖。其中telnet用戶名為admin,密碼為Huawei123import
telnetlibip="192.168.1.1"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")在Python中,安裝并導入paramiko模塊后可以通過代碼實現SSH協議遠程連接設備。具有同樣效用的模塊還有netmiko。netmiko模塊主要是在paramiko的基礎上進行了優(yōu)化,如增加廠商支持、增加命令補全功能等11.2
項目相關知識5)案例11-5:通過Paramiko模塊連接IP為192.168.1.1的華為網絡設備并發(fā)送【system-view】命令進入系統視圖。其中SSH用戶名為admin,密碼為Huawei1234import
paramikousername
="admin"password
="Huawei1234"ip="192.168.1.1"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")第頁在日常的網絡運維中,網絡工程師也是需要文本文件配合工作,如用于批量配置網絡設備的命令模板文件,存放所有網絡設備IP地址、備份網絡設備運行配置信息命令【display
current-configuration】輸出的結果等等,Python的內建模塊os模塊可以實現以上功能,常用的os模塊中的函數有open()函數,其使用的代碼格式一般為【open(‘filename’,‘type’)】,其中filename代表文件名,type代表文件的讀寫模式,可以為r(只讀)、w(寫入)、a(追加)、r+(讀寫)、w+(覆蓋讀寫)等。11.2
項目相關知識第頁6)案例11-6:調用open()相關函數,以讀寫模式打開名為backup.txt的文件,并寫入“abcd”內容后再讀取出來:a=open("backup.txt","a+")a.write("abcd")a.close()a.read()目錄項目背景和需求分析項目相關知識項目規(guī)劃設計項目拓撲規(guī)劃項目規(guī)劃表項目實施項目測試第頁11.3.1
項目拓撲規(guī)劃1、公司網絡拓撲規(guī)劃如下圖所示第頁11.3.2
項目規(guī)劃表第頁園區(qū)網路由器AR2220R2核心機房路由器AR2220R1三層交換機S5700SW1三層交換機S5700SW2項目管理部二層交換機S3700SW3財務部二層交換機S3700SW4服務器群網管計算機RH2288Manage所屬區(qū)域設備類型型號設備命名1、設備規(guī)劃表11.3.2
項目規(guī)劃表第頁SW2GE0/0/10VLAN90Manageeth0Manageeth0VLAN90SW2GE0/0/10本端設備本端端口端口配置對端設備對端端口2、端口互聯規(guī)劃11.3.2
項目規(guī)劃表第頁SW1VLANIF
100192.168.100.1/24設備管理地址SW2VLANIF
100192.168.100.2/24設備管理地址SW3VLANIF
100192.168.100.3/24設備管理地址SW4VLANIF
100192.168.100.4/24設備管理地址Manageeth0DHCP設備管理地址設備命名接口IP地址用途3、IP規(guī)劃表11.3.2
項目規(guī)劃表第頁S5700SW1adminHwEdu12#$Jan16@Hw15AAAS5700SW2adminHwEdu12#$Jan16@Hw15AAAS3700SW3adminHwEdu12#$Jan16@Hw15AAAS3700SW4adminHwEdu12#$Jan16@Hw15AAA4、SSH服務規(guī)劃型號 設備命名SSH用戶名舊密碼新密碼用戶等級VTY認證方式目錄項目背景和需求分析項目相關知識項目規(guī)劃設計項目實施任務1自動化修改網絡設備密碼配置任務2定時自動化備份網絡設備配置11.5
項目測試第頁11.4
項目實施第頁本次項目中,具體涉及以下工作任務。任務1自動化修改網絡設備登錄密碼的配置,主要在網管計算機上編寫Python腳本,實現批量自動更改網絡設備的登錄密碼。任務2定期自動化備份網絡設備配置,主要需要運用Python自動化運維的相關知識在網管計算機上編寫Python腳本讀取網絡設備的運行配置并以規(guī)劃好的文件命名格式(“年-月-日-IP.txt”)保存到/root/backup目錄下,并配置系統計劃任務程序實現每天凌晨1點自動執(zhí)行一次。11.4.1
任務1
自動化修改網絡設備密碼配置1、配置過程1)在網管計算機聯網狀態(tài)下安裝Python3和paramiko;[root@manage
~]#yum
install-y
python3[root@manage
~]#
pip3
install
paramiko第頁//安裝Python3和相應依賴工具//通過pip安裝python第三方模塊paramiko11.4.1
任務1
自動化修改網絡設備密碼配置2)編寫Python腳本【changepassword.py】,實現對交換機SW1~SW4的密碼修改:[root@manage
~]#vi
changepassword.py##導入paramiko、time、getpass模塊import
paramikoimport
timeimport
getpass##通過raw_input()函數獲取用戶輸入的SSH用戶名并賦值給usernameusername=input("Username:")##通過getpass模塊中的getpass()函數獲取用戶輸入字符串作為密碼賦值給passwordpassword
=
getpass.getpass(prompt="Password:",stream=None)##通過for
i
in
range(1,5)和ip="192.168.100."+str(i)語句實現循環(huán)登錄交換機SW1-SW4for
i
in
range(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ù)下一頁......第頁11.4.1
任務1
自動化修改網絡設備密碼配置第頁......續(xù)上一頁腳本的內容......##調度交換機命令行執(zhí)行命令command.send("system-view"
+"\n")command.send("aaa"+"\n")command.send("local-user
admin
password
cipher
Jan16@Hw"+"\n")##更改登錄密碼結束后,返回用戶視圖并保存配置command.send("return"+"\n")command.send("save"+"\n")command.send("Y"+"\n")command.send("\n")##暫停2秒,并將命令執(zhí)行過程賦值給output對象,通過print
output語句回顯內容time.sleep(2)output=command.recv(65535).decode()
(output)##退出SSHssh_client.close()11.4.1
任務1
自動化修改網絡設備密碼配置3)在網管計算機執(zhí)行腳本【changepassword.py】:[root@manage
~]#
python3
changepassword.py //調度python執(zhí)行腳本Username:admin //手動輸入SSH用戶名,這里是adminPassword: //手動輸入SSH用戶密碼,這里是HwEdu12#$第頁11.4.1
任務1
自動化修改網絡設備密碼配置2、任務驗證1)在網管計算機查看腳本的回顯內容:Info:
The
max
number
of
VTY
users
is
5,
and
the
numberof
current
VTY
users
on
line
is
1.The
current
login
time
is
2020-01-18
15:12:48.<SW1>system-viewEnter
system
view,
return
user
view
with
Ctrl+Z.[SW1]aaa[SW1-aaa]local-user
admin
password
cipher
Jan16@Hw[SW1-aaa]return<SW1>saveThe
current
configuration
will
be
written
to
the
device.Are
you
sure
to
continue?[Y/N]YNow
saving
the
current
configuration
to
the
slot
0.Save
the
configuration
successfully.<SW1>……省略部分內容……第頁11.4.1
任務1
自動化修改網絡設備密碼配置第頁2)在網管計算機使用【ssh
admin@192.168.100.1】命令重新連接SW1[root@manage
~]#ssh
admin@192.168.100.1
admin@192.168.100.1‘s
password: //這里輸入新密碼Jan16@HwInfo:
The
max
number
of
VTY
users
is
5,
and
the
numberof
current
VTY
users
on
line
is
2.The
current
login
time
is
2020-01-18
15:15:48.<SW1>11.4.2
任務2
定時自動化備份網絡設備配置1、配置過程1)在網管計算機創(chuàng)建備份交換機運行配置的腳本【backup.py】;[root@manage
~]#
vi
backup.py##導入paramiko、time、datetime等模塊
import
paramikoimport
timefrom
datetime
import
datetime##設置SSH用戶名和密碼,需要注意這里的密碼是新密碼
username
="admin"password
="Jan16@Hw"##通過for語句遍歷i的值為1/2/3/4,結合ip="192.168.100."+str(i)語句循環(huán)SSH登錄交換機設備
for
i
in
range(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ù)下一頁內容……第頁11.4.2
任務2
定時自動化備份網絡設備配置##提示SSH登錄成功print ("ssh"+ip+"successfully")##設置回顯內容不分屏顯示command.send("screen-length
0
temporary"+"\n")##獲取交換機運行配置output=(command.send("display
current-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+")
##提示正在備份print
("backuping")##將查詢運行配置的回顯內容賦值給recv這個對象recv=command.recv(65535).decode()##將回顯內容寫入backup這個對象,相當于寫入了備份文件中backup.write(recv)##關閉打開的文件backup.close()##結束,斷開SSH連接ssh_client.close()第頁11.4.2
任務2
定時自動化備份網絡設備配置2)配置計劃任務實現每天凌晨1點自動執(zhí)行腳本進行備份//編輯計劃任務配置文件第頁[root@manage
~]#
vi
/etc/crontab##在文件末尾填入下列內容后退出00
1
*
*
*
root
python
/root/backup.py[root@manage
~]#
mkdir
/root/backup[root@manage
~]#
systemctl
restart
crond[root@manage
~]#
systemctl
enable
crond//新建/root/backup文件夾//重啟crond計劃任務服務//設置計劃任務服務開機自啟動11.4.2
任務2
定時自動化備份網絡設備配置2、任務驗證1)凌晨1點后在網管計算機上使用【ls-l/root/backup】查看/root/backup目錄下的文件。[root@manage
~]#
ls
-l
/root/backuptotal
28-rw-r--r--.1rootroot2924Jan1901:002020-1-19-192.168.100.1.txt-rw-r--r--.1rootroot4281Jan1901:002020-1-19-192.168.100.2.txt-rw-r--r--.1rootroot4188Jan1901:002020-1-19-192.168.100.3.txt-rw-r--r--.1rootroot4238Jan1901:002020-1-19-192.168.100.4.txt第頁第頁11.4.2
任務2
定時自動化備份網絡設備配置2)查看設備備份的備份文件,以2020-1-19-192.168.100.1.txt為例。[root@manage
~]#
cat
/root/backup/2020-1-19-192.168.100.1.txtInfo:
The
max
number
of
VTY
users
is
5,
and
the
numberof
current
VTY
users
on
line
is
1.The
current
login
time
is
2020-01-19
09:47:04.<SW1>screen-length
0
temporaryInfo:
The
configuration
takes
effect
on
the
current
user
terminal
interface
only.<SW1>display
current-configuration#sysname
SW1#vlan
batch
10
20
100
201#stp
mode
rstpstp
instance
0
priority
4096……省略部分內容……目錄項目背景和需求分析項目相關知識項目規(guī)劃設計項目實施項目測試第頁11.5
項目測試第頁1、在網管計算機使用【ssh
admin@192.168.100.1】命令重新連接SW1,用戶輸入新密碼才可以正常ssh登錄設備[root@manage
~]#ssh
admin@192.168.100.1
admin@192.168.100.1‘s
password: //這里輸入新密碼Jan16@HwInfo:
The
max
number
of
VTY
users
is
5,
and
the
numberof
current
VTY
users
on
line
is
2.The
current
login
time
is
2020-01-18
15:17:02.<SW1>11.5
項目測試2、在網管計算機上使用【date -s
"00:59 2020-1-20"】命令修改系統時間為新一天凌晨0點59分,1分鐘后再使用【ls -l /root/backup】命令查看/root/backup目錄下的文件,將能查看到新一天的備份已經生成。[root@manage
~]#
date
-s
"00:59
2020-1-20"Mon
Jan
20
00:59
CST
2020[root@manage
~]#
ls
-l
/root/backuptotal
56-rw-r--r--.1rootroot2924Jan1901:002020-1-19-192.168.100.1.txt-rw-r--r--.1rootroot4281Jan1901:002020-1-19-192.168.100.2.txt-rw-r--r--.1rootroot4188Jan1901:002020-1-19-192.168.100.3.txt-rw-r--r--.1rootroot4238Jan1901:002020-1-19-192.168.100.4.txt-rw-r--r--.1rootroot2924Jan2001:002020-1-20-192.168.100.1.txt-rw-r--r--.1rootroot4281Jan2001:002020-1-20-192.168.100.2.txt-rw-r--r--.1rootroot4188Jan2001:002020-1-20-192.168.100.3.txt-rw-r--r--.1rootroot4238Jan2001:002020-1-20-192.168.100.4.txt第頁本章總結本章通過公司批量自動更改交換機登錄密碼和自動備份的需求,展示了Python在網絡自動化運維領域的具體應用,通過項目背景、項目需求分析、項目規(guī)劃設計為子任務做鋪墊,將項目實施部分拆分為多個子任務,符合工程項目實施的一般規(guī)律。通過對本章的學習,讀者應對項目實施流程有一定的了解,同時能掌握Python在網絡自動化運維的原理,應能熟練運用Python代碼進行自動化、批量的運維操作。第頁思考題下列哪個選項是正確將192.168.1.1這個IP賦值給a對象的Python代碼()?a=192.168.1.1a=”192.168.1.1””192.168.1.1”=a”a”=”192.168.1.1”第頁2. 在下列的選項中哪些不是Python的內建模塊()?A.OS模塊 B.Telnetlib模塊 C.Paramiko模塊D.getpass模塊思考題3. 管理員在/etc/crontab計劃任務配置文件中寫入了如下內容,說法正確的是()?01
2
1
*
*
root
python/root/backup.pyA.計劃任務將在每個月的1日2點01分重復執(zhí)行B.計劃任務將在1月的2日的1點被執(zhí)行C.計劃任務將由python用戶執(zhí)行D.計劃任務將有root程序執(zhí)行第頁思考題4. 如下所示是管理員在一個Python腳本中寫下的內容,下面說法正確的是()?import
paramikopassword
="123456"username
="admin"ssh_client=paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip,u
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版企業(yè)高管勞動合同樣本:股權激勵與績效評估機制3篇
- 2024版建筑施工合同違約責任處理合同3篇
- 2024年度軟件許可合同標的為軟件使用權3篇
- 2024版?zhèn)€人農業(yè)科技園合伙經營合同模板3篇
- 2024年度水電工程前期研究合同2篇
- 2024水產銷售購銷合同樣本
- 2024年度建筑公司施工塔吊租賃合同2篇
- 2024版旅游行業(yè)代理稅務申報及風險管理合同3篇
- 2024年度廈門二手房購買合同范本
- 2024版二手房購房定金合同模板(含房屋用途限制條款)3篇
- JT-T-1210.1-2018公路瀝青混合料用融冰雪材料第1部分:相變材料
- 解析德意志意識形態(tài)中的難解之謎生產關系概念與交往形式等術語的關系
- 皮膚疾病超聲檢查指南(2022版)
- 國開機考答案-工程力學(本)(閉卷)
- 2024醫(yī)院護士聘用合同
- 錢轉入別人帳戶協議書
- President-election-美國總統選舉流程
- 過程分析烏龜圖
- 《公路工程集料試驗規(guī)程》JTG-3432-2024考核試題及答案文檔
- 血液透析疑難病例討論
- 地基處理方案選擇案例分析
評論
0/150
提交評論