python自动化控制设备有限公司_华为 Python网络自动化

本文由思科出身的华为网工艺博东撰写,介绍了如何使用Python的Paramiko库进行VLAN、IP和路由协议配置,并通过telnetlib进行远程设备管理。通过实例展示了创建VLAN、配置IP地址、路由协议以及使用Python脚本实现自动化操作。
摘要由CSDN通过智能技术生成

哈喽,大家好!我是艺博东 ,是一个思科出身、专注于华为的网工;好了,话不多说,我们直接进入正题。

光棍二十年,不知道情人节是什么鬼东西。还是好好学技术吧!努力、奋斗吧!为了早日走向人生巅峰,迎娶白富美!拼了

1、安装环境并导入相关模块

首先是安装好Python3环境,接着安装Paramiko模块,然后输入pip3 install paramiko。

72449615afad99fa66175b02cdb09fd7.png

pip3 install paramiko

3722723bf669673fa2fa995a4ba6d6e4.png

de7a504e77f4c51a65d999de99771bf2.png

c1e4bd46efa80366c2d046ffd3cf660f.png

更新pip

pip install --upgrade pip

cadfe00df318fce8c8e7bf2e660febd1.png

4229b8967cb1d764f097b5161bef8708.png

OK

进入python,导入 paramiko模块

import paramiko

3bf6541654a498eb5974ae358046a670.png

2、创建VLAN并配置IP地址和路由协议

2.1 拓扑

a036da573f96e72f2c182bd1abe2a893.png

2.2 简单配置与测试

77e73b2ff1e991c8b97683f2057a4f83.png

SW1

[Huawei]sysname SW1

[SW1]vlan 100

[SW1-vlan100]q

[SW1]int Vlanif 100

[SW1-Vlanif100]ip address 192.168.117.254 24

[SW1-Vlanif100]int g0/0/1

[SW1-GigabitEthernet0/0/1]p l a

[SW1-GigabitEthernet0/0/1]p d v 100

[SW1-GigabitEthernet0/0/1]q

[SW1]user-interface vty 0 4

[SW1-ui-vty0-4]authentication-mode aaa

[SW1-ui-vty0-4]protocol inbound ssh

[SW1-ui-vty0-4]q

[SW1]aaa

[SW1-aaa]local-user ybd password cipher 1008611

[SW1-aaa]local-user ybd privilege level 15

[SW1-aaa]local-user ybd service-type ssh

[SW1-aaa]q

[SW1]ssh user ybd authentication-type password

[SW1]ssh user ybd service-type stelnet

[SW1]stelnet server enable

eNSP路由器AR1的PING测试物理机

[SW1]ping 192.168.117.1

12ced043905601a85ab0945558a1da8e.png

物理机PING测试eNSP路由器AR1

0e8b46cd103cf6a7382fd54e48e4f016.png

注意:做桥记得关闭防火墙,否则eNSP PING测不通物理机。

e08f04bb61c3230b00266b887e5edf28.png

2.3 python脚本

import paramiko

import time

ip = "192.168.117.254" #交换机的IP地址

user = "ybd" #SSH的用户名

pw = "1008611" #SSH的密码

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(hostname=ip, username=user , password=pw)

print("已成功登录到eNSP上的交换机了!" , ip)

#连接成功后,调用invoke_shell()方法来唤醒shell,也就是华为系统命令行,同时把它赋值给command,方便后续调用。

command = ssh.invoke_shell()

#向设备发送命令,需要执行的命令。

command.send("system \n")

command.send("vlan 120 \n")

command.send("quit \n")

command.send("int vlan 120 \n")

command.send("ip add 192.168.120.1 24 \n")

command.send("quit \n")

command.send("vlan 130\n") #创建vlan 130

command.send("quit \n") #返回上一级

command.send("int vlan 130 \n") #进入vlan 130 视图

command.send("ip add 192.168.130.1 24 \n") #配置IP地址

command.send("quit \n")

command.send("vlan 140\n")

command.send("quit \n")

command.send("int vlan 140 \n")

command.send("ip add 192.168.140.1 24 \n")

command.send("quit \n")

command.send("ospf 1 router-id 1.1.1.1 \n")

command.send("a 0 \n")

command.send("net 192.168.0.0 0.0.255.255 \n")

command.send("quit \n")

command.send("quit \n")

command.send("ip route-static 192.168.117.1 32 NULL 0 \n")

command.send("ospf 1 \n")

command.send("import-route static \n")

#使用sleep函数,让脚步执行后休息2s,再回显内容。65535是回显多少个字符

time.sleep(3)

output = command.recv(65535)

print(output.decode("ascii"))

ssh.close() #配置完后,用close方法退出ssh

运行结果:

27c694af8b36f82c37391c0632c74510.png

[SW1]display ip int brief

300dac51787f57a9f4424c5d9f15b8da.png

8e885e070decfaccf2051d4c8c8acc40.png

已OK

3、telnet 远程登录管理设备

3.1 拓扑

5f3de3c45aba5dbe866be065e0242401.png

3.2 简单配置与测试

60cd1320b363a43c3d73a9eb8d0e0c60.png

AR1

[Huawei]sysname AR1

[AR1]int g0/0/0

[AR1-GigabitEthernet0/0/0]ip address 192.168.150.254 24

[AR1-GigabitEthernet0/0/0]q

[AR1]user-interface vty 0 4

[AR1-ui-vty0-4]authentication-mode password

Please configure the login password (maximum length 16):1008611

[AR1-ui-vty0-4]protocol inbound telnet

[AR1-ui-vty0-4]user privilege level 15

[AR1-ui-vty0-4]q

eNSP路由器AR1的PING测试物理机

[AR1]ping 192.168.150.1

d4bd1999b77f92d0f59e0e780a3ca728.png

物理机PING测试eNSP路由器AR1

5fd61aeb2624207045fc2d55b4e85360.png

3.3 python脚本

import telnetlib

import time

host ='192.168.150.254'

password='1008611'

_UserTag = '>'

_SysTag = ']'

tn = telnetlib.Telnet(host)

tn.read_until(b'Password:')

tn.write(password.encode('ascii') + b"\n")

UserTag = tn.read_until(_UserTag.encode('ascii'))

response = UserTag

print(response.decode('ascii'))

time.sleep(2)

tn.write(b"dir\n")

response = UserTag

if b'>' in response:

print(response.decode('ascii'))

time.sleep(2)

tn.write(b"system-view\n")

SysTag = tn.read_until(_SysTag.encode('ascii'))

response = SysTag

print(response.decode('ascii'))

time.sleep(2)

tn.close()

print("close")

运行结果:

2d02068d29d9fc64e14cb2fd36de7f76.png

困难越大,荣耀也越大。——西塞罗

ec40d0ad4ac8771107ea9c220dc130d0.gif

好了这期就到这里了,如果你喜欢这篇文章的话,请点赞评论分享收藏,如果你还能点击关注,那真的是对我最大的鼓励。谢谢大家,下期见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值