帮我写一个由python subprocess库远程操控虚拟机centos 执行onlineSwitch.sh脚本
时间: 2024-02-01 13:02:39 浏览: 73
对Python subprocess.Popen子进程管道阻塞详解
好的,我可以为您提供一个基本的代码框架,您可以根据自己的实际情况进行修改:
```python
import subprocess
# 定义虚拟机IP地址和登录信息
ip_address = "192.168.1.100"
username = "your_username"
password = "your_password"
# 定义执行命令的函数
def run_command(command):
ssh = subprocess.Popen(["ssh", "-o", "StrictHostKeyChecking=no", f"{username}@{ip_address}", command],
shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
result = ssh.stdout.readlines()
if result == []:
error = ssh.stderr.readlines()
print(f"ERROR: {error}")
else:
print(result)
# 远程登录虚拟机并执行脚本
run_command(f"echo {password} | sudo -S /path/to/onlineSwitch.sh")
```
在上述代码中,我们使用了 `subprocess` 库的 `Popen` 方法远程登录虚拟机,并执行了指定的脚本。
需要注意的是,为了安全起见,我们在 `ssh` 命令中使用了 `-o StrictHostKeyChecking=no` 参数,以避免在第一次连接时出现“未知主机”警告。此外,我们在执行脚本时使用了 `echo password | sudo -S` 命令,以自动输入密码并获得管理员权限。
请注意,此代码仅为示例,您需要根据自己的实际情况进行修改和调整。
阅读全文