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

Python中利用pxssh()模块实现多个远程服务器的集中管理

发布时间:2023-12-25 06:27:35

在Python中,可以使用pxssh模块来实现对多个远程服务器的集中管理。pxssh模块是Python的一个包装器,可以用于通过SSH远程连接到服务器并执行命令。

下面是一个使用pxssh模块实现多个远程服务器的集中管理的例子:

from pexpect import pxssh

# 定义远程服务器的IP地址、用户名和密码
servers = [
    {'ip': '192.168.1.101', 'username': 'user1', 'password': 'pass1'},
    {'ip': '192.168.1.102', 'username': 'user2', 'password': 'pass2'},
    {'ip': '192.168.1.103', 'username': 'user3', 'password': 'pass3'}
]

# 创建一个SSH连接函数
def ssh_connect(server):
    try:
        # 创建一个SSH连接对象
        ssh = pxssh.pxssh()

        # 通过SSH连接到远程服务器
        ssh.login(server['ip'], server['username'], server['password'])
        print(f"Connected to {server['ip']}")

        # 执行命令
        ssh.sendline('ls -l')
        ssh.prompt()

        # 打印命令输出
        print(ssh.before.decode())

        # 关闭SSH连接
        ssh.logout()
        print(f"Disconnected from {server['ip']}")
    except Exception as e:
        print(f"Failed to connect to {server['ip']}: {str(e)}")

# 循环遍历服务器列表,依次连接每个服务器
for server in servers:
    ssh_connect(server)

上面的例子中,首先定义了一个存储多个远程服务器信息的servers列表。每个服务器信息包括IP地址、用户名和密码。然后,使用pxssh模块中的pxssh()类来创建一个SSH连接对象。在ssh_connect()函数中,通过ssh.login()方法使用指定的IP地址、用户名和密码连接到远程服务器。然后,可以使用ssh.sendline()方法执行命令,并使用ssh.prompt()方法等待命令执行完成。最后,通过ssh.logout()方法断开SSH连接。

在主程序中,通过循环遍历服务器列表,依次连接每个服务器并执行一些命令。如果连接失败,将会打印出连接失败的信息。

使用pxssh模块可以方便地实现对多个远程服务器的集中管理,可以执行更复杂的命令并获取输出结果,也可以进行文件传输等操作。根据实际需求,可以扩展代码来实现更多功能,如批量执行命令、监控服务器状态等。