批量登录不同网段的switch
实验拓扑
![在这里插入图片描述](https://img-blog.csdnimg.cn/2b82ac099e1b47968f7b3859ef22140e.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTU5ODk5,size_16,color_FFFFFF,t_70)
需求
需求:
- 通过读取本地的ip-list文件来交互式登录交sw
- 给5台交换机配置ospf协议
重要: - f = open(“ip_list.txt”,“r”)
- for line in f.readlines():
首先需要检查这几台交换机有没有配置ospf协议 ![在这里插入图片描述](https://img-blog.csdnimg.cn/dc520f1d66804793b55ee1f826250c85.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTU5ODk5,size_16,color_FFFFFF,t_70) 本地文件:
[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
运行程序
![在这里插入图片描述](https://img-blog.csdnimg.cn/2dfa9a68a79d47a095506de7d4dafc2b.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTU5ODk5,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/8fabd3976e2346feb96d4ac5b1f83aef.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTU5ODk5,size_16,color_FFFFFF,t_70) 登录到switch上进行检查,可见均已配置 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b82366f8793f4e1da359c44436974a3c.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTU5ODk5,size_16,color_FFFFFF,t_70)
总结
- f = open(“ip_list.txt”,“r”) 读取本地的文件(这个文件内存放了需要登录的ip)r为只读方式,只能打开已经存在的文件,若文件不存在,则会报错
- readlines()是一排一排的读取文件的内容,并且返回的内容是一个list;readlines()取出来的是一个list,并且其后带有\n
- strip()可以将头尾的空格、\n \t这种的转义字符删除,即从文本中拿到单独的ip地址
|