有同學說希望出個批量的。
今天,它來了!
看好喔!好好學!
說不定,老板就給你加雞腿了!
一、實驗環境搭建
1、按照下圖,在ensp模擬器上搭建環境,為了演示批量修改設備,龍哥這里實驗4臺路由器,當然了,如果你電腦性能足夠牛逼,你也可以多用幾臺路由器咯!然后標注好IP地址。
2、物理電腦(即我臺式電腦)與ensp做好橋接:
3、給每臺路由器做好初始化配置,即配置修改設備默認名稱、配置管理IP地址、配置SSH及登錄用戶名和密碼。
以R2為例(小白,其他設備參考R2配置),修改設備名、配置IP地址:
[Huawei]SYS R2
[R2]
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]ip add 192.168.56.20 24
[R2-GigabitEthernet0/0/0]
[R2-GigabitEthernet0/0/0]qu
[R2]
以R2為例,配置SSH,其他設備參考如下即可:
[R2]rsa local-key-pair create
The key name will be: Host
% RSA keys defined for Host already exist.
Confirm to replace them? (y/n)[n]:y
The range of public key size is (512 ~ 2048).
NOTES: If the key modulus is greater than 512,
It will take a few minutes.
Input the bits in the modulus[default = 512]:2048
Generating keys...
.......+++
..............+++
.....++++++++
...............++++++++
[R2]user-interface vty 0 4
[R2-ui-vty0-4]authentication-mode aaa
[R2-ui-vty0-4]protocol inbound ssh
[R2]aaa
[R2-aaa]local-user along password cipher along123
[R2-aaa]local-user along privilege level 15
[R2-aaa]local-user along service-type ssh
[R2-aaa]ssh user along authentication-type password
[R2]
[R2]stelnet server enable
[R2]
上述配置完,建議用secureCRT先登錄一下各個設備,驗證網絡連通性、ssh連通性是否ok?
這里以R1為例,驗證一下。測試時,你們可以每臺都驗證一下。
這樣驗證的好處,假如待會我們寫的python腳本如果有問題,那跟網絡、ssh配置就沒關了,便于后續排錯就對啦!
二、準備好批量IP清單
1、這里我先創建4臺路由器管理ip的清單,用txt創建:
2、注意!注意!注意!這個ip清單需要放到跟你待會創建的python腳本同一個目錄下,比如我待會創建一個名為router-lab.py的python腳本:
三、編寫python腳本
import paramiko
import time
from getpass import getpass
user = input('Username:')
pw = getpass('password:')
f = open("ip-list.txt","r")
for line in f.readlines():
ip = line.strip()
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=ip,username=user,password=pw)
print("恭喜您成功登錄ensp的路由器!", ip)
command = ssh.invoke_shell()
command.send("system ")
command.send("vlan 20 ")
command.send("quit ")
command.send("ospf ")
command.send("area 0 ")
command.send("net 192.168.56.0 0.0.0.255 ")
command.send("quit ")
time.sleep(2)
output = command.recv(65535)
print(output.decode("ascii"))
ssh.close()
注意:python寫for循環時,一定要注意縮進格式。
代碼解釋:
f = open("ip-list.txt","r")
答:定義一個f文件對象,r表示,用只讀形式,打開ip-list.txt文件。這個文件就剛剛我們創建的ip清單,即你要批量管理的ip地址。
for line in f.readlines():
ip = line.strip()
答:利用for循環語句,f.readlines是逐行讀取f文件對象,賦給line。
line.strip()我理解是移除空格或換行符,然后復制給ip。
其他代碼這里不再解釋,可以參考往期的:
四、執行腳本與驗證
1、執行前的確認
從上述代碼,我們可以知道,我們的目標是為設備批量創建vlan20和創建ospf協議,并把管理網段宣告的area 0中。
所以,還沒執行前,我們可以登錄設備看看,確實沒有vlan 20 和 ospf相關配置:
2、接下來,我們開始執行代碼:
用編輯器執行也可以或雙擊python腳本也行
然后在彈出的窗口輸入用戶名和密碼即可:
然后觀察運行情況:
可知,python腳本執行成功了,我們也可以再通過ensp登錄路由器看看檢查配置,確認是否生效了?
上述這些截圖中,我們可以知道,確實生效了。
審核編輯:湯梓紅
-
路由器
+關注
關注
22文章
3735瀏覽量
113991 -
網絡設備
+關注
關注
0文章
316瀏覽量
29683 -
python
+關注
關注
56文章
4799瀏覽量
84810
發布評論請先 登錄
相關推薦
評論