网络工程师的Python之路_通过交互式登录Switch

通过交互式登录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
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值