批量登录不同网段的switch
实验拓扑

需求
需求:
- 通过读取本地的ip-list文件来交互式登录交sw
- 给5台交换机配置ospf协议
重要: - f = open(“ip_list.txt”,“r”)
- for line in f.readlines():
首先需要检查这几台交换机有没有配置ospf协议  本地文件:
[root@localhost ~]
192.168.2.110
192.168.2.112
192.168.2.113
192.168.2.114
192.168.2.55
py程序
import paramiko
import time
from getpass import getpass
username = input("Username: ")
password = getpass("Password: ")
f = open("ip_list.txt","r")
for line in f.readlines():
ip = line.strip()
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip,username=username,password=password)
print("successfully connected to ", ip)
cmd = ssh_client.invoke_shell()
cmd.send("conf t\n")
cmd.send("router ospf 1\n")
cmd.send("end\n")
cmd.send("wr mem\n")
time.sleep(1)
output = cmd.recv(65535)
print(output.decode("ascii"))
f.close()
ssh_client.close
运行程序
  登录到switch上进行检查,可见均已配置 
总结
- f = open(“ip_list.txt”,“r”) 读取本地的文件(这个文件内存放了需要登录的ip)r为只读方式,只能打开已经存在的文件,若文件不存在,则会报错
- readlines()是一排一排的读取文件的内容,并且返回的内容是一个list;readlines()取出来的是一个list,并且其后带有\n
- strip()可以将头尾的空格、\n \t这种的转义字符删除,即从文本中拿到单独的ip地址
|