通過雲來連線本地主機和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 =
("正在連線裝置.........."
)#呼叫connecthandler()函式,用上一步建立的字典進行ssh連線,並且將返回值賦予connect變數,注意**不可以省略
connect = connecthandler(
**sw2)
("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)
(output)
#呼叫connect的send_command()函式,傳送配置命令,並列印
result = connect.send_command(
'dis ip int brief'
(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)
("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
(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規則,保護內網位...