来自AI助手的总结
通过SSH批量登录设备并自动执行统一命令

一、脚本运行前提
- 通过SSH登录
- 需要登录设备管理地址统一放在一个文件类型为.txt的文本文件,这里习惯命名为ip_list.txt
- 需要执行的命令统一放在一个文件类型为.txt的文本文件,这里习惯命名为cmd_5700.txt
二、万能脚本
#coding=utf-8
#使用import语句导入paramiko模块、time模块、sys模块和getpass模块
import paramiko
import time
#方便将getpass.getpass("password: ")简写成getpass("password: ")
from getpass import getpass
import sys
#使用input()函数以及getpass模块实现交互式输入用户名和密码
username = input("Username: ")
password = getpass("password: ")
#获取运行 Python 程序的命令行的第一个参数(在这里具体指python3.8后面的ip_list_cmd.txt)
ip_file = sys.argv[1]
#获取运行 Python 程序的命令行的第二个参数(在这里具体指python3.8后面的cmd5700.txt)
cmd_file = sys.argv[2]
#以只读的权限读取名为ip_list.txt的文件并将文件内容赋值给变量iplist
iplist = open(ip_file,'r')
#一行一行读取ip_list.txt文件内容并将其赋值给变量line
for line in iplist.readlines():
#将ip进行去除首尾空行处理
ip = line.strip()
#调用Paramiko的SSHClient()方法,将其赋值给变量ssh_client
ssh_client = paramiko.SSHClient()
#使用ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())来让Paramiko接受服务端提供的公钥
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#调用paramiko.SSHClient()的函数connect()进行SSH登录,look_for_keys=False用来解决避免Paramiko使用已存在密钥来登录设备
ssh_client.connect(hostname=ip, username=username, password=password, look_for_keys=False)
#打印提示信息
print("--------------------------------------------------------------")
print(f"You have successfully connect to {ip}.")
#调用Paramiko的SSHClient()的invoke_shell()方法来唤醒shell,即设备命令行
command = ssh_client.invoke_shell()
#以只读的权限读取名为cmd5700.txt的命令文件并将文件内容赋值给变量cmdlist
cmdlist = open(cmd_file,'r')
#将文件指针移到开头位置
cmdlist.seek(0)
#一行一行读取cmd5700.txt命令文件内容并将其赋值给变量line
for line in cmdlist.readlines():
#执行cmd5700.txt文件里命令
command.send(line + '\n')
#调用time模块下的sleep()函数手动让Python休眠3秒
time.sleep(3)
#关闭cmd5700.txt文件
cmdlist.close()
#设置命令行最大回显内容数并将其赋值给变量output并用decode("ascii")将其解析为ASCII编码
output = command.recv(65535).decode('ascii')
print(output)
#关闭文件ip_list.txt文件
iplist.close()
#断开SSH连接
ssh_client.close()
三、适用场景
- 多台同厂商设备需要配置相同的配置
四、操作系统
脚本可以在 Windows 和 Linux 两类环境中运行,区别主要在于启动方式和参数传递方式。
4.1 windows系统
-
4.1 IDLE环境
-
4.1 在脚本所在文件夹下新建两个文件,一个包含需要登录的设备管理地址,另一个包含需要执行的命令,过程略
使用IDLE运行脚本

添加sys.argv[1]、sys.argv[2]的参数


输入交换机的账号和密码即可

注意:windows环境下输入的密码是明文的,这个不用理会
-
4.1 CMD环境
-
4.1 在脚本所在文件夹下新建两个文件,一个包含需要登录的设备管理地址,另一个包含需要执行的命令,过程略
同时按’window键’和’R’键并输入’cmd’进入命令行视图

进入脚本所在文件夹

在脚本所在文件夹下执行脚本文件

4.2 Linux系统
创建需要两个文件,一个包含需要登录的设备管理地址,另一个包含需要执行的命令

创建万能脚本

执行脚本

© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END







暂无评论内容