通过交互式登录SW批量刷vlan
实验拓扑
需求
- input()和getpass()来交互式登录SW
- 给5台Sw添加vlan10-20
重要
- input() 输入username
- getpass() 不带回显的输入密码
py程序:
import paramiko
import time
import getpass
#用于从终端获取到登录的用户名与密码
username = input('Username: ')
password = getpass.getpass('Password: ')
#SW的IP从111-115
for i in range(111,116):
ip = "192.168.2." + str(i)
ssh_client = paramiko.SSHClient()
#默认情况下,paramiko会拒绝任何未知的SSH公钥(publickey)
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#ssh login
ssh_client.connect(hostname=ip,username=username,password=password)
print("successfully connected to ", ip)
# 通过invoke_shell()方法来唤醒shell,对SW输入命令
cmd = ssh_client.invoke_shell()
# netmiko不需要输入conf t、end、write memory
cmd.send("conf t\n")
#添加vlan10-20
for j in range(10,21):
#打印正在执行的动作
print("Creating VLAN" + str(j))
cmd.send("vlan " + str(j) + "\n")
cmd.send("name test_v" + str(j) + "\n")
time.sleep(1)
#注意:外层循环用于登录每台switch,所以要在外层循环下面对输入的命令进行保存
cmd.send("end\n")
cmd.send("wr mem\n")
time.sleep(2)
output = cmd.recv(65535)
print(output.decode("ascii"))
ssh_client.close
程序开始前,首先需要确认这个5台交换机上没有vlan10-vlan20
SW2:
SW3:
SW4:
SW5:
运行程序
回到switch上检查是否将vlan添加成功
总结
- input()可以读取用户输入的字符,本程序中是将其传给username
- getpass()是不带回显的输入密码,本程序中是将其传给password
- 外层for循环登录有规律的switch、内层for循环创建vlan,并name