色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Python批量連接華為網(wǎng)絡(luò)設(shè)備

網(wǎng)絡(luò)技術(shù)干貨圈 ? 來(lái)源:網(wǎng)絡(luò)技術(shù)干貨圈 ? 2024-08-12 17:48 ? 次閱讀

轉(zhuǎn)載請(qǐng)注明以下內(nèi)容:

來(lái)源:公眾號(hào)【網(wǎng)絡(luò)技術(shù)干貨圈】

作者:圈圈

ID:wljsghq

隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大和設(shè)備數(shù)量的增加,手動(dòng)配置和管理每臺(tái)網(wǎng)絡(luò)設(shè)備變得越來(lái)越不現(xiàn)實(shí)。因此,自動(dòng)化工具和腳本變得尤為重要。Python語(yǔ)言以其簡(jiǎn)潔性和強(qiáng)大的第三方庫(kù)支持,成為了網(wǎng)絡(luò)自動(dòng)化領(lǐng)域的首選。本篇文章將詳細(xì)介紹如何使用Python批量連接華為網(wǎng)絡(luò)設(shè)備,實(shí)現(xiàn)自動(dòng)化配置和管理。

環(huán)境準(zhǔn)備

在開(kāi)始編寫(xiě)腳本之前,需要確保我們的工作環(huán)境具備以下條件:

安裝Python 3.x。

安裝paramiko庫(kù),用于實(shí)現(xiàn)SSH連接。

安裝netmiko庫(kù),這是一個(gè)基于paramiko的高級(jí)庫(kù),專門用于網(wǎng)絡(luò)設(shè)備的自動(dòng)化操作。

安裝Python和相關(guān)庫(kù)

首先,確保你已經(jīng)安裝了Python 3.x。如果尚未安裝,可以從Python官方網(wǎng)站https://www.python.org/downloads下載并安裝。

然后,使用pip安裝paramiko和netmiko庫(kù):

pipinstallparamiko
pipinstallnetmiko

基礎(chǔ)知識(shí)

在實(shí)際操作之前,我們需要了解一些基礎(chǔ)知識(shí):

SSH協(xié)議:用于安全地遠(yuǎn)程登錄到網(wǎng)絡(luò)設(shè)備。

華為網(wǎng)絡(luò)設(shè)備的基本命令:了解一些基本的配置命令有助于編寫(xiě)自動(dòng)化腳本。

使用Netmiko連接單個(gè)設(shè)備

首先,我們來(lái)看看如何使用netmiko連接到單個(gè)華為網(wǎng)絡(luò)設(shè)備并執(zhí)行基本命令。

連接單個(gè)設(shè)備

fromnetmikoimportConnectHandler

#定義設(shè)備信息
device={
'device_type':'huawei',
'host':'192.168.1.1',
'username':'admin',
'password':'admin123',
'port':22,
}

#連接到設(shè)備
connection=ConnectHandler(**device)

#執(zhí)行命令
output=connection.send_command('displayversion')
print(output)

#斷開(kāi)連接
connection.disconnect()

在上面的代碼中,我們定義了一個(gè)包含設(shè)備信息的字典,并使用ConnectHandler類來(lái)建立連接。然后,我們使用send_command方法來(lái)發(fā)送命令并獲取輸出,最后斷開(kāi)連接。

批量連接多個(gè)設(shè)備

在實(shí)際應(yīng)用中,我們通常需要批量處理多個(gè)設(shè)備。接下來(lái),我們將介紹如何使用Python腳本批量連接多個(gè)華為網(wǎng)絡(luò)設(shè)備。

定義設(shè)備列表

首先,我們需要定義一個(gè)設(shè)備列表,每個(gè)設(shè)備的信息以字典形式存儲(chǔ):

devices=[
{
'device_type':'huawei',
'host':'192.168.1.1',
'username':'admin',
'password':'admin123',
'port':22,
},
{
'device_type':'huawei',
'host':'192.168.1.2',
'username':'admin',
'password':'admin123',
'port':22,
},
#可以繼續(xù)添加更多設(shè)備
]

批量連接和執(zhí)行命令

接下來(lái),我們編寫(xiě)一個(gè)函數(shù)來(lái)批量連接這些設(shè)備并執(zhí)行命令:

