python脚本判断远程服务器上sshpass服务是否存在,不存在则yum安装
时间: 2023-08-18 10:07:57 浏览: 144
在 Python 中可以使用 `paramiko` 模块来连接远程服务器,并使用 `subprocess` 模块来执行命令。判断 `sshpass` 服务是否存在,可以在远程服务器上执行 `sshpass -V` 命令,如果返回值为 0,则说明 `sshpass` 已经安装。如果返回值不为 0,则说明 `sshpass` 没有安装。
以下是一个示例代码:
```python
import paramiko
import subprocess
# 连接远程服务器
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('remote_host', username='username', password='password')
# 检查 sshpass 是否已经安装
try:
stdin, stdout, stderr = ssh.exec_command('sshpass -V')
if stdout.channel.recv_exit_status() != 0:
raise Exception('sshpass not found')
except Exception as e:
# 如果 sshpass 没有安装,则通过 yum 安装
print('sshpass not found, installing...')
stdin, stdout, stderr = ssh.exec_command('yum -y install sshpass')
if stdout.channel.recv_exit_status() != 0:
print('install sshpass failed')
print(stderr.read().decode('utf-8'))
else:
print('install sshpass success')
else:
print('sshpass already installed')
# 关闭连接
ssh.close()
```
在上述示例中,首先使用 `paramiko` 模块连接远程服务器。然后在远程服务器上执行 `sshpass -V` 命令检查 `sshpass` 是否已经安装。如果返回值不为 0,则说明 `sshpass` 没有安装,然后在远程服务器上执行 `yum -y install sshpass` 命令来安装 `sshpass`。如果安装成功,则输出 `install sshpass success`。如果安装失败,则输出 `install sshpass failed` 并输出安装日志。如果 `sshpass` 已经安装,则输出 `sshpass already installed`。最后关闭连接。
阅读全文