備忘録的小ネタ。書いてみたら大きくなりました。
先日某 vSphere のストレージでトラブった際 VM コンソールに Readonly 落ちが出ていないかを確認するのに govc をブン回して screenshot を取得したという苦労話を聞いた。
え、govc 単独で VM コンソールの screenshot を取れるの?ということで試してみる。
Usage
govmomi/USAGE.md at master · vmware/govmomi · GitHub
screenshot で探してみると確かにありますねぇ…
Usage: govc vm.console [OPTIONS] VM Generate console URL or screen capture for VM. One of VMRC, VMware Player, VMware Fusion or VMware Workstation must be installed to open VMRC console URLs. Examples: govc vm.console my-vm govc vm.console -capture screen.png my-vm # screen capture govc vm.console -capture - my-vm | display # screen capture to stdout open $(govc vm.console my-vm) # MacOSX VMRC open $(govc vm.console -h5 my-vm) # MacOSX H5 xdg-open $(govc vm.console my-vm) # Linux VMRC xdg-open $(govc vm.console -h5 my-vm) # Linux H5 Options: -capture= Capture console screen shot to file -h5=false Generate HTML5 UI console link -vm= Virtual machine [GOVC_VM]
govc とは
あれ govc の話って前にしなかったっけ?と思ったらあれは VMUG の中でのネタか…
なので、 public には何も出てないのでとりあえず資料から抜粋だけ。
詳細は割愛。ちょっと調べればいっぱい出てくる…はず。
https://github.com/vmware/govmomi/tree/master/govc ・Go 言語 (govmomi) で書かれた OSS の CLI ツール ・Windows / Linux / MacOS / FreeBSD 対応 ・PowerCLI 相当の vCenter/ESXi 操作が可能 ・vSAN や NSX などの他コンポーネントは未対応 ・数MBのバイナリファイル1つのみなので可搬性が高い
取得してみる
試しに vCSA の VM コンソールを取得してみる。
vSphere Client 上でのコンソール表示は ↓ の感じ。
govc を叩いて screenshot をファイルに出力する(実行は WSL 上から)
# screenshot 取得、特にコンソール上に結果出力などはなし。 $ govc vm.console -capture screen.png Embedded-vCenter-Server-Appliance # file で見てみる。 $ file screen.png screen.png: PNG image data, 800 x 600, 8-bit/color RGB, non-interlaced
実際に取得したスクショのファイルは ↓
おぉぉ、すごい。ちゃんと取れてる。
ちなみに VMRC とかは入っていません。
PowerCLI でもできるのかな?
デフォルトの cmdlet だと入っていないが、自前でスクリプト書けばできるっぽい。
例えば ↓のページに実装例が載っています。
www.vcloudnine.de
MoRef
というか、↑ のページの PowerShell 見ていて知ったのですが。
下記の URL で VM のコンソール表示だけできるんですね…(要 vCenter UserID/Password)
https://【vCSA IP or ドメイン】/screen?id=【VM の moid】
vSphere Client から開くものとは異なっており、本当にコンソール表示だけで、ここでマウスとかキーボードとか操作しても VM 側には渡されていない…
というか、コンソールが画像として表示されています。
画像なのでコンソール出力に変化があっても再描画されない。
ほーコンソールの画像生成はそもそも vCenter 側で行っていて、 PowerCLI も govc もこの生成された画像をダウンロードしているだけなのね。
余談
最初は govc の話だけだったはずが、ついでで PowerCLI 調べてみたらかなり話が広がってしまった…