vim-cmd vmsvc/getallvms
次のように出力します。
id virtual machine name
11 VirtualMachine1
15 Virtual Machine 1
6 Virtu al Machin e 1
9 Virtual Machine one
21 VirtualMa chineone
次を使用してIDを取得します。
vm_ids=$(vim-cmd vmsvc/getallvms | awk 'NR>1 {print $1}' | egrep "[0-9]+")
次に、それらをループして、それぞれに対してコマンドを実行したいので、次のようにします。
i=2
for id in $vm_ids
do
vm_name=$(vim-cmd vmsvc/getallvms | awk -v i=$i -F "[[:space:]]{2,}+" 'NR==i {print $2}' | egrep "$[[:alnum:]]")
echo "Doing something to ID: $id for machine: $vm_name"
$((i++))
done
null
私のスクリプトは、それらの空の行に到達すると値 を返します。
名前を返すさまざまな方法を示すために、このような仮想マシン名を付けました。ESXi がインストールされていないtr
ため、これらの行を出力から削除するにはどうすればよいですか? または、これを行うためのより良い方法はありますか?