網(wǎng)站首頁 編程語言 正文
python中支持SSH協(xié)議的模塊主要有Paramiko和netmiko兩種,本次實(shí)驗(yàn)采用netmiko模塊。
netmikko模塊為python的第三方模塊,需要使用pip來下載安裝。(聯(lián)網(wǎng)的情況下)
下載完畢后,進(jìn)入Python 3.10解釋器,如果import netmiko沒有報(bào)錯(cuò),則說明Netmiko安裝成功。
實(shí)驗(yàn)拓?fù)?/h2>
將ensp的LSW1與本地虛擬網(wǎng)卡loopback0進(jìn)行橋接,模擬將自己的電腦橋接到以下拓?fù)渚W(wǎng)絡(luò)中。
實(shí)驗(yàn)?zāi)康模?/h2>
通過netmiko模塊的SSH逐一登錄4臺交換機(jī)LSW2-LSW5,并依次為其配置STP,默認(rèn)模式為MSTP。
實(shí)驗(yàn)?zāi)_本
完整代碼
from netmiko import ConnectHandler
for i in range(20,24):
SW={
'device_type':'huawei',
'ip':'10.0.1.'+str(i),
'username':'python',
'password':'123456',
}
connect=ConnectHandler(**SW)
print('\n'+'-----------------'+'成功登錄到交換機(jī)'+SW['ip']+'-----------------')
config_commands=['stp mode stp','dis stp | include CIST Global Info']
output=connect.send_config_set(config_commands)
print(output)
connect.save_config()
1.從netmiko模塊導(dǎo)入它的鏈接庫函數(shù)ConnectHandler(),用于實(shí)現(xiàn)SSH登錄網(wǎng)絡(luò)設(shè)備。
from netmiko import ConnectHandler
2.創(chuàng)建一個(gè)字典SW,該字典包含'device_type'、'ip'、'username'、'password'四個(gè)必選值。'device_type'用于指定設(shè)備類型,這里我們用的是華為的設(shè)備,所以'device_type'為'huawei'。
for i in range(20,24):
SW={
'device_type':'huawei',
'ip':'10.0.1.'+str(i),
'username':'python',
'password':'123456',
}
由于我們這里要登陸四臺設(shè)備,所以要用for循環(huán)。
3.調(diào)用ConnectHandler()函數(shù),借用for循環(huán),對字典SW進(jìn)行SSH連接,將他賦值給變量connect,注意SW2前面的**作為標(biāo)識。
connect=ConnectHandler(**SW)
在Python的在形參前加'*'和'**'表示動(dòng)態(tài)形參
在形參前加'*'表示可以接受多個(gè)實(shí)參值存進(jìn)數(shù)組
對于在形參前加'**'表示表示接受參數(shù)轉(zhuǎn)化為字典類型
4.如果SSH登錄成功,則提示成功登錄
print('\n'+'-----------------'+'成功登錄到交換機(jī)'+SW['ip']+'-----------------')
5.創(chuàng)建一個(gè)名為config_commands的列表為參數(shù),其元素為需要在交換機(jī)上執(zhí)行的命令。
config_commands=['stp mode stp','dis stp | include CIST Global Info']
6.然后以剛剛創(chuàng)建的config_commands的列表為參數(shù),調(diào)用ConnectHandler()的send_config_set()函數(shù)來使用上述命令對SW做配置,并將配置過程打印出來。
output=connect.send_config_set(config_commands)
print(output)
7.最后用save_config()保存設(shè)備配置
connect.save_config()
實(shí)驗(yàn)結(jié)果
從以上結(jié)果可知,netmiko額外替我們輸入了:system view和return。?
代碼優(yōu)化
如果有大量的交換機(jī)其管理ip地址也沒什么規(guī)律性,此時(shí)直接用for循環(huán)管理ip地址來登錄設(shè)備,就不再那么靈活和使用了。此時(shí)我們可以把所有交換機(jī)的ip地址都放入都放入一個(gè)文件名為ip_list的文件,通過for循環(huán)readlines()來讀取文件中的每行ip地址,來逐臺登錄設(shè)備。
?完整腳本
from netmiko import ConnectHandler
with open('ip_list.txt') as f:
for line in f.readlines():
host=line.strip()
SW={
'device_type':'huawei',
'ip':host, #host是變量,不要粗心加了引號
'username':'python',
'password':'123456',
}
connect=ConnectHandler(**SW)
print('\n'+'-----------------'+'成功登錄到交換機(jī)'+SW['ip']+'-----------------')
config_commands=['stp mode stp','dis stp | include CIST Global Info']
output=connect.send_config_set(config_commands)
print(output)
connect.save_config()
注意:ip_list要和python腳本在一個(gè)文件夾。
結(jié)果?
原文鏈接:https://blog.csdn.net/qq_45959697/article/details/124429321
相關(guān)推薦
- 2022-11-10 Android開發(fā)之AlertDialog實(shí)現(xiàn)彈出對話框_Android
- 2022-08-15 前端寫代碼的時(shí)候,不滿足條件程序停止執(zhí)行下面的程序,并彈窗提示
- 2022-11-17 python標(biāo)準(zhǔn)庫random模塊處理隨機(jī)數(shù)_python
- 2022-07-02 python中如何設(shè)置list步長_python
- 2022-07-10 $route和this.$router區(qū)別
- 2022-06-08 Spring Cloud Alibaba Nacos 客戶端服務(wù)注冊心跳和健康監(jiān)測
- 2022-10-09 淺談Redis處理接口冪等性的兩種方案_Redis
- 2022-07-20 Python3.7.2環(huán)境安裝
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支