之前分享過(guò)利用python腳本登錄一臺(tái)交換機(jī),
有同學(xué)說(shuō)希望出個(gè)批量的。
今天,它來(lái)了!
看好喔!好好學(xué)!
說(shuō)不定,老板就給你加雞腿了!
一、實(shí)驗(yàn)環(huán)境搭建
1、按照下圖,在ensp模擬器上搭建環(huán)境,為了演示批量修改設(shè)備,龍哥這里實(shí)驗(yàn)4臺(tái)路由器,當(dāng)然了,如果你電腦性能足夠牛逼,你也可以多用幾臺(tái)路由器咯!然后標(biāo)注好IP地址。
2、物理電腦(即我臺(tái)式電腦)與ensp做好橋接:
3、給每臺(tái)路由器做好初始化配置,即配置修改設(shè)備默認(rèn)名稱、配置管理IP地址、配置SSH及登錄用戶名和密碼。
以R2為例(小白,其他設(shè)備參考R2配置),修改設(shè)備名、配置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,其他設(shè)備參考如下即可:
[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先登錄一下各個(gè)設(shè)備,驗(yàn)證網(wǎng)絡(luò)連通性、ssh連通性是否ok?
這里以R1為例,驗(yàn)證一下。測(cè)試時(shí),你們可以每臺(tái)都驗(yàn)證一下。
這樣驗(yàn)證的好處,假如待會(huì)我們寫(xiě)的python腳本如果有問(wèn)題,那跟網(wǎng)絡(luò)、ssh配置就沒(méi)關(guān)了,便于后續(xù)排錯(cuò)就對(duì)啦!
二、準(zhǔn)備好批量IP清單
1、這里我先創(chuàng)建4臺(tái)路由器管理ip的清單,用txt創(chuàng)建:
2、注意!注意!注意!這個(gè)ip清單需要放到跟你待會(huì)創(chuàng)建的python腳本同一個(gè)目錄下,比如我待會(huì)創(chuàng)建一個(gè)名為router-lab.py的python腳本:
三、編寫(xiě)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寫(xiě)for循環(huán)時(shí),一定要注意縮進(jìn)格式。
代碼解釋:
f = open("ip-list.txt","r")
答:定義一個(gè)f文件對(duì)象,r表示,用只讀形式,打開(kāi)ip-list.txt文件。這個(gè)文件就剛剛我們創(chuàng)建的ip清單,即你要批量管理的ip地址。
for line in f.readlines():
ip = line.strip()
答:利用for循環(huán)語(yǔ)句,f.readlines是逐行讀取f文件對(duì)象,賦給line。
line.strip()我理解是移除空格或換行符,然后復(fù)制給ip。
其他代碼這里不再解釋,可以參考往期的:
四、執(zhí)行腳本與驗(yàn)證
1、執(zhí)行前的確認(rèn)
從上述代碼,我們可以知道,我們的目標(biāo)是為設(shè)備批量創(chuàng)建vlan20和創(chuàng)建ospf協(xié)議,并把管理網(wǎng)段宣告的area 0中。
所以,還沒(méi)執(zhí)行前,我們可以登錄設(shè)備看看,確實(shí)沒(méi)有vlan 20 和 ospf相關(guān)配置:
2、接下來(lái),我們開(kāi)始執(zhí)行代碼:
用編輯器執(zhí)行也可以或雙擊python腳本也行
然后在彈出的窗口輸入用戶名和密碼即可:
然后觀察運(yùn)行情況:
可知,python腳本執(zhí)行成功了,我們也可以再通過(guò)ensp登錄路由器看看檢查配置,確認(rèn)是否生效了?
上述這些截圖中,我們可以知道,確實(shí)生效了。
審核編輯:湯梓紅
-
路由器
+關(guān)注
關(guān)注
22文章
3728瀏覽量
113701 -
網(wǎng)絡(luò)設(shè)備
+關(guān)注
關(guān)注
0文章
315瀏覽量
29636 -
python
+關(guān)注
關(guān)注
56文章
4792瀏覽量
84627
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論