我希望通過使用「nstats」命令來獲得一個完整的主機名及其服務器正常運行時間。該腳本似乎工作正常。我需要第一列的「完整」主機名和第七列(服務器正常運行時間)的幫助。使用awk格式化nstats的輸出
這下面的命令只給我自己的部分主機名:
for host in $(cat servers.txt); do nstats $host -H | awk 'BEGIN {IFS="\t"} {$2=$3=$4=$5=$6=$9="" ; print}' ; done
BAD輸出:(主機名拿到了第12個字符後切斷)
linux_server 223 days
linux_server 123 days
windows_serv 23 days
windows_serv 23 days
預期的輸出:
linux_server1 223 days
linux_server2 123 days
windows_server1 23 days
windows_server2 123 days
是項
servers.txt文件的內容如下:
linux_server1
linux_server2
windows_server1
windows_server2
輸出而不AWK
LINXSERVE10% for host in $(cat servers.txt); do nstats $host -H ; done
linux_server 0.01 47% 22% 56 05:08 20 days 17:21:00
linux_server 0.00 23% 8% 45 05:08 24 days 04:16:46
windows_serv 0.04 72% 30% 58 05:09 318 days 23:32:17
windows_serv 0.00 20% 8% 40 05:09 864 days 12:23:10
windows_serv 0.00 51% 17% 41 05:09 442 days 05:30:14
注:for host in $(cat servers.txt); do nstats $host -H | awk -v server=$host 'BEGIN {IFS="\t"} {$2=$3=$4=$5=$6=$9="" ; print server }' ; done
***此工程確定,但它只會列表沒有服務器正常運行時間的完整主機名。
任何幫助,你可以給予將不勝感激。
你能說明一個'nstats $ host -H'的輸出是什麼嗎?另外,最好是在讀主機的同時,做...;完成
fedorqui
2014-11-03 09:48:05
awk命令本身不會剪切字段的輸出。 – Jdamian 2014-11-03 10:04:55
仍然可以使用「awk」通過變量$ host回顯服務器正常運行時間?類似於{print $ host,$ 7,$ 8}'; – Sunny 2014-11-03 10:22:05