2

我想写一个可以关闭远程 Ubuntu 系统的脚本。实际上,当我关闭安装了我的虚拟机的主机时,我希望我的虚拟机安全关闭。

是否可以借助 Sh 脚本或以 Python 等任何语言编写的脚本来执行此操作。

4

6 回答 6

5

您可以从远程 Linux 机器(VM 主机)运行以下命令:

ssh root@<vm-client-ip> "shutdown -h now"

您必须输入远程计算机的 root 密码。您可以通过添加 ssh 证书来防止这种情况(如果您正在编写脚本则很好):

SSH无密码登录

如果您以此为基础编写脚本,请不要忘记在关闭后添加延迟(例如sleep 10),以便 VM 有时间安详地死去。

一个完整的 bash 脚本(未经测试):

#!/bin/bash

ssh root@<vm-client-ip> "shutdown -h now"
sleep 10
于 2012-11-24T10:17:33.077 回答
2

您可以使用管理程序,即在 qemu/KVM 的情况下使用 qm 脚本

qm shutdown 300 && qm wait 300

它关闭 ID 为 300 的 VM,并等待 VM 停止。有关更多选项,请参阅 qm 手册。

于 2012-11-23T19:17:18.137 回答
2

有很多方法可以关闭 Linux 系统。首选方法是调用窗口管理器的关闭序列。如果你正在使用gdm(如果你正在使用你想使用的 Ubuntu,你可能就是这样:

gnome-session-quit --power-off

如果您使用kdm的命令是:

kdmctl shutdown

其他关闭计算机的方法(可能大部分或完全等效,但都需要超级用户权限)包括:

/sbin/init 0
/sbin/halt
/sbin/shutdown -h now
/sbin/poweroff

等等等等

于 2012-11-23T19:49:00.880 回答
1

关闭系统的实际命令是关闭,特别是

$ shutdown -h now

现在关闭它。这需要在您要停止的机器上以超级用户权限运行。

于 2012-11-23T19:10:04.053 回答
0

您可以poweroff从脚本调用,只要它以超级用户权限运行。

于 2012-11-23T19:10:37.253 回答
0

根据您使用的虚拟化产品(例如 KVM、VirtualBox、VMWare 等),应该有一个合适的界面可供您使用。

我建议您在 Google 上搜索您选择的虚拟化软件的名称 +“API”。上述所有示例都有相关的结果,可以从例如 Python 中调用。

对于 VirtualBox,请查看此链接:https ://blogs.oracle.com/nike/entry/python_api_to_the_virtualbox

这应该给你一个 SOAP 接口,它应该允许你通过例如 cURL 进行远程控制。

或者,对于远程方面,您可以在服务器上设置私钥身份验证并在本地保存您的密钥密码(例如 Seahorse),这样您就可以安全地访问 ssh,而无需每次都输入密码。

于 2012-11-23T20:11:32.510 回答