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

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

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

利用Python腳本登錄到交換機(jī)并創(chuàng)建VLAN

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

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

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

作者:圈圈

ID:wljsghq

本文將詳細(xì)介紹如何利用Python腳本登錄到交換機(jī)并創(chuàng)建VLAN。

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

硬件與軟件要求

硬件要求:一臺(tái)支持SSH的網(wǎng)絡(luò)交換機(jī)

軟件要求

Python 3.x

相關(guān)Python庫(kù):paramiko、netmiko

Python庫(kù)安裝

在開始編寫腳本之前,需要安裝必要的Python庫(kù)。使用以下命令安裝:

pipinstallparamikonetmiko

了解交換機(jī)的基本操作

在登錄到交換機(jī)并創(chuàng)建VLAN之前,我們需要了解一些基本的交換機(jī)操作命令。這些命令通常通過SSH(Secure Shell)發(fā)送到交換機(jī)上執(zhí)行。以下是一些常見的交換機(jī)命令:

登錄交換機(jī):通過SSH使用用戶名和密碼登錄到交換機(jī)。

進(jìn)入全局配置模式:configure terminal

創(chuàng)建VLAN:vlan

命名VLAN:name

保存配置:write memory 或 copy running-config startup-config

使用Python腳本登錄交換機(jī)

使用Paramiko庫(kù)登錄交換機(jī)

paramiko是一個(gè)用于實(shí)現(xiàn)SSH協(xié)議的Python庫(kù),可以用來遠(yuǎn)程連接交換機(jī)。以下是一個(gè)簡(jiǎn)單的示例,展示如何使用paramiko登錄到交換機(jī):

importparamiko

defssh_connect(hostname,username,password):
#創(chuàng)建SSH客戶端對(duì)象
ssh=paramiko.SSHClient()
#自動(dòng)添加主機(jī)密鑰
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#連接到交換機(jī)
ssh.connect(hostname,username=username,password=password)
returnssh

#示例用法
hostname='192.168.1.1'
username='admin'
password='password'

ssh=ssh_connect(hostname,username,password)
print("成功登錄到交換機(jī)")

使用Netmiko庫(kù)登錄交換機(jī)

netmiko是基于paramiko封裝的一個(gè)庫(kù),專為網(wǎng)絡(luò)設(shè)備自動(dòng)化管理設(shè)計(jì),使用起來更為方便。以下是使用netmiko登錄到交換機(jī)的示例:

fromnetmikoimportConnectHandler

defnetmiko_connect(hostname,username,password,device_type='cisco_ios'):
#設(shè)備信息
device={
'device_type':device_type,
'host':hostname,
'username':username,
'password':password,
}
#連接到交換機(jī)
net_connect=ConnectHandler(**device)
returnnet_connect

#示例用法
hostname='192.168.1.1'
username='admin'
password='password'

net_connect=netmiko_connect(hostname,username,password)
print("成功登錄到交換機(jī)")

使用Python腳本創(chuàng)建VLAN

使用Paramiko創(chuàng)建VLAN

在成功登錄交換機(jī)后,可以使用paramiko發(fā)送命令創(chuàng)建VLAN。以下是一個(gè)完整的示例:

importparamiko
importtime

defssh_connect(hostname,username,password):
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname,username=username,password=password)
returnssh

