python中SSH遠(yuǎn)程登錄設(shè)備的實(shí)現(xiàn)方法
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臺(tái)交換機(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)入它的鏈接庫(kù)函數(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', }
由于我們這里要登陸四臺(tái)設(shè)備,所以要用for循環(huán)。
3.調(diào)用ConnectHandler()函數(shù),借用for循環(huán),對(duì)字典SW進(jìn)行SSH連接,將他賦值給變量connect,注意SW2前面的**作為標(biāo)識(shí)。
connect=ConnectHandler(**SW)
在Python的在形參前加'*'和'**'表示動(dòng)態(tài)形參
在形參前加'*'表示可以接受多個(gè)實(shí)參值存進(jìn)數(shù)組
對(duì)于在形參前加'**'表示表示接受參數(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ù)來使用上述命令對(duì)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地址,來逐臺(tái)登錄設(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是變量,不要粗心加了引號(hào) '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é)果
到此這篇關(guān)于python中SSH遠(yuǎn)程登錄設(shè)備的文章就介紹到這了,更多相關(guān)python中SSH遠(yuǎn)程登錄設(shè)備內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺析pytorch中對(duì)nn.BatchNorm2d()函數(shù)的理解
Batch Normalization強(qiáng)行將數(shù)據(jù)拉回到均值為0,方差為1的正太分布上,一方面使得數(shù)據(jù)分布一致,另一方面避免梯度消失,這篇文章主要介紹了pytorch中對(duì)nn.BatchNorm2d()函數(shù)的理解,需要的朋友可以參考下2023-11-11python得到一個(gè)excel的全部sheet標(biāo)簽值方法
今天小編就為大家分享一篇python得到一個(gè)excel的全部sheet標(biāo)簽值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12Jupyter notebook 不自動(dòng)彈出網(wǎng)頁(yè)的解決方案
這篇文章主要介紹了Jupyter notebook 不自動(dòng)彈出網(wǎng)頁(yè)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05Python中的二分查找Bisect庫(kù)使用實(shí)戰(zhàn)
在算法和數(shù)據(jù)結(jié)構(gòu)中,二分查找是一種高效的搜索算法,可用于有序數(shù)據(jù)集合的查找,Python的bisect庫(kù)為我們提供了便捷的二分查找實(shí)現(xiàn),本文將深入探討B(tài)isect庫(kù)的使用方法、性能優(yōu)勢(shì),并通過豐富的示例代碼展示其在實(shí)際應(yīng)用中的靈活性和效果2024-01-01淺談keras中的batch_dot,dot方法和TensorFlow的matmul
這篇文章主要介紹了淺談keras中的batch_dot,dot方法和TensorFlow的matmul,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06基于Python的ModbusTCP客戶端實(shí)現(xiàn)詳解
這篇文章主要介紹了基于Python的ModbusTCP客戶端實(shí)現(xiàn)詳解,Modbus Poll和Modbus Slave是兩款非常流行的Modbus設(shè)備仿真軟件,支持Modbus RTU/ASCII和Modbus TCP/IP協(xié)議 ,經(jīng)常用于測(cè)試和調(diào)試Modbus設(shè)備,觀察Modbus通信過程中的各種報(bào)文,需要的朋友可以參考下2019-07-07