リモートUbuntuシステムをシャットダウンできるスクリプトを書きたいです。実際、VMがインストールされているメインマシンをシャットダウンするときに、VMを安全にシャットダウンしたいと思っています。
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
Linuxシステムをオフにする方法はたくさんあります。推奨される方法は、ウィンドウマネージャーのシャットダウンシーケンスを呼び出すことです。使用してgdm
いる場合(Ubuntuを使用している場合はおそらく使用したいものです:
gnome-session-quit --power-off
kdm
コマンドを使用している場合は次のとおりです。
kdmctl shutdown
コンピューターをシャットダウンする他の方法(ほとんどまたは完全に同等である場合とそうでない場合がありますが、すべてスーパーユーザー権限が必要です)には、次のものがあります。
/sbin/init 0
/sbin/halt
/sbin/shutdown -h now
/sbin/poweroff
などなど。
ハイパーバイザー、つまりqemu/KVMの場合はqmスクリプトを使用できます
qm shutdown 300 && qm wait 300
ID 300のVMをシャットダウンし、VMが停止するのを待ちます。その他のオプションについては、qmのマニュアルを参照してください。
システムをシャットダウンする実際のコマンドは、特にシャットダウンです。
$ shutdown -h now
今それをシャットダウンします。これは、停止するマシンでスーパーユーザー権限で実行する必要があります。
poweroff
スクリプトがスーパーユーザー権限で実行されている限り、スクリプトから呼び出すことができます。
使用している仮想化製品(KVM、VirtualBox、VMWareなど)に応じて、使用できる適切なインターフェイスが必要です。
選択した仮想化ソフトウェアの名前と「API」をGoogleで検索することをお勧めします。上記のすべての例には、Pythonなどから呼び出すことができる関連する結果があります。
VirtualBoxについては、次のリンクを確認してください:https ://blogs.oracle.com/nike/entry/python_api_to_the_virtualbox
これにより、cURLなどを介したリモート制御を可能にするSOAPインターフェイスが提供されます。
または、リモートの側面では、サーバーで秘密鍵認証を設定し、鍵のパスフレーズをローカルに保存することもできます(たとえば、Seahorseを使用)。これにより、毎回パスワードを入力しなくてもsshアクセスを保護できます。