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()
相关推荐
Scott9999HH4 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
AI云海5 小时前
python 列表、元组、集合和字典
开发语言·python
二十雨辰5 小时前
[爬虫]-Urllib
爬虫·python
andxe7 小时前
安科士 AndXe 技术博客:400G QSFP112 SR4 光模块|AI 算力与超算短距互联最优方案
网络·人工智能·光模块·光通信
玉鸯7 小时前
Agent Hook:在概率推理之上,为 Agent 叠加确定性控制
python·langchain·agent
shiyi.十一7 小时前
第2章:应用层 — 知识要点与架构
网络·计算机网络·架构
weixin_446260858 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask
我的xiaodoujiao8 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2
python·学习·测试工具·pytest
DFT计算杂谈8 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习