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

通过pexpect.pxssh模块实现Python下的SSH批量操作

发布时间:2023-12-26 06:52:48

pexpect.pxssh模块是一个用于在Python中自动化SSH连接和操作的模块。它基于pexpect模块,提供了更加简单和易用的接口来实现SSH连接和批量操作。

首先,我们需要使用pip安装pexpect和pexpect.pxssh模块:

pip install pexpect pexpect-pxssh

然后,我们可以使用以下代码实现SSH批量操作:

import pexpect
from pexpect import pxssh

# 定义SSH登录函数
def ssh_login(hostname, username, password):
    try:
        # 创建pxssh对象
        ssh = pxssh.pxssh()
        # SSH连接远程主机
        ssh.login(hostname, username, password)
        return ssh
    except:
        print("SSH Login failed.")
        return None

# 批量操作函数
def ssh_execute(ssh, command):
    ssh.sendline(command)
    ssh.prompt()
    return ssh.before.decode()

# 批量执行SSH命令
def batch_ssh_execute(hosts, username, password, command):
    for hostname in hosts:
        ssh = ssh_login(hostname, username, password)
        if ssh is not None:
            result = ssh_execute(ssh, command)
            print(f"Command result for {hostname}:")
            print(result)
            ssh.logout()

# 使用示例
if __name__ == "__main__":
    hosts = ["host1", "host2", "host3"]
    username = "user"
    password = "password"
    command = "ls -al"
    batch_ssh_execute(hosts, username, password, command)

在上述代码中,我们首先定义了ssh_login函数,用于通过SSH连接到远程主机。我们需要传入主机名、用户名和密码来完成登录过程。如果登录失败,会打印提示信息并返回None。

然后,我们定义了ssh_execute函数,用于执行指定的SSH命令。我们需要传入一个已经登录的pxssh对象和要执行的命令。该函数会将命令发送至远程主机,并返回执行结果。

最后,我们定义了batch_ssh_execute函数,用于批量执行SSH命令。我们需要传入一个主机列表、用户名、密码和要执行的命令。函数会遍历主机列表,对每个主机进行SSH登录和命令执行操作。

在使用示例中,我们定义了一个主机列表,其中包含了3个主机名。我们指定了一个要执行的命令,然后调用batch_ssh_execute函数来批量执行该命令。函数会依次连接每个主机,执行命令,并打印执行结果。

总结:

通过pexpect.pxssh模块,我们可以方便地实现在Python中使用SSH进行批量操作。该模块提供了简单易用的接口,可以实现SSH连接和命令执行的自动化。我们只需要传入主机名、用户名、密码和要执行的命令,即可实现批量操作。