版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第11章網(wǎng)絡(luò)自動化運維第頁學習目標第頁了解Python運維常用庫和常用語法;掌握通過Python代碼管控網(wǎng)絡(luò)設(shè)備的配置;掌握通過Python代碼備份網(wǎng)絡(luò)設(shè)備運行配置應(yīng)用。目錄項目背景和需求分析項目背景項目需求分析項目相關(guān)知識項目規(guī)劃設(shè)計項目實施項目測試第頁11.1.1
項目背景第頁1、背景通過項目10的建設(shè),Jan16公司新建的辦公大樓的現(xiàn)有網(wǎng)絡(luò)架構(gòu)已經(jīng)能滿足日常辦公需求,項目轉(zhuǎn)入運維階段。為滿足運維需求,公司在網(wǎng)管計算機已預(yù)裝好CentOS
7.0,規(guī)劃通過Python進行網(wǎng)絡(luò)自動運維,因此對網(wǎng)絡(luò)管理員部署了如下任務(wù):項目轉(zhuǎn)運維后,公司管理員應(yīng)馬上修改所有網(wǎng)絡(luò)設(shè)備的管理密碼;每天凌晨1點對所有網(wǎng)絡(luò)設(shè)備執(zhí)行一次配置的自動備份。11.1.1
項目背景2、Jan16公司網(wǎng)絡(luò)拓撲第頁11.1.2
項目需求分析第頁1、公司實際需求分析根據(jù)公司實際需求,管理員需要對這批設(shè)備的密碼進行批量修改,并定期對設(shè)備配置做備份。在本項目中,可以在網(wǎng)管計算機上使用Python腳本加載Paramiko模塊,然后通過SSH協(xié)議批量修改網(wǎng)絡(luò)設(shè)備的登錄密碼。公司還有定期備份配置這樣的工作計劃性的工作,可以調(diào)用網(wǎng)管計算機上的計劃任務(wù)程序,讓計算機按計劃執(zhí)行特定的Python腳本來實現(xiàn)。2、本項目實施具體工作任務(wù)分析使用Python完成自動化修改網(wǎng)絡(luò)設(shè)備的管理密碼;使用Python和計劃任務(wù)完成網(wǎng)絡(luò)設(shè)備的每日備份。目錄項目背景和需求分析項目相關(guān)知識項目規(guī)劃設(shè)計項目實施項目測試第頁在Python中,模塊可以通俗的理解為獨立保存好的腳本,它可以通過【import
module-name】語句來導(dǎo)入,module-name則代表模塊的名稱。模塊分為Python內(nèi)建模塊和第三方模塊,Python內(nèi)建模塊可以直接通過【import
module-name】語句導(dǎo)入。第三方模塊可以通過【pip
installmodule-name】終端命令安裝后再通過【import
module-name】語句導(dǎo)入后使用。在網(wǎng)絡(luò)運維中常用的Python內(nèi)建模塊有os、time、getpass、datetime、re、Telnetlib等,常用的Python第三方模塊有Paramiko,Netmiko等。11.2
項目相關(guān)知識第頁1、Python模塊getpass模塊是Python的內(nèi)建模塊之一,它在Python中主要是提供Python的交互式功能,在網(wǎng)絡(luò)運維中,可以用于提示用戶輸入密碼,通過getpass輸入的密碼是不可見的,安全性相對較高。time和datetime模塊是python的內(nèi)建模塊之一,它們在Python中主要提供時間相關(guān)的功能。time模塊可以在網(wǎng)絡(luò)運維中提供時間戳、格式化時間、時間元組等功能。而datetime模塊則重新封裝了time模塊,它能提供更多功能,如日期、時區(qū)等。11.2
項目相關(guān)知識第頁2、網(wǎng)絡(luò)運維常見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協(xié)議遠程連接設(shè)備。它是Python中的內(nèi)建模塊,使用時直接導(dǎo)入即可,無需額外安裝,但其在數(shù)據(jù)傳輸過程中存在一些安全性問題(如不支持密文傳輸),因此不太建議在生產(chǎn)網(wǎng)絡(luò)中使用。11.2
項目相關(guān)知識第頁4)案例11-4:通過telnetlib模塊的連接IP為192.168.1.1的華為網(wǎng)絡(luò)設(shè)備并發(fā)送【system-view】命令進入系統(tǒng)視圖。其中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中,安裝并導(dǎo)入paramiko模塊后可以通過代碼實現(xiàn)SSH協(xié)議遠程連接設(shè)備。具有同樣效用的模塊還有netmiko。netmiko模塊主要是在paramiko的基礎(chǔ)上進行了優(yōu)化,如增加廠商支持、增加命令補全功能等11.2
項目相關(guān)知識5)案例11-5:通過Paramiko模塊連接IP為192.168.1.1的華為網(wǎng)絡(luò)設(shè)備并發(fā)送【system-view】命令進入系統(tǒng)視圖。其中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")第頁在日常的網(wǎng)絡(luò)運維中,網(wǎng)絡(luò)工程師也是需要文本文件配合工作,如用于批量配置網(wǎng)絡(luò)設(shè)備的命令模板文件,存放所有網(wǎng)絡(luò)設(shè)備IP地址、備份網(wǎng)絡(luò)設(shè)備運行配置信息命令【display
current-configuration】輸出的結(jié)果等等,Python的內(nèi)建模塊os模塊可以實現(xiàn)以上功能,常用的os模塊中的函數(shù)有open()函數(shù),其使用的代碼格式一般為【open(‘filename’,‘type’)】,其中filename代表文件名,type代表文件的讀寫模式,可以為r(只讀)、w(寫入)、a(追加)、r+(讀寫)、w+(覆蓋讀寫)等。11.2
項目相關(guān)知識第頁6)案例11-6:調(diào)用open()相關(guān)函數(shù),以讀寫模式打開名為backup.txt的文件,并寫入“abcd”內(nèi)容后再讀取出來:a=open("backup.txt","a+")a.write("abcd")a.close()a.read()目錄項目背景和需求分析項目相關(guān)知識項目規(guī)劃設(shè)計項目拓撲規(guī)劃項目規(guī)劃表項目實施項目測試第頁11.3.1
項目拓撲規(guī)劃1、公司網(wǎng)絡(luò)拓撲規(guī)劃如下圖所示第頁11.3.2
項目規(guī)劃表第頁園區(qū)網(wǎng)路由器AR2220R2核心機房路由器AR2220R1三層交換機S5700SW1三層交換機S5700SW2項目管理部二層交換機S3700SW3財務(wù)部二層交換機S3700SW4服務(wù)器群網(wǎng)管計算機RH2288Manage所屬區(qū)域設(shè)備類型型號設(shè)備命名1、設(shè)備規(guī)劃表11.3.2
項目規(guī)劃表第頁SW2GE0/0/10VLAN90Manageeth0Manageeth0VLAN90SW2GE0/0/10本端設(shè)備本端端口端口配置對端設(shè)備對端端口2、端口互聯(lián)規(guī)劃11.3.2
項目規(guī)劃表第頁SW1VLANIF
100192.168.100.1/24設(shè)備管理地址SW2VLANIF
100192.168.100.2/24設(shè)備管理地址SW3VLANIF
100192.168.100.3/24設(shè)備管理地址SW4VLANIF
100192.168.100.4/24設(shè)備管理地址Manageeth0DHCP設(shè)備管理地址設(shè)備命名接口IP地址用途3、IP規(guī)劃表11.3.2
項目規(guī)劃表第頁S5700SW1adminHwEdu12#$Jan16@Hw15AAAS5700SW2adminHwEdu12#$Jan16@Hw15AAAS3700SW3adminHwEdu12#$Jan16@Hw15AAAS3700SW4adminHwEdu12#$Jan16@Hw15AAA4、SSH服務(wù)規(guī)劃型號 設(shè)備命名SSH用戶名舊密碼新密碼用戶等級VTY認證方式目錄項目背景和需求分析項目相關(guān)知識項目規(guī)劃設(shè)計項目實施任務(wù)1自動化修改網(wǎng)絡(luò)設(shè)備密碼配置任務(wù)2定時自動化備份網(wǎng)絡(luò)設(shè)備配置11.5
項目測試第頁11.4
項目實施第頁本次項目中,具體涉及以下工作任務(wù)。任務(wù)1自動化修改網(wǎng)絡(luò)設(shè)備登錄密碼的配置,主要在網(wǎng)管計算機上編寫Python腳本,實現(xiàn)批量自動更改網(wǎng)絡(luò)設(shè)備的登錄密碼。任務(wù)2定期自動化備份網(wǎng)絡(luò)設(shè)備配置,主要需要運用Python自動化運維的相關(guān)知識在網(wǎng)管計算機上編寫Python腳本讀取網(wǎng)絡(luò)設(shè)備的運行配置并以規(guī)劃好的文件命名格式(“年-月-日-IP.txt”)保存到/root/backup目錄下,并配置系統(tǒng)計劃任務(wù)程序?qū)崿F(xiàn)每天凌晨1點自動執(zhí)行一次。11.4.1
任務(wù)1
自動化修改網(wǎng)絡(luò)設(shè)備密碼配置1、配置過程1)在網(wǎng)管計算機聯(lián)網(wǎng)狀態(tài)下安裝Python3和paramiko;[root@manage
~]#yum
install-y
python3[root@manage
~]#
pip3
install
paramiko第頁//安裝Python3和相應(yīng)依賴工具//通過pip安裝python第三方模塊paramiko11.4.1
任務(wù)1
自動化修改網(wǎng)絡(luò)設(shè)備密碼配置2)編寫Python腳本【changepassword.py】,實現(xiàn)對交換機SW1~SW4的密碼修改:[root@manage
~]#vi
changepassword.py##導(dǎo)入paramiko、time、getpass模塊import
paramikoimport
timeimport
getpass##通過raw_input()函數(shù)獲取用戶輸入的SSH用戶名并賦值給usernameusername=input("Username:")##通過getpass模塊中的getpass()函數(shù)獲取用戶輸入字符串作為密碼賦值給passwordpassword
=
getpass.getpass(prompt="Password:",stream=None)##通過for
i
in
range(1,5)和ip="192.168.100."+str(i)語句實現(xiàn)循環(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
任務(wù)1
自動化修改網(wǎng)絡(luò)設(shè)備密碼配置第頁......續(xù)上一頁腳本的內(nèi)容......##調(diào)度交換機命令行執(zhí)行命令command.send("system-view"
+"\n")command.send("aaa"+"\n")command.send("local-user
admin
password
cipher
Jan16@Hw"+"\n")##更改登錄密碼結(jié)束后,返回用戶視圖并保存配置command.send("return"+"\n")command.send("save"+"\n")command.send("Y"+"\n")command.send("\n")##暫停2秒,并將命令執(zhí)行過程賦值給output對象,通過print
output語句回顯內(nèi)容time.sleep(2)output=command.recv(65535).decode()
(output)##退出SSHssh_client.close()11.4.1
任務(wù)1
自動化修改網(wǎng)絡(luò)設(shè)備密碼配置3)在網(wǎng)管計算機執(zhí)行腳本【changepassword.py】:[root@manage
~]#
python3
changepassword.py //調(diào)度python執(zhí)行腳本Username:admin //手動輸入SSH用戶名,這里是adminPassword: //手動輸入SSH用戶密碼,這里是HwEdu12#$第頁11.4.1
任務(wù)1
自動化修改網(wǎng)絡(luò)設(shè)備密碼配置2、任務(wù)驗證1)在網(wǎng)管計算機查看腳本的回顯內(nèi)容: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>……省略部分內(nèi)容……第頁11.4.1
任務(wù)1
自動化修改網(wǎng)絡(luò)設(shè)備密碼配置第頁2)在網(wǎng)管計算機使用【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
任務(wù)2
定時自動化備份網(wǎng)絡(luò)設(shè)備配置1、配置過程1)在網(wǎng)管計算機創(chuàng)建備份交換機運行配置的腳本【backup.py】;[root@manage
~]#
vi
backup.py##導(dǎo)入paramiko、time、datetime等模塊
import
paramikoimport
timefrom
datetime
import
datetime##設(shè)置SSH用戶名和密碼,需要注意這里的密碼是新密碼
username
="admin"password
="Jan16@Hw"##通過for語句遍歷i的值為1/2/3/4,結(jié)合ip="192.168.100."+str(i)語句循環(huán)SSH登錄交換機設(shè)備
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ù)下一頁內(nèi)容……第頁11.4.2
任務(wù)2
定時自動化備份網(wǎng)絡(luò)設(shè)備配置##提示SSH登錄成功print ("ssh"+ip+"successfully")##設(shè)置回顯內(nèi)容不分屏顯示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")##將查詢運行配置的回顯內(nèi)容賦值給recv這個對象recv=command.recv(65535).decode()##將回顯內(nèi)容寫入backup這個對象,相當于寫入了備份文件中backup.write(recv)##關(guān)閉打開的文件backup.close()##結(jié)束,斷開SSH連接ssh_client.close()第頁11.4.2
任務(wù)2
定時自動化備份網(wǎng)絡(luò)設(shè)備配置2)配置計劃任務(wù)實現(xiàn)每天凌晨1點自動執(zhí)行腳本進行備份//編輯計劃任務(wù)配置文件第頁[root@manage
~]#
vi
/etc/crontab##在文件末尾填入下列內(nèi)容后退出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計劃任務(wù)服務(wù)//設(shè)置計劃任務(wù)服務(wù)開機自啟動11.4.2
任務(wù)2
定時自動化備份網(wǎng)絡(luò)設(shè)備配置2、任務(wù)驗證1)凌晨1點后在網(wǎng)管計算機上使用【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
任務(wù)2
定時自動化備份網(wǎng)絡(luò)設(shè)備配置2)查看設(shè)備備份的備份文件,以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……省略部分內(nèi)容……目錄項目背景和需求分析項目相關(guān)知識項目規(guī)劃設(shè)計項目實施項目測試第頁11.5
項目測試第頁1、在網(wǎng)管計算機使用【ssh
admin@192.168.100.1】命令重新連接SW1,用戶輸入新密碼才可以正常ssh登錄設(shè)備[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、在網(wǎng)管計算機上使用【date -s
"00:59 2020-1-20"】命令修改系統(tǒng)時間為新一天凌晨0點59分,1分鐘后再使用【ls -l /root/backup】命令查看/root/backup目錄下的文件,將能查看到新一天的備份已經(jīng)生成。[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第頁本章總結(jié)本章通過公司批量自動更改交換機登錄密碼和自動備份的需求,展示了Python在網(wǎng)絡(luò)自動化運維領(lǐng)域的具體應(yīng)用,通過項目背景、項目需求分析、項目規(guī)劃設(shè)計為子任務(wù)做鋪墊,將項目實施部分拆分為多個子任務(wù),符合工程項目實施的一般規(guī)律。通過對本章的學習,讀者應(yīng)對項目實施流程有一定的了解,同時能掌握Python在網(wǎng)絡(luò)自動化運維的原理,應(yīng)能熟練運用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的內(nèi)建模塊()?A.OS模塊 B.Telnetlib模塊 C.Paramiko模塊D.getpass模塊思考題3. 管理員在/etc/crontab計劃任務(wù)配置文件中寫入了如下內(nèi)容,說法正確的是()?01
2
1
*
*
root
python/root/backup.pyA.計劃任務(wù)將在每個月的1日2點01分重復(fù)執(zhí)行B.計劃任務(wù)將在1月的2日的1點被執(zhí)行C.計劃任務(wù)將由python用戶執(zhí)行D.計劃任務(wù)將有root程序執(zhí)行第頁思考題4. 如下所示是管理員在一個Python腳本中寫下的內(nèi)容,下面說法正確的是()?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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小班美術(shù)活動策劃方案(7篇)
- 污泥固化填埋應(yīng)急處理工程可行性實施報告
- 年產(chǎn)6000噸米糠油生產(chǎn)線技改擴建項目可行性報告
- 高一開學典禮的講話稿范本5篇
- 骨干教師幫扶記錄匯編5篇
- 陜西空白就業(yè)協(xié)議書
- 銷售工作心得體會(6篇)
- 物業(yè)財務(wù)信息化管理
- 生產(chǎn)個人實習心得10篇
- 幼兒園切的教案7篇
- 2024年全新初二生物上冊期中試卷及答案(人教版)
- 走進魚類世界智慧樹知到答案2024年中國海洋大學
- 代賣商品合同協(xié)議書
- 十字相乘法解一元二次方程練習100題及答案
- 中外合作辦學規(guī)劃方案
- 廠房屋頂光伏分布式發(fā)電項目建議書
- 2024年人教版初一道德與法治上冊期中考試卷(附答案)
- 2024年第九屆“鵬程杯”六年級語文邀請賽試卷(復(fù)賽)
- 國開2024年《建筑結(jié)構(gòu)#》形考作業(yè)1-4答案
- DL-T1475-2015電力安全工器具配置與存放技術(shù)要求
- 漏檢分析改善措施
評論
0/150
提交評論