我想写一个可以关闭远程 Ubuntu 系统的脚本。实际上,当我关闭安装了我的虚拟机的主机时,我希望我的虚拟机安全关闭。
是否可以借助 Sh 脚本或以 Python 等任何语言编写的脚本来执行此操作。
您可以从远程 Linux 机器(VM 主机)运行以下命令:
ssh root@<vm-client-ip> "shutdown -h now"
您必须输入远程计算机的 root 密码。您可以通过添加 ssh 证书来防止这种情况(如果您正在编写脚本则很好):
如果您以此为基础编写脚本,请不要忘记在关闭后添加延迟(例如sleep 10
),以便 VM 有时间安详地死去。
一个完整的 bash 脚本(未经测试):
#!/bin/bash
ssh root@<vm-client-ip> "shutdown -h now"
sleep 10
您可以使用管理程序,即在 qemu/KVM 的情况下使用 qm 脚本
qm shutdown 300 && qm wait 300
它关闭 ID 为 300 的 VM,并等待 VM 停止。有关更多选项,请参阅 qm 手册。
有很多方法可以关闭 Linux 系统。首选方法是调用窗口管理器的关闭序列。如果你正在使用gdm
(如果你正在使用你想使用的 Ubuntu,你可能就是这样:
gnome-session-quit --power-off
如果您使用kdm
的命令是:
kdmctl shutdown
其他关闭计算机的方法(可能大部分或完全等效,但都需要超级用户权限)包括:
/sbin/init 0
/sbin/halt
/sbin/shutdown -h now
/sbin/poweroff
等等等等
关闭系统的实际命令是关闭,特别是
$ shutdown -h now
现在关闭它。这需要在您要停止的机器上以超级用户权限运行。
您可以poweroff
从脚本调用,只要它以超级用户权限运行。
根据您使用的虚拟化产品(例如 KVM、VirtualBox、VMWare 等),应该有一个合适的界面可供您使用。
我建议您在 Google 上搜索您选择的虚拟化软件的名称 +“API”。上述所有示例都有相关的结果,可以从例如 Python 中调用。
对于 VirtualBox,请查看此链接:https ://blogs.oracle.com/nike/entry/python_api_to_the_virtualbox
这应该给你一个 SOAP 接口,它应该允许你通过例如 cURL 进行远程控制。
或者,对于远程方面,您可以在服务器上设置私钥身份验证并在本地保存您的密钥密码(例如 Seahorse),这样您就可以安全地访问 ssh,而无需每次都输入密码。