私はこのスクリプトを書いた。
#!/bin/bash
clear
echo -e "---------------------------------------------------------------------"
echo -e "| Client Name | No. of Backups | Size | Is Partial | Type |"
echo -e "---------------------------------------------------------------------"
vcenter_name=$(cat /usr/local/vdr/etc/vcenterinfo.cfg | grep vcenter-hostname | cut -d '=' -f 2)
client_list=$(avmgr getl --path=/$vcenter_name/VirtualMachines | awk '{print $2}' | tail -n+2)
base=1073741824
for i in $client_list
do
number_of_backup=$(avmgr getb --path=/$vcenter_name/VirtualMachines/$i | tail -n+2 | wc -l)
size=$(avmgr getb --path=/$vcenter_name/VirtualMachines/$i --format=xml | sed 's/ /\n/g' | grep totalbytes | head -n 1 | cut -d '=' -f 2 | tr -d '"' | cut -d '.' -f 1)
sizeInGB=$((size/base))GB
partial=$(avmgr getb --path=/$vcenter_name/VirtualMachines/$i --format=xml | sed 's/ /\n/g' | grep partial | cut -d '=' -f 2 | tr -d '"' | head -n 1)
if [ "$partial" == 0 ]
then
type="NO"
else
type="YES"
fi
pid=$(avmgr getb --path=/$vcenter_name/VirtualMachines/$i --format=xml | sed 's/ /\n/g' | grep pidnum | cut -d '=' -f 2 | tr -d '"' | head -n 1)
if [ "$pid" == 3016 ]
then
pidType="Windows"
else
pidType="Linux"
fi
printf "| $(echo $i | cut -d '_' -f 1) | $number_of_backup | $sizeInGB | $type | $pidType |\n"
done
スクリプトは非常にうまく動作します。しかし、出力は非常に歪んでいます。
---------------------------------------------------------------------
| Client Name | No. of Backups | Size | Is Partial | Type |
---------------------------------------------------------------------
| Test-Machine | 1 | 2GB | NO | Linux |
| VM-A | 3 | 1GB | NO | Windows |
| VM-B | 3 | 1GB | NO | Windows |
| VM-C | 3 | 1GB | NO | Windows |
| VM-D | 3 | 0GB | NO | Windows |
主な焦点は最初の列ですClient Name
。名前は可変長にすることができます。顧客名のみに基づいて列1のサイズを自動的に調整できますか?この列の顧客名は最大20文字まで含めることができます。
とても感謝しています。
スハス
答え1
使用printf
:
printf '%-20s|\n' 'abc' 'abcdefghijklmnop'
出力:
abc |
abcdefghijklmnop |
あなたの場合:
printf "| %-20s | %14s | %4s | %10s | %7s |\n" \
"$(echo $i | cut -d '_' -f 1)" "$number_of_backup" "$sizeInGB" "$type" "$pidType"