defbatch_execute_commands(devices,command):
results={}
fordeviceindevices:
try:
connection=ConnectHandler(**device)
output=connection.send_command(command)
results[device['host']]=output
connection.disconnect()
exceptExceptionase:
results[device['host']]=f"Connectionfailed:{e}"
returnresults

#批量執(zhí)行命令
command='displayversion'
results=batch_execute_commands(devices,command)

#輸出結(jié)果
fordevice,outputinresults.items():
print(f"Device:{device}")
print(output)
print('-'*40)

在這個(gè)函數(shù)中,我們遍歷設(shè)備列表,逐個(gè)連接設(shè)備并執(zhí)行指定命令。結(jié)果存儲(chǔ)在一個(gè)字典中,最后輸出每個(gè)設(shè)備的結(jié)果。

高級(jí)應(yīng)用:并行連接設(shè)備

當(dāng)設(shè)備數(shù)量較多時(shí),逐個(gè)連接和執(zhí)行命令的效率會(huì)很低。為了解決這個(gè)問(wèn)題,我們可以使用并行處理來(lái)同時(shí)連接多個(gè)設(shè)備。

使用多線程并行連接

我們可以使用Python的concurrent.futures模塊來(lái)實(shí)現(xiàn)多線程并行連接:

importconcurrent.futures
fromnetmikoimportConnectHandler

defconnect_and_execute(device,command):
try:
connection=ConnectHandler(**device)
output=connection.send_command(command)
connection.disconnect()
returndevice['host'],output
exceptExceptionase:
returndevice['host'],f"Connectionfailed:{e}"

defbatch_execute_commands_parallel(devices,command):
results={}
withconcurrent.futures.ThreadPoolExecutor(max_workers=5)asexecutor:
future_to_device={executor.submit(connect_and_execute,device,command):devicefordeviceindevices}
forfutureinconcurrent.futures.as_completed(future_to_device):
device=future_to_device[future]
try:
host,output=future.result()
results[host]=output
exceptExceptionase:
results[device['host']]=f"Executionfailed:{e}"
returnresults

#并行批量執(zhí)行命令
command='displayversion'
results=batch_execute_commands_parallel(devices,command)

#輸出結(jié)果
fordevice,outputinresults.items():
print(f"Device:{device}")
print(output)
print('-'*40)

在這個(gè)示例中,我們使用ThreadPoolExecutor來(lái)創(chuàng)建一個(gè)線程池,并行處理多個(gè)設(shè)備的連接和命令執(zhí)行。這樣可以顯著提高處理效率。

實(shí)戰(zhàn)案例:批量配置華為交換機(jī)

接下來(lái),我們通過(guò)一個(gè)實(shí)際案例來(lái)演示如何批量配置多個(gè)華為交換機(jī)。假設(shè)我們需要配置一批交換機(jī)的基本網(wǎng)絡(luò)設(shè)置。

定義配置命令

首先,我們定義需要執(zhí)行的配置命令。假設(shè)我們要配置交換機(jī)的主機(jī)名和接口IP地址:

defgenerate_config_commands(hostname,interface,ip_address):
return[
f"system-view",
f"sysname{hostname}",
f"interface{interface}",
f"ipaddress{ip_address}",
f"quit",
f"save",
f"y",
]

批量執(zhí)行配置命令

然后,我們編寫(xiě)一個(gè)函數(shù)來(lái)批量執(zhí)行這些配置命令:

defconfigure_devices(devices,config_generator):
results={}
fordeviceindevices:
try:
connection=ConnectHandler(**device)
commands=config_generator(
hostname=f"Switch-{device['host']}",
interface="GigabitEthernet0/0/1",
ip_address=f"192.168.1.{device['host'].split('.')[-1]}/24"
)
output=connection.send_config_set(commands)
results[device['host']]=output
connection.disconnect()
exceptExceptionase:
results[device['host']]=f"Configurationfailed:{e}"
returnresults

#批量配置設(shè)備
results=configure_devices(devices,generate_config_commands)

#輸出結(jié)果
fordevice,outputinresults.items():
print(f"Device:{device}")
print(output)
print('-'*40)

在這個(gè)函數(shù)中,我們?yōu)槊颗_(tái)設(shè)備生成配置命令,并使用send_config_set方法批量執(zhí)行這些命令。配置完成后,輸出每臺(tái)設(shè)備的結(jié)果。