defcreate_vlan(ssh,vlan_id,vlan_name):
#打開一個(gè)交互式Shell會(huì)話
remote_conn=ssh.invoke_shell()
#進(jìn)入全局配置模式
remote_conn.send("configureterminal
")
time.sleep(1)
#創(chuàng)建VLAN
remote_conn.send(f"vlan{vlan_id}
")
time.sleep(1)
#命名VLAN
remote_conn.send(f"name{vlan_name}
")
time.sleep(1)
#退出配置模式
remote_conn.send("end
")
time.sleep(1)
#保存配置
remote_conn.send("writememory
")
time.sleep(1)
output=remote_conn.recv(65535).decode('utf-8')
returnoutput

#示例用法
hostname='192.168.1.1'
username='admin'
password='password'
vlan_id=10
vlan_name='Test_VLAN'

ssh=ssh_connect(hostname,username,password)
output=create_vlan(ssh,vlan_id,vlan_name)
print("VLAN創(chuàng)建成功")
print(output)

使用Netmiko創(chuàng)建VLAN

使用netmiko庫(kù)創(chuàng)建VLAN的代碼更為簡(jiǎn)潔。以下是一個(gè)完整的示例:

fromnetmikoimportConnectHandler

defnetmiko_connect(hostname,username,password,device_type='cisco_ios'):
device={
'device_type':device_type,
'host':hostname,
'username':username,
'password':password,
}
net_connect=ConnectHandler(**device)
returnnet_connect

defcreate_vlan(net_connect,vlan_id,vlan_name):
commands=[
'configureterminal',
f'vlan{vlan_id}',
f'name{vlan_name}',
'end',
'writememory'
]
output=net_connect.send_config_set(commands)
returnoutput

#示例用法
hostname='192.168.1.1'
username='admin'
password='password'
vlan_id=10
vlan_name='Test_VLAN'

net_connect=netmiko_connect(hostname,username,password)
output=create_vlan(net_connect,vlan_id,vlan_name)
print("VLAN創(chuàng)建成功")
print(output)

腳本優(yōu)化與錯(cuò)誤處理

在實(shí)際應(yīng)用中,我們可能會(huì)遇到各種錯(cuò)誤和異常情況,例如登錄失敗、命令執(zhí)行失敗等。為了使腳本更加健壯,我們需要加入錯(cuò)誤處理機(jī)制。

使用Paramiko的錯(cuò)誤處理

以下是加入錯(cuò)誤處理后的paramiko腳本:

importparamiko
importtime

defssh_connect(hostname,username,password):
try:
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname,username=username,password=password)
returnssh
exceptparamiko.AuthenticationException:
print("認(rèn)證失敗,請(qǐng)檢查用戶名和密碼。")
exceptparamiko.SSHExceptionassshException:
print(f"無法建立SSH連接:{sshException}")
exceptExceptionase:
print(f"出現(xiàn)錯(cuò)誤:{e}")

defcreate_vlan(ssh,vlan_id,vlan_name):
try:
remote_conn=ssh.invoke_shell()
remote_conn.send("configureterminal
")
time.sleep(1)
remote_conn.send(f"vlan{vlan_id}
")
time.sleep(1)
remote_conn.send(f"name{vlan_name}
")
time.sleep(1)
remote_conn.send("end
")
time.sleep(1)
remote_conn.send("writememory
")
time.sleep(1)
output=remote_conn.recv(65535).decode('utf-8')
returnoutput
exceptExceptionase:
print(f"創(chuàng)建VLAN時(shí)出錯(cuò):{e}")

#示例用法
hostname='192.168.1.1'
username='admin'
password='password'
vlan_id=10
vlan_name='Test_VLAN'

ssh=ssh_connect(hostname,username,password)
ifssh:
output=create_vlan(ssh,vlan_id,vlan_name)
ifoutput:
print("VLAN創(chuàng)建成功")
print(output)
ssh.close()

使用Netmiko的錯(cuò)誤處理

以下是加入錯(cuò)誤處理后的netmiko腳本:

fromnetmikoimportConnectHandler,NetMikoAuthenticationException,NetMikoTimeoutException

defnetmiko_connect(hostname,username,password,device_type='cisco_ios'):
device={
'device_type':device_type,
'host':hostname,
'username':username,
'password':password,
}
try:
net_connect=ConnectHandler(**device)
returnnet_connect
exceptNetMikoAuthenticationException:
print("認(rèn)證失敗,請(qǐng)檢查用戶名和密碼。")
exceptNetMikoTimeoutException:
print("連接超時(shí),請(qǐng)檢查交換機(jī)的網(wǎng)絡(luò)連接。")
exceptExceptionase:
print(f"出現(xiàn)錯(cuò)誤:{e}")

defcreate_vlan(net_connect,vlan_id,vlan_name):
try:
commands=[
'configureterminal',
f'vlan{vlan_id}',
f'name{vlan_name}',
'end',
'writememory'
]
output=net_connect.send_config_set(commands)
returnoutput
exceptExceptionase:
print(f"創(chuàng)建VLAN時(shí)出錯(cuò):{e}")

#示例用法
hostname='192.168.1.1'
username='admin'
password='password'
vlan_id=10
vlan_name='Test_V

LAN'

net_connect=netmiko_connect(hostname,username,password)
ifnet_connect:
output=create_vlan(net_connect,vlan_id,vlan_name)
ifoutput:
print("VLAN創(chuàng)建成功")
print(output)
net_connect.disconnect()

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

    關(guān)注

    20

    文章

    2597

    瀏覽量

    98862
  • VLAN
    +關(guān)注

    關(guān)注

    1

    文章

    262

    瀏覽量

    35499
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4756

    瀏覽量

    84283
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    383

    瀏覽量

    14791

原文標(biāo)題:利用Python腳本怎么登錄到交換機(jī)并且創(chuàng)建VLAN?

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    三層交換機(jī)VLAN路由的配置方法

    掌握vlan路由技術(shù)之三層交換機(jī)vlan路由的配置方法和結(jié)果驗(yàn)證。
    的頭像 發(fā)表于 12-15 11:11 ?2650次閱讀
    三層<b class='flag-5'>交換機(jī)</b><b class='flag-5'>VLAN</b>路由的配置方法

    使用paramiko在eNSP的交換機(jī)中批量創(chuàng)建VLAN

    cloud連接本機(jī),ip地址為192.168.56.1,五臺(tái)交換機(jī)的配置的地址為192.168.1.11~55?,F(xiàn)在通過paramiko,ssh進(jìn)入五臺(tái)設(shè)備,并且在五臺(tái)設(shè)備上分別創(chuàng)建vlan10-vlan20這11個(gè)
    的頭像 發(fā)表于 01-20 17:52 ?1493次閱讀
    使用paramiko在eNSP的<b class='flag-5'>交換機(jī)</b>中批量<b class='flag-5'>創(chuàng)建</b><b class='flag-5'>VLAN</b>

    ISM交換機(jī)如何添加VLAN呢?

    兩臺(tái)交換機(jī)額直接,PC連接F1/1 VLAN100 。 兩臺(tái)交換機(jī)設(shè)置是一樣的,登錄交換機(jī)192.168.2.2 用戶名 adm 密碼 1
    發(fā)表于 07-25 07:55

    [分享]常見網(wǎng)絡(luò)交換機(jī)故障及應(yīng)用問答

    。通常,在VLAN結(jié)構(gòu)發(fā)生變化的交換機(jī)上才采用服務(wù)器方式傳輸信息。一般地,分配級(jí)或訪問級(jí)交換機(jī)都設(shè)置為“vtp client”,這樣它們便可以接收傳送這些信息,但并不主動(dòng)發(fā)送信息。如
    發(fā)表于 06-02 11:31

    華為路由器交換機(jī)VLAN配置實(shí)例

    華為路由器交換機(jī)VLAN配置實(shí)例[hide]華為路由器交換機(jī)VLAN配置實(shí)例使用4臺(tái)PC(pc多和少,原理是一樣的,所以這里我只用了4臺(tái)pc),華為路由器(R2621)、
    發(fā)表于 05-25 00:21

    交換機(jī)VLAN是如何實(shí)現(xiàn)的

    自動(dòng)設(shè)置對(duì)應(yīng)的VLAN ID。  5、基于用戶的VLAN  根據(jù)操作系統(tǒng)的登錄用戶決定VLAN?! ?、Access接口和Trunk接口  交換機(jī)
    發(fā)表于 01-12 16:16

    交換機(jī)VLAN配置

    交換機(jī)VLAN配置
    發(fā)表于 12-27 16:49 ?0次下載

    華為三層交換機(jī)如何配置開啟WEB網(wǎng)管功能

    配置交換機(jī)VLAN接口的IP地址,交換機(jī)與WEB網(wǎng)管終端間路由可達(dá)。配置欲登錄的WEB網(wǎng)管用戶名和認(rèn)證口令:第一步:通過 Console口正確配置以太網(wǎng)
    發(fā)表于 12-05 17:24 ?6.3w次閱讀
    華為三層<b class='flag-5'>交換機(jī)</b>如何配置開啟WEB網(wǎng)管功能

    二層交換機(jī)web配置教程

    啟動(dòng)WEB服務(wù) 配置交換機(jī)VLAN接口的IP地址,交換機(jī)與WEB網(wǎng)管終端間路由可達(dá)。配置欲登錄的WEB網(wǎng)管用戶名和認(rèn)證口令第一步:通過 Console口正確配置以太網(wǎng)
    發(fā)表于 03-06 11:06 ?2.6w次閱讀

    聊聊科地網(wǎng)管PoE交換機(jī)VLAN如何配置

    VLAN就是我們常說的虛擬局域網(wǎng)。VLAN是一種將局域網(wǎng)設(shè)備從邏輯上劃分成多個(gè)網(wǎng)段,從而實(shí)現(xiàn)虛擬工作組的數(shù)據(jù)交換技術(shù)。這一技術(shù)主要應(yīng)用于交換機(jī)和路由器中,但主流應(yīng)用還是在
    的頭像 發(fā)表于 12-11 16:29 ?9317次閱讀

    交換機(jī)劃分vlan的原因是什么

    有很多朋友就問到老胡vlan如何分配,這個(gè)是交換機(jī)在劃分網(wǎng)絡(luò)的時(shí)候會(huì)常用到,這里面我們就以最直接了解下,單獨(dú)對(duì)vlan基本操作,方便我們?nèi)粘L幚?b class='flag-5'>交換機(jī)配置,本期我們從
    發(fā)表于 08-18 15:44 ?2006次閱讀

    登錄網(wǎng)絡(luò)交換機(jī)的三種方法

    一般網(wǎng)絡(luò)交換機(jī)購(gòu)買后就可以直接使用。那么,如果要配置VLAN或關(guān)閉端口,首先應(yīng)該知道如何訪問交換機(jī)。下面以FS 3900-24F4S交換機(jī)為例詳細(xì)說明三種常見的
    發(fā)表于 10-29 17:24 ?1.1w次閱讀
    <b class='flag-5'>登錄</b>網(wǎng)絡(luò)<b class='flag-5'>交換機(jī)</b>的三種方法

    python巡檢華為交換機(jī)

    SSH登錄到各個(gè)交換機(jī)收集軟件版本、CPU、內(nèi)存利用率和硬件狀態(tài)信息。
    的頭像 發(fā)表于 12-30 09:13 ?1162次閱讀

    如何配置交換機(jī)SSH遠(yuǎn)程登錄?

    如何配置交換機(jī)SSH遠(yuǎn)程登錄,本期我們就來了解下ssh遠(yuǎn)程登陸的方式,以銳捷交換機(jī)為例。
    的頭像 發(fā)表于 08-02 09:35 ?3446次閱讀
    如何配置<b class='flag-5'>交換機(jī)</b>SSH遠(yuǎn)程<b class='flag-5'>登錄</b>?

    使用Python腳本備份華為交換機(jī)的配置信息

    在現(xiàn)代網(wǎng)絡(luò)管理中,備份交換機(jī)的配置信息是一項(xiàng)至關(guān)重要的任務(wù)。備份可以確保在交換機(jī)發(fā)生故障或配置錯(cuò)誤時(shí),能夠迅速恢復(fù)到之前的工作狀態(tài)。本文將詳細(xì)介紹如何使用Python腳本備份華為
    的頭像 發(fā)表于 08-12 17:50 ?410次閱讀
    使用<b class='flag-5'>Python</b><b class='flag-5'>腳本</b>備份華為<b class='flag-5'>交換機(jī)</b>的配置信息