使用python連線eNSP中交換機並新增配置

2021-10-19 05:29:50 字數 4313 閱讀 2437

通過雲來連線本地主機和ensp中的裝置,保證雙方能互相通訊。ip位址規劃入圖中所示,現在通過python連線到sw1、sw2、sw3上做配置修改。

版本:python3.9

#匯入telnetlib模組

import telnetlib

#設定sw1的管理位址,使用者名稱和密碼三個變數

host =

"192.168.56.11"

user =

"prin"

password =

"huawei@123"

#呼叫telnetlib的telnet函式,連線sw1,並將值賦予tn

tn = telnetlib.telnet(host)

#呼叫read_until()函式,告訴python讀到username時輸入user變數的值

tn.read_until(b"username:"

)tn.write(user.encode(

'ascii'

)+b"\n"

)#呼叫read_until()函式,告訴python讀到password時輸入password變數的值

tn.read_until(b"password:"

)tn.write(password.encode(

'ascii'

)+b"\n"

)#通過write()函式輸入配置的命令,完成後退出telnet

tn.write(b"sys \n"

)tn.write(b"int l0 \n"

)tn.write(b"ip address 1.1.1.1 32 \n"

)tn.write(b"return \n"

)tn.write(b"quit\n"

)

最終結果:可以看到在sw1上建立了loopback0介面,並且有了ip位址。

在sw2上配置了ssh,現在通過netmiko模組連線到sw2並建立乙個loopback0介面,ip位址為2.2.2.2/32。

交換機ssh配置命令:

# 建立秘鑰

[sw2]dsa local-key-pair create

## 配置ssh認證型別(密碼/其他)

[sw2]ssh user prin authentication-type password

[sw2]ssh user prin service-type stelnet

[sw2]stelnet server enable

## 配置認證模式

[sw2]user-inte***ce vty 0

4[sw2-ui-vty0-

4]authentication-mode aaa //配置認證模式

[sw2-ui-vty0-

4]protocol inbound ssh //允許 ssh 連線虛擬終端

## 配置本地使用者資訊

[sw2]aaa

[sw2-aaa] local-user prin password cipher huawei@123

[sw2-aaa]local-user prin privilege level 15

[sw2-aaa] local-user prin service-type ssh

**如下:

from netmiko import connecthandler

#裝置型別為huawei,除此之外,還支援絕大多數主流廠商的裝置,這也是netmiko的優勢;其餘上引數分別為sw2的ip,ssh的使用者名稱和密碼

sw2 =

print

("正在連線裝置.........."

)#呼叫connecthandler()函式,用上一步建立的字典進行ssh連線,並且將返回值賦予connect變數,注意**不可以省略

connect = connecthandler(

**sw2)

print

("successfully connected to "

+sw2[

'ip'])

#設定乙個列表,其中為配置的命令,這裡可以省略'sys'和'return',因為netmiko會自動加上

config_commands =

['int l0'

,'ip address 2.2.2.2 255.255.255.255'

]#呼叫connect的send_config_set()函式,傳送配置命令,並列印出來

output = connect.send_config_set(config_commands)

print

(output)

#呼叫connect的send_command()函式,傳送配置命令,並列印

result = connect.send_command(

'dis ip int brief'

)print

(result)

#注意connect.send_command()僅能傳送乙個命令,而send_config_set()函式則可以一次性傳送多個命令

執行程式列印出來的結果:

注意,netmiko常見支援的裝置如下:

在sw2上配置了ssh,現在通過paramiko模組連線到sw3並建立乙個loopback0介面,ip位址為3.3.3.3/32。

**如下:

import paramiko

#import time的目的是為了保證不會因為輸入命令或者回顯內容過快而導致ssh終端速度跟不上,僅能顯示部分命令,而netmiko已經自動解決了此問題

import time

#建立三個變數,表示sw3的ip位址、ssh的使用者名稱和密碼

ip =

"192.168.56.33"

username =

"prin"

password =

"huawei@123"

#呼叫paramiko的sshclient()函式,並賦值給ssh_client,表示本端作為ssh的客戶端

ssh_client = paramiko.sshclient(

)#呼叫set_missing_host_key_policy()函式,用來接受ssh伺服器端提供的公鑰

ssh_client.set_missing_host_key_policy(paramiko.autoaddpolicy())

#呼叫connect()函式,輸入ip位址、ssh使用者名稱和密碼三個引數,進行連線

ssh_client.connect(hostname=ip, username=username, password=password)

print

("successfully connect to "

, ip)

#ssh連線成功後,需要使用invoke_shell()方法喚醒shell,並賦值給command

command = ssh_client.invoke_shell(

)#呼叫command的send()函式,傳送配置的資訊給sw3

command.send(

"sys \n"

)command.send(

"int l0 \n"

)command.send(

"ip address 3.3.3.3 32 \n"

)command.send(

"return \n"

)command.send(

"quit \n"

)#為了保證回顯內容能夠列印出來,需要先呼叫time模組的sleep()函式讓python休眠2s

time.sleep(2)

#呼叫command的recv()函式擷取回顯的內容,並列印出來,65535表示擷取65535個字元,也是一次性最大能夠擷取的

output = command.recv(

65535

)print

(output.decode(

"ascii"))

#配置完成後,使用close方法退出ssh

ssh_client.close(

)列印結果:

網路學習之eNSP使用

組網 網路組建 學習ensp主要是為了擁有一定的網路組建能力,看得懂網路拓撲圖,自己能夠繪製,並且對常見的網路裝置有一定的了解,可以進行一些安全配置等。下面介紹ensp ensp enterprise network simulation platform 是一款由華為提供的免費的 可擴充套件的 圖...

華為模擬器ensp與真實機器連線使用的配置內容一

一.ensp的基礎設定 還回網絡卡設定以及華為模擬器的設定 示例 本機虛擬網絡卡 還回網絡卡訪問虛擬機器的路由器 二.開啟相應服務 路由交換試驗 1.開啟telnet服務 rlab telnet server enable 2.user使用者配置 rlab user inte ce vty 0 4 ...

使用ensp配置網路安全

拓撲圖 在此基礎上繼續搭建 配置路由器與防火牆之間的互聯位址為192.168.5.2 24,在路由器ospf中發布與防火牆網際網路段。配置防火牆與路由器互聯位址為192.168.5.1 24.配置與外網互聯位址為192.168.12.9 24,設定外網預設路由。配置內網訪問外網nat規則,保護內網位...