Python(NetOps)前传-网络设备开局配置

背景

我们知道用Python在cli配置网络设备的前提是:

  • 网络设备与Python主机网络可达
  • 网络设备已开启并完成ssh相关配置

目标

本文已华为S5720S-52P-LI-AC交换机为例,完成:

  1. 完成网络设备开局配置;
  2. 用Python脚本验证ssh登录

配置

一、网络设备开局配置

如果之前配置杂乱,建议console登录之后首先在用户视图下用reset saved-configuration删除配置,然后重启设备,如未重启原配置仍然生效;如果是新设备可直接进行开局配置。

1、console线连接

2、默认账户登录

交换机默认用户名admin 密码admin@huawei.com

路由器默认用户名admin 密码Admin@huawei

3、配置设备名称(可选)

复制代码
      #进入系统视图
      system view
      #重命名设备为XXX
      sysname xxx

4、配置时区时间(可选)

复制代码
      #配置时区
      clock timezone Beijing add 08:00:00
      
      #配置时间
      clock datatime 19:00:00 2024-03-06
      
      #查看配置
      dis clock

5、配置管理接口及IP

执行ip address命令,配置设备管理IP地址,执行命令ip route-static,配置设备缺省网关。

5.1、对于有管理网口的设备,在管理网口下配置管理IP地址
复制代码
int gi 0/0/0
ip address 192.168.99.1 24     //设备管理IP
q
ip route-static 0.0.0.0 0.0.0.0 192.168.99.1     //设备缺省网关
5.2、对于没有管理网口的设备,在vlanif接口下配置管理IP地址
复制代码
sys
vlan 99
q
int vlanif 99
ip add 192.168.99.1 24   //设备管理IP
q
ip route-static 0.0.0.0 0 192.168.99.1    //设备缺省网关

由于本文是准备将Python主机直接与S5720交换机SSH连接,所以需要将其中某个接口配置到管理接口下

复制代码
int gi 0/0/1
p l a       //全写是port link-type access
p d v 99     //全写是port default vlan 99

6、配置VTY

复制代码
sys
user-int vty 0 4
authentication-mode aaa    //配置VTY用户认证方式为AAA认证
protocol inbound ssh    //VTY用户界面所支持的协议缺省为ssh
q

7、配置AAA

注意:一般情况下ssh用户很多都用admin,但是出于安全性考虑,最好设置为非系统默认用户

复制代码
sys
aaa
local-user python password irreversible-cipher python@network
local-user python service-type ssh terminal
local-user python privilege level 15
q

8、创建SSH用户(可选)

复制代码
sys
ssh user python
ssh user python authentication-type password
ssh user python service-type stelnet

由于VTY默认采用AAA里配置的用户且支持ssh,所以可以不用再创建SSH用户

9、开启SSH服务

复制代码
stelnet server enable

二、用Python脚本验证ssh登录

1、通过paramiko模块ssh登录设备,并执行dis ip int b命令之后返回结果

2、代码

复制代码
import paramiko
import time
# 创建ssh客户端
ssh = paramiko.SSHClient()
# 自动添加主机密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接到远程服务器
ssh.connect('192.168.99.1',username='python',password='python@network')
# 参数说明:
# allow_agent:是否允许使用代理验证,默认为False
# look_for_keys:是否在本地寻找私钥文件,默认为False
# 执行命令
cli=ssh.invoke_shell()
cli.send('screen-length 0 temporary\n')
cli.send('dis ip int b\n')
time.sleep(3)
dis_cu = cli.recv(999999).decode()
print(dis_cu)
# stdin,stdout,stderr = client.exec_command('ls -l')
# print(stdout.read().decode())
# 关闭连接
# client.close()
相关推荐
FL171713141 小时前
Pytorch保存pt和pkl
人工智能·pytorch·python
爱学习的小道长3 小时前
进程、线程、协程三者的区别和联系
python·ubuntu
liu****3 小时前
27.epoll(三)
服务器·开发语言·网络·tcp/ip·udp
L-李俊漩3 小时前
MMN-MnnLlmChat 启动顺序解析
开发语言·python·mnn
云飞云共享云桌面4 小时前
如何降低非标自动化工厂的研发软件采购成本
运维·服务器·网络·数据库·性能优化·自动化
大雷神4 小时前
HarmonyOS 横竖屏切换与响应式布局实战指南
python·深度学习·harmonyos
钅日 勿 XiName4 小时前
一小时速通pytorch之训练分类器(四)(完结)
人工智能·pytorch·python
青瓷程序设计4 小时前
水果识别系统【最新版】Python+TensorFlow+Vue3+Django+人工智能+深度学习+卷积神经网络算法
人工智能·python·深度学习
*才华有限公司*5 小时前
基于BERT的文本分类模型训练全流程:从环境搭建到显存优化实战
python
时代新威powertime5 小时前
等保三级|安全通信网络自评估指南
网络·安全·等保测评