帮我写一个由python subprocess库远程操控虚拟机centos 执行onlineSwitch.sh脚本
时间: 2024-02-01 22:02:42 浏览: 30
好的,以下是一个使用 Python subprocess 模块远程操控 CentOS 虚拟机并执行 onlineSwitch.sh 脚本的示例代码:
```python
import subprocess
# CentOS 虚拟机的 IP 地址
ip_address = "192.168.1.100"
# 在 CentOS 虚拟机上执行 onlineSwitch.sh 脚本的命令
command = "ssh root@{} 'sh /path/to/onlineSwitch.sh'".format(ip_address)
# 执行命令并获取输出结果
result = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# 输出命令执行结果
print(result.stdout.decode("utf-8"))
```
以上代码中,我们首先定义了 CentOS 虚拟机的 IP 地址,并构建了一个执行 onlineSwitch.sh 脚本的命令,然后使用 Python subprocess 模块的 `run` 方法执行该命令,并获取输出结果,最后将输出结果打印出来。请注意将代码中的 `ip_address` 和 `/path/to/onlineSwitch.sh` 替换为实际的 IP 地址和脚本路径。另外,需要确保在 CentOS 虚拟机上已经安装了 SSH 服务。
相关问题
帮我写一个远程虚拟机执行sh /text/onlineSwitch.sh
好的,你可以使用下面的 Python 代码来执行远程虚拟机上的 `sh /text/onlineSwitch.sh` 命令:
```python
import subprocess
# 远程虚拟机的 IP 地址
remote_host = '192.168.0.100'
# 远程执行的命令
remote_cmd = 'sh /text/onlineSwitch.sh'
# 使用 SSH 连接远程主机,并执行命令
ssh_cmd = f'ssh {remote_host} "{remote_cmd}"'
result = subprocess.run(ssh_cmd, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# 输出执行结果
print(result.stdout.decode())
```
在这个代码中,我们使用 `subprocess.run()` 函数来执行远程 SSH 命令,其中 `remote_host` 变量是远程虚拟机的 IP 地址,`remote_cmd` 变量是要执行的命令。然后,我们将这两个变量拼接成一个完整的 SSH 命令,并使用 `subprocess.run()` 函数来执行它。最后,我们使用 `print()` 函数将执行结果打印出来。
用python写一个subprocess.Popen执行命令的脚本
在 Python 中,可以使用 `subprocess` 模块的 `Popen` 函数来执行外部命令。例如,要使用 `Popen` 执行命令 `ls -l`,可以这样写:
```
import subprocess
cmd = ['ls', '-l']
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
print(out.decode())
```
其中,`cmd` 是一个列表,表示要执行的命令和参数。`Popen` 函数会返回一个 `Popen` 对象,该对象有一个 `communicate` 方法,用于获取命令的输出和错误信息。调用 `communicate` 方法时,需要传入两个参数 `stdout` 和 `stderr`,表示将命令的输出和错误信息保存到哪里。在这里,我们将它们保存到了两个管道中。最后,我们使用 `decode` 方法将 `out` 和 `err` 转换成字符串,并使用 `print` 函数将它们输出到控制台。