简介:本文将介绍如何使用Python实现SSH批量登录并执行命令,以便自动化管理远程服务器。
在Python中,可以使用paramiko库实现SSH批量登录并执行命令。paramiko是一个用于实现SSHv2协议的纯Python库,可用于连接和管理远程服务器。
首先,确保已经安装了paramiko库。如果没有安装,可以通过以下命令进行安装:
pip install paramiko
接下来,我们编写一个Python脚本,实现SSH批量登录并执行命令。在此示例中,我们将使用一个包含服务器IP地址和用户名/密码的列表来批量登录服务器。
import paramiko# 定义服务器列表,包括IP地址、用户名和密码servers = [('192.168.0.1', 'username1', 'password1'),('192.168.0.2', 'username2', 'password2'),# 添加更多服务器...]# 定义要执行的命令列表commands = ['ls','df -h',# 添加更多命令...]# 遍历服务器列表,逐个登录并执行命令for server in servers:ip, username, password = serverssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动添加主机密钥try:ssh.connect(ip, username=username, password=password) # 建立SSH连接for cmd in commands: # 遍历要执行的命令列表stdin, stdout, stderr = ssh.exec_command(cmd) # 执行命令output = stdout.read().decode() # 读取命令输出print(f'Server: {ip}Command: {cmd}Output:{output}') # 打印输出结果except paramiko.AuthenticationException: # 处理认证异常print(f'Authentication failed for server {ip}')except paramiko.SSHException as e: # 处理SSH连接异常print(f'Failed to establish SSH connection for server {ip}: {e}')finally:ssh.close() # 关闭SSH连接
在上面的代码中,我们首先定义了服务器列表和要执行的命令列表。然后,我们使用一个for循环遍历服务器列表,并使用paramiko库建立SSH连接。在连接成功后,我们遍历要执行的命令列表,并使用exec_command方法执行每个命令。最后,我们读取命令输出并打印结果。在处理过程中,我们还添加了一些异常处理逻辑来处理认证和SSH连接异常。
请注意,以上代码仅提供了一个基本的框架,你可能需要根据实际情况进行修改和扩展。例如,你可以添加更详细的错误处理逻辑、使用公钥身份验证而不是密码、并发执行多个命令等。此外,还要注意保护敏感信息,如密码,以防止安全漏洞。