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连接和执行命令,实现自动化脚本操作。
