欢迎访问宙启技术站
智能推送

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连接到远程服务器并执行命令的功能。这个示例代码可以作为一个基础,用于扩展更复杂的远程服务器操作。