帮我写一个远程虚拟机执行sh /text/onlineSwitch.sh
时间: 2023-12-07 14:03:50 浏览: 77
好的,你可以使用下面的 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()` 函数将执行结果打印出来。
相关问题
能否默认账号密码远程控制虚拟机执行sh /text/onlineSwitch.sh
不建议在代码中明文存储用户名和密码。更好的做法是使用 SSH 密钥对进行认证,这样可以避免在代码中存储密码,并提高安全性。
下面是一个使用 SSH 密钥对进行认证的例子,可以在不输入密码的情况下通过 SSH 连接远程虚拟机,并执行命令:
```python
import paramiko
# 远程虚拟机的 IP 地址和 SSH 端口号
remote_host = '192.168.0.100'
remote_port = 22
# SSH 密钥文件的路径和密码
key_filename = '/path/to/ssh_key'
key_password = 'your_key_password'
# 连接远程虚拟机
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=remote_host, port=remote_port, username='your_username',
key_filename=key_filename, password=key_password)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('sh /text/onlineSwitch.sh')
# 输出执行结果
print(stdout.read().decode())
# 关闭 SSH 连接
ssh.close()
```
在这个例子中,我们使用 `paramiko` 库来实现 SSH 连接和命令执行。首先,我们需要指定远程虚拟机的 IP 地址、端口号、用户名、SSH 密钥文件的路径和密码。然后,我们使用 `paramiko.SSHClient()` 函数来创建一个 SSH 客户端,并使用 `connect()` 函数来连接远程虚拟机。在连接成功后,我们就可以使用 `exec_command()` 函数来执行命令,该函数返回标准输入、标准输出和标准错误流。最后,我们使用 `print()` 函数将执行结果打印出来,然后关闭 SSH 连接。
帮我写一个由python subprocess库远程操控虚拟机centos 执行onlineSwitch.sh脚本
好的,以下是一个使用 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 服务。
阅读全文