網絡系統建設與運維(中級)教學課件第11章 網絡自動化運維_第1頁
網絡系統建設與運維(中級)教學課件第11章 網絡自動化運維_第2頁
網絡系統建設與運維(中級)教學課件第11章 網絡自動化運維_第3頁
網絡系統建設與運維(中級)教學課件第11章 網絡自動化運維_第4頁
網絡系統建設與運維(中級)教學課件第11章 網絡自動化運維_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第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()

print

(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論