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()
相关推荐
belldeep15 分钟前
python:reportlab 将多个图片合并成一个PDF文件
python·pdf·reportlab
小堃学编程1 小时前
计算机网络(十) —— IP协议详解,理解运营商和全球网络
网络·tcp/ip·计算机网络
FreakStudio3 小时前
全网最适合入门的面向对象编程教程:56 Python字符串与序列化-正则表达式和re模块应用
python·单片机·嵌入式·面向对象·电子diy
丶21363 小时前
【CUDA】【PyTorch】安装 PyTorch 与 CUDA 11.7 的详细步骤
人工智能·pytorch·python
IPFoxy6663 小时前
探索路由器静态IP的获取方式
网络·智能路由器
_.Switch4 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
menge23334 小时前
VLAN:虚拟局域网
网络·智能路由器
一个闪现必杀技4 小时前
Python入门--函数
开发语言·python·青少年编程·pycharm
小鹿( ﹡ˆoˆ﹡ )4 小时前
探索IP协议的神秘面纱:Python中的网络通信
python·tcp/ip·php
ZachOn1y4 小时前
计算机网络:计算机网络概述 —— 初识计算机网络
网络·计算机网络·知识点汇总·考研必备