Python中pxssh()模块对远程服务器进行批量操作的示例代码
发布时间:2023-12-25 06:26:22
pxssh模块是Python中实现SSH连接的一个模块,它基于Python的pexpect模块,并且添加了一些针对SSH连接和交互的功能。
下面是一个使用pxssh模块进行远程服务器批量操作的示例代码:
from pexpect import pxssh
def ssh_command(ip, username, password, command):
try:
# 创建ssh连接
session = pxssh.pxssh()
session.login(ip, username, password)
print("SSH session established to %s" % ip)
session.sendline(command)
session.prompt()
# 获取输出结果
result = session.before.decode()
return result
except pxssh.ExceptionPxssh as e:
print("pxssh failed on login.")
print(str(e))
if __name__ == "__main__":
# 远程服务器列表
servers = [
{"ip": "192.168.0.1", "username": "user1", "password": "password1"},
{"ip": "192.168.0.2", "username": "user2", "password": "password2"},
{"ip": "192.168.0.3", "username": "user3", "password": "password3"}
]
# 要执行的命令
command = "ls -l"
# 遍历服务器列表并执行命令
for server in servers:
ip = server['ip']
username = server['username']
password = server['password']
result = ssh_command(ip, username, password, command)
print("Output from %s:" % ip)
print(result)
上述代码定义了一个ssh_command()函数,该函数使用pxssh模块与远程服务器建立SSH连接,并发送要执行的命令。然后,它会等待命令执行完毕,并返回命令执行结果。
在if __name__ == "__main__":部分,我们定义了一个远程服务器列表,每个服务器包括IP地址、用户名和密码。然后,我们遍历服务器列表,将IP地址、用户名、密码和要执行的命令传递给ssh_command()函数。最后,打印出每个服务器的命令执行结果。
这是一个简单的通过pxssh模块对多个远程服务器进行批量操作的示例代码。
使用例子:
假设我们有三台远程服务器,IP地址分别是192.168.0.1、192.168.0.2和192.168.0.3。我们希望对这三台服务器执行ls -l命令,并获取命令执行的结果。
我们需要在代码中设置正确的用户名和密码,然后运行上述代码。代码会自动遍历远程服务器列表,依次连接每个服务器,执行命令,并打印出命令执行结果。
示例输出结果可能如下所示:
SSH session established to 192.168.0.1 Output from 192.168.0.1: total 10 drwxrwxr-x 2 user1 user1 4096 Dec 24 12:34 test1.txt drwxrwxr-x 2 user1 user1 4096 Dec 24 12:34 test2.txt -rw-rw-r-- 1 user1 user1 12 Dec 24 12:34 test3.txt SSH session established to 192.168.0.2 Output from 192.168.0.2: total 5 -rw-rw-r-- 1 user2 user2 24 Dec 24 12:34 test4.txt -rw-rw-r-- 1 user2 user2 19 Dec 24 12:34 test5.txt -rw-rw-r-- 1 user2 user2 14 Dec 24 12:34 test6.txt SSH session established to 192.168.0.3 Output from 192.168.0.3: total 8 -rw-rw-r-- 1 user3 user3 23 Dec 24 12:34 test7.txt drwxrwxr-x 2 user3 user3 6 Dec 24 12:34 test8.txt -rw-rw-r-- 1 user3 user3 32 Dec 24 12:34 test9.txt
上述输出结果显示了每个服务器的命令执行结果,可以看到每台服务器上的文件列表。
总结:
通过使用pxssh模块,我们可以轻松实现SSH连接到远程服务器并执行命令的功能。这个示例代码可以作为一个基础,用于扩展更复杂的远程服务器操作。
