TL; DR
> govc vm.keystrokes -vm photon-ova -s 'echo \"hello, world!\"'
> govc vm.keystrokes -json -vm photon-ova -c KEY_ENTER
はじめに
VMに対する作業で毎回Webコンソールをポチポチやるのにつらみを感じたので、govc を使って自動化してみました。
バージョン
- vSphere: 7.0u3
- govc: v0.29.0
- ゲストOS: VMware Photon OS 4.0
govc vm.keystrokes
このコマンドを使うと、VMのゲストOSにキーボード入力を送信できます。
# ダブルクォーテーションはエスケープが必要
> govc vm.keystrokes -vm photon-ova -s 'echo \"hello, world!\"'
> govc vm.keystrokes -json -vm photon-ova -c KEY_ENTER
webコンソールで確認すると、コマンドが確かに実行されています。
ご覧の通り送信方法は2種類あり、改行等特殊文字を送る必要がある場合は -c
しか使えません。
オプション | 内容 |
---|---|
-s |
文字列を直接指定 |
-c |
文字列をアスキーコードorエイリアス1で指定 |
vmがパワーオフ状態等で文字入力できなかった場合はエラーが返ります。$?
をチェックして後続処理を打ち切れば、スクリプトで複数行コマンドを流す際も安全です。
> govc vm.keystrokes -vm vm1 -c KEY_ENTER
govc.exe: ServerFaultCode: vim.fault.InvalidPowerState
> echo $?
False
おわりに
以上、ゲストOSへのキーボード入力を自動化する方法でした。
うまくスクリプトを組めば、ログインから初期設定まで一気通貫で自動化できそうです。
-
エイリアス一覧は
govc vm.keystrokes -h
で確認できます(記事中のKEY_ENTER
もエイリアスです)。 ↩