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

Python中使用pexpect.pxssh模块实现SSH登录和执行命令

发布时间:2023-12-26 06:51:50

在Python中,可以使用pexpect.pxssh模块来实现SSH登录和执行命令。Pexpect是一个用于在Python中自动执行和控制外部进程的库,pxssh是pexpect库的一个子模块,用于处理SSH连接。

下面是一个使用pexpect.pxssh模块实现SSH登录和执行命令的例子:

首先,安装pexpect模块:

pip install pexpect

然后,导入pxssh模块:

import pexpect.pxssh

接下来,创建一个SSH连接:

def create_ssh_connection(hostname, username, password):
    try:
        ssh = pexpect.pxssh.pxssh()
        ssh.login(hostname, username, password)
        print("SSH登录成功!")
        return ssh
    except Exception as e:
        print("SSH登录失败:", str(e))
        return None

在上述代码中,我们创建了一个pxssh对象并调用login方法来进行SSH登录。如果登录成功,将返回SSH连接对象,否则返回None。

然后,对SSH连接执行命令:

def execute_command(ssh, command):
    try:
        ssh.sendline(command)
        ssh.prompt()
        result = ssh.before.decode('utf-8')
        print("命令执行结果:")
        print(result)
        return result
    except Exception as e:
        print("命令执行失败:", str(e))
        return None

上述代码中,我们使用sendline方法将命令发送给SSH连接对象,使用prompt方法等待命令执行完毕,并使用before属性获取命令执行结果。

最后,关闭SSH连接:

def close_ssh_connection(ssh):
    try:
        ssh.logout()
        print("SSH连接已关闭!")
    except Exception as e:
        print("SSH连接关闭失败:", str(e))

上述代码中,我们使用logout方法关闭SSH连接。

使用上述函数实现SSH登录和执行命令的完整示例代码如下:

import pexpect.pxssh

def create_ssh_connection(hostname, username, password):
    try:
        ssh = pexpect.pxssh.pxssh()
        ssh.login(hostname, username, password)
        print("SSH登录成功!")
        return ssh
    except Exception as e:
        print("SSH登录失败:", str(e))
        return None

def execute_command(ssh, command):
    try:
        ssh.sendline(command)
        ssh.prompt()
        result = ssh.before.decode('utf-8')
        print("命令执行结果:")
        print(result)
        return result
    except Exception as e:
        print("命令执行失败:", str(e))
        return None

def close_ssh_connection(ssh):
    try:
        ssh.logout()
        print("SSH连接已关闭!")
    except Exception as e:
        print("SSH连接关闭失败:", str(e))

# 示例使用
ssh = create_ssh_connection("example.com", "username", "password")
if ssh:
    execute_command(ssh, "ls -l")
    close_ssh_connection(ssh)

在上述代码中,我们首先调用create_ssh_connection函数创建SSH连接,然后调用execute_command函数执行命令,最后调用close_ssh_connection函数关闭SSH连接。

需要注意的是,上述示例中的hostname、username和password是根据实际情况进行替换的,实际使用时,请将其替换为正确的SSH服务器地址、用户名和密码。

这就是使用pexpect.pxssh模块实现SSH登录和执行命令的示例。通过pexpect.pxssh模块,可以方便地在Python中进行SSH连接和执行命令,实现自动化脚本操作。