通过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连接和命令执行的自动化。我们只需要传入主机名、用户名、密码和要执行的命令,即可实现批量操作。
