Paramiko实验——(思科)网络搭建
小白网工的python之路
【Python-自动化】paramiko模块
paramiko介绍
paramiko是基于Python实现的SSH2远程安全连接,支持认证及密钥方式。可以实现远程命令执行、文件传输、中间SSH代理等功能,相对于Pexpect,封装的层次更高,更贴近SSH协议的功能
实验6中,各个交换机记得改名,不然都是一样的默认命名,配置文件通过ftp保存在/home/python,默认为交换机名-cfg,会一次一次的覆盖,最终结果就是一个SW5的配置文件,前4个文件全被覆盖了
实验环境
我的实验环境是GNS3搭建拓扑图,用云桥接到在VMware Workstation 16运行的CentOS 7,
CentOS 7上搭建好了python3.8,
所有交换机已经预配好了SSH服务,ssh登录账号为python,密码为123
拓扑
IP规划
CentOS 7 跑python代码 | 192.168.10.46 |
---|---|
vIOS-L2-1 | 192.168.10.111 |
vIOS-L2-2 | 192.168.10.112 |
vIOS-L2-3 | 192.168.10.113 |
vIOS-L2-4 | 192.168.10.114 |
vIOS-L2-5 | 192.168.10.115 |
实验一 -lab1
实验目的
用python代码实现SSH登录交换机(192.168.10.111),为其loop0接口配置IP(1.1.1.1/32)
先确定SW1上loop0没有IP:
在CentOS 7上创建paramiko-lab1.py文件:
python代码
import paramiko
import time
ip = "192.168.10.111"
username = "python"
password = "123"
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip,username=username,password=password,look_for_keys=False)
print ("Sucessfully login to ", ip)
command = ssh_client.invoke_shell()
command.send("configure terminal\n")
command.send("int loop 0\n")
command.send("ip address 1.1.1.1 255.255.255.255\n")
command.send("end\n")
time.sleep(1)
output = command.recv(65535)
print (output.decode('ascii'))
ssh_client.close()
- 重点代码解析:
- 先假定读这篇文章的朋友都有一定的基础,故简单的代码就不赘述了
- ssh_client = paramiko.SSHClient()
- ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- ssh_client.connect(hostname=ip,username=username,password=password,look_for_keys=False)
- 上面三条语句我称之为paramiko的ssh三件套,也就是说,使用paramiko模块进行ssh登陆网元都会要使用的命令
- command.send(),这里面填的就是我们要执行的命令了
- output = command.recv(65535),python截屏本次运行的输出记录,将其赋值给output这个变量
- print (output.decode('ascii')), 将output打印出来
- ssh_client.close(),退出SSH
执行代码
实验结果
验证结果
实验成功
由此,我们实验1成功!
实验二 -lab2
实验目的
- 实现交互式的SSH用户名和密码输入
- 配合for loop同时给5台交换机配置VLAN 111至VLAN 115
实验准备
执行我们的代码前,先确定我们的5台交换机没有相应的vlan配置:
SW1配置
SW2配置
SW3配置
SW4配置