處理異常情況

在實(shí)際操作中,我們需要處理各種可能的異常情況。例如,設(shè)備連接失敗、命令執(zhí)行錯(cuò)誤等。我們可以在腳本中加入詳細(xì)的異常處理機(jī)制,確保腳本在出現(xiàn)問(wèn)題時(shí)能夠適當(dāng)處理并記錄錯(cuò)誤信息。

增強(qiáng)異常處理

defconfigure_devices_with_error_handling(devices,config_generator):
results={}
fordeviceindevices:
try:
connection=ConnectHandler(**device)
commands=config_generator(
hostname=f"Switch-{device['host']}",
interface="GigabitEthernet0/0/1",
ip_address=f"192.168.1.{device['host'].split('.')[-1]}/24"
)
output=connection.send_config_set(commands)
results[device['host']]=output
connection.disconnect()
exceptExceptionase:
results[device['host']]=f"Configurationfailed:{e}"
returnresults

#批量配置設(shè)備并處理異常
results=configure_devices_with_error_handling(devices,generate_config_commands)

#輸出結(jié)果
fordevice,outputinresults.items():
print(f"Device:{device}")
print(output)
print('-'*40)

在這個(gè)示例中,我們?cè)诿總€(gè)設(shè)備的配置過(guò)程中加入了異常處理。如果某個(gè)設(shè)備出現(xiàn)問(wèn)題,會(huì)捕獲異常并記錄錯(cuò)誤信息,而不會(huì)影響其他設(shè)備的配置。

日志記錄

為了更好地管理和排查問(wèn)題,我們可以在腳本中加入日志記錄功能。通過(guò)記錄詳細(xì)的日志信息,可以方便地了解腳本的運(yùn)行情況和設(shè)備的配置狀態(tài)。

使用logging模塊記錄日志

importlogging

#配置日志記錄
logging.basicConfig(filename='network_config.log',level=logging

.INFO,format='%(asctime)s-%(levelname)s-%(message)s')

defconfigure_devices_with_logging(devices,config_generator):
results={}
fordeviceindevices:
try:
connection=ConnectHandler(**device)
commands=config_generator(
hostname=f"Switch-{device['host']}",
interface="GigabitEthernet0/0/1",
ip_address=f"192.168.1.{device['host'].split('.')[-1]}/24"
)
output=connection.send_config_set(commands)
results[device['host']]=output
logging.info(f"Successfullyconfigureddevice{device['host']}")
connection.disconnect()
exceptExceptionase:
error_message=f"Configurationfailedfordevice{device['host']}:{e}"
results[device['host']]=error_message
logging.error(error_message)
returnresults

#批量配置設(shè)備并記錄日志
results=configure_devices_with_logging(devices,generate_config_commands)

#輸出結(jié)果
fordevice,outputinresults.items():
print(f"Device:{device}")
print(output)
print('-'*40)

在這個(gè)示例中,我們使用logging模塊記錄日志信息。成功配置設(shè)備時(shí)記錄INFO級(jí)別日志,配置失敗時(shí)記錄ERROR級(jí)別日志。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 華為
    +關(guān)注

    關(guān)注

    216

    文章

    34411

    瀏覽量

    251503
  • 網(wǎng)絡(luò)設(shè)備

    關(guān)注

    0

    文章

    315

    瀏覽量

    29636
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4792

    瀏覽量

    84627

原文標(biāo)題:如何使用Python批量連接華為網(wǎng)絡(luò)設(shè)備?

文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    外網(wǎng)訪問(wèn)家里的網(wǎng)絡(luò)設(shè)備

    網(wǎng)絡(luò)設(shè)備
    學(xué)習(xí)電子知識(shí)
    發(fā)布于 :2023年07月17日 20:06:18

    網(wǎng)絡(luò)設(shè)備選擇技巧

    1.硬件要兼容  在網(wǎng)絡(luò)設(shè)備選擇上,盡量使所有網(wǎng)絡(luò)設(shè)備都采用一家公司的產(chǎn)品,這樣可以最大限度地減少高端與低端甚至是同等級(jí)別不同設(shè)備間的不兼容問(wèn)題。而且不要為了省幾十塊錢而選擇沒(méi)有質(zhì)量保證的網(wǎng)絡(luò)
    發(fā)表于 04-08 09:34

    各類網(wǎng)絡(luò)設(shè)備

    ` 網(wǎng)絡(luò)設(shè)備,銳捷,艾泰,D-link,華為,H3C,思科,韓電,安普`
    發(fā)表于 11-29 11:15

    Linux常用網(wǎng)絡(luò)設(shè)備

    網(wǎng)絡(luò)設(shè)備是計(jì)算機(jī)體系結(jié)構(gòu)中必不可少的一部分,處理器如果想與外界通信,通常都會(huì)選擇網(wǎng)絡(luò)設(shè)備作為通信接口。眾所周知,在 OSI(Open Systems Interconnection,開(kāi)放網(wǎng)際互連)中,網(wǎng)絡(luò)被劃分為七個(gè)層次,從下到
    發(fā)表于 07-25 07:37

    如何利用華為網(wǎng)絡(luò)設(shè)備去查看電源狀態(tài)檢查命令呢

    描述:華為網(wǎng)絡(luò)設(shè)備查看風(fēng)扇狀態(tài)電源狀態(tài)檢查命令命令:displaydevice fan
    發(fā)表于 12-31 07:07

    網(wǎng)絡(luò)設(shè)備監(jiān)管系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    網(wǎng)絡(luò)設(shè)備監(jiān)管是指對(duì)IP 網(wǎng)絡(luò)中的關(guān)鍵設(shè)備進(jìn)行實(shí)時(shí)監(jiān)控和管理,使網(wǎng)絡(luò)管理員對(duì)網(wǎng)絡(luò)設(shè)備的使用情況有更為深入的了解。在研究分析
    發(fā)表于 06-23 13:33 ?24次下載

    家用網(wǎng)絡(luò)設(shè)備簡(jiǎn)介

    家用網(wǎng)絡(luò)設(shè)備簡(jiǎn)介 就在幾年前,家用網(wǎng)絡(luò)設(shè)備還相當(dāng)簡(jiǎn)單。使用一根直連電纜、一部網(wǎng)絡(luò)集線器或以太網(wǎng)路由器,您可以將兩部或多部計(jì)算機(jī)連接在一起,共享外設(shè)、
    發(fā)表于 08-05 10:26 ?1058次閱讀

    家用網(wǎng)絡(luò)設(shè)備的無(wú)線功能

    家用網(wǎng)絡(luò)設(shè)備的無(wú)線功能 目前,家庭網(wǎng)絡(luò)設(shè)備正朝著無(wú)線的方向發(fā)展。大多數(shù)新的家庭網(wǎng)絡(luò)都采用了Wi-Fi技術(shù),在家庭的各種設(shè)備之間共享寬帶互聯(lián)網(wǎng)連接
    發(fā)表于 08-05 10:26 ?730次閱讀

    華為計(jì)劃拓展企業(yè)網(wǎng)絡(luò)設(shè)備市場(chǎng) 挑戰(zhàn)思科和Juniper

    8月8日下午消息,全球最大電信設(shè)備供應(yīng)商華為致力于開(kāi)展多元化業(yè)務(wù),但在企業(yè)網(wǎng)絡(luò)設(shè)備市場(chǎng)仍占據(jù)很小的份額,而這一領(lǐng)域主導(dǎo)企業(yè)依然是美國(guó)思科和Juniper,企業(yè)網(wǎng)絡(luò)設(shè)備作為一項(xiàng)新業(yè)務(wù),對(duì)
    發(fā)表于 08-09 10:41 ?1139次閱讀

    華為網(wǎng)絡(luò)設(shè)備查看電源狀態(tài)檢查命令

    描述:華為網(wǎng)絡(luò)設(shè)備查看風(fēng)扇狀態(tài)電源狀態(tài)檢查命令命令:display device fan
    發(fā)表于 01-11 10:06 ?0次下載
    <b class='flag-5'>華為</b><b class='flag-5'>網(wǎng)絡(luò)設(shè)備</b>查看電源狀態(tài)檢查命令

    利用python腳本批量登錄網(wǎng)絡(luò)設(shè)備修改配置

    按照下圖,在ensp模擬器上搭建環(huán)境,為了演示批量修改設(shè)備,龍哥這里實(shí)驗(yàn)4臺(tái)路由器,當(dāng)然了,如果你電腦性能足夠牛逼,你也可以多用幾臺(tái)路由器咯!然后標(biāo)注好IP地址。
    的頭像 發(fā)表于 10-19 09:12 ?1571次閱讀

    Python寫(xiě)SecureCRT批量登錄/巡檢網(wǎng)絡(luò)設(shè)備腳本

    因?yàn)橛屑s200臺(tái)的網(wǎng)絡(luò)設(shè)備需要每天登錄巡檢、查看配置、保存配置、定期更改密碼(每周改一次),如果都手動(dòng)去登錄、配置將是非常耗費(fèi)時(shí)間和人力的,所以就有了整理出腳本的想法。查看了網(wǎng)上大多是VBS編寫(xiě)的腳本,我對(duì)VBS不熟悉,剛好前段時(shí)間初步學(xué)習(xí)了Python,就想用
    的頭像 發(fā)表于 12-28 09:32 ?4534次閱讀

    如何使用Python通過(guò)SNMP監(jiān)控網(wǎng)絡(luò)設(shè)備

    豐富的第三方庫(kù),實(shí)現(xiàn)繪圖入庫(kù)等,該方式比較繁瑣,我們管理的設(shè)備還有一些網(wǎng)絡(luò)設(shè)備,這些設(shè)備無(wú)法通過(guò)開(kāi)發(fā)程序來(lái)實(shí)現(xiàn)監(jiān)控,為了實(shí)現(xiàn)全平臺(tái)全設(shè)備監(jiān)控,我決定使用SNMP實(shí)現(xiàn)監(jiān)控任務(wù)。
    的頭像 發(fā)表于 01-09 10:38 ?1291次閱讀

    網(wǎng)絡(luò)工程師學(xué)Python-遠(yuǎn)程連接管理Telnet

    Python Telnet是一種用于遠(yuǎn)程連接和管理網(wǎng)絡(luò)設(shè)備Python庫(kù)。
    的頭像 發(fā)表于 04-28 09:47 ?930次閱讀

    你靠什么來(lái)連接這些網(wǎng)絡(luò)設(shè)備

    ,你靠什么來(lái)連接這些網(wǎng)絡(luò)設(shè)備?二層、三層、 四層交換機(jī)都有什么不一樣? 「交換機(jī)」同時(shí)需要配合設(shè)備線纜,即可實(shí)現(xiàn)設(shè)備間的互連互通。
    發(fā)表于 05-29 14:14 ?587次閱讀
    你靠什么來(lái)<b class='flag-5'>連接</b>這些<b class='flag-5'>網(wǎng)絡(luò)設(shè)備</b>?
    主站蜘蛛池模板: 暖暖 视频 在线 观看 高清 | 亚州三级久久电影| av天堂影音先锋在线| 久久久久久久网站| 亚洲日本香蕉视频观看视频| 国产欧美一区二区精品性色tv| 色欲AV人妻精品麻豆AV| 草莓AV福利网站导航| 欧美高清另类video| 99精品久久精品一区二区| 老司机无码精品A| 最近中文字幕在线中文视频| 精品久久香蕉国产线看观看麻豆| 小泽玛丽av无码观看| 国产精品人成视频免费999| 熟女人妻水多爽中文字幕| 给我免费播放片bd国语| 色久久久综合88一本道| 大胆国模一区二区三区伊人| 日本撒尿特写| 二级毛片免费观看全程| 日韩黄色软件| 国产精品久久久精品日日 | 夜夜骑夜夜欢| 久久91精品国产91久久户| 一个人免费播放高清在线观看| 极品少妇高潮XXXXX| 亚洲中文字幕永久在线全国| 久久99视热频国只有精品| 伊人热| 久久精品国产亚洲AV热无遮挡| 中文字幕在线观看亚洲日韩| 麻豆XXXX乱女少妇精品| 97国产揄拍国产精品人妻| 欧美激情一区二区三区四区| xxx成熟xxx| 善良的小峓子2在钱中文版女主角| 国产成人免费高清在线观看| 午夜理伦大片一级| 黄色a三级免费看| 中文字幕亚洲乱码熟女在线|