2014-11-03 81 views
0

我希望通过使用“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 ***此工程确定,但它只会列表没有服务器正常运行时间的完整主机名。

任何帮助,你可以给予将不胜感激。

+1

你能说明一个'nstats $ host -H'的输出是什么吗?另外,最好是在读主机的同时,做...;完成 fedorqui 2014-11-03 09:48:05

+0

awk命令本身不会剪切字段的输出。 – Jdamian 2014-11-03 10:04:55

+0

仍然可以使用“awk”通过变量$ host回显服务器正常运行时间?类似于{print $ host,$ 7,$ 8}'; – Sunny 2014-11-03 10:22:05

回答

0

你知道你可以选择在awk中打​​印的字段吗?

for host in $(cat servers.txt); do 
    nstats $host -H | 
    awk 'BEGIN {IFS="\t"} {print $1,$7,$8}'; 
done 

这些将只打印三个你感兴趣的领域。

贴上了“注意” awk的代码是完全无用的 - 这相当于

for host in $(cat servers.txt); do 
    echo "$host" 
done 

UPDATE:实现了问题后的nstats命令,awk的行命令将

awk -v server="$host" 'BEGIN {IFS="\t"} {print server,$7,$8}'; 

然后输出这个样子(服务器运行时间覆盖了主机名)

20 daysrver 
24 daysrver 
318 daysver 
864 dayserv 
442 dayserv 

所以我把这个服务器变量放在最后,它看起来好多了,我可以在excel中提取并使用它。非常感谢Jdamian!

for host in $(cat servers.txt); do nstats $host -H | awk -v server="$host" 'BEGIN {IFS="\t"} {print $7,$8,server}'; done 

20 days linux_server1 
24 days linux_server2 
318 days windows_server1 
864 days windows_server2 
442 days windows_server3 
+0

我试过这个脚本,它仍然给了我部分主机名和服务器正常运行时间的相同结果。 用于$(猫服务器。文本);做 nstats $ host -H | awk'BEGIN {IFS =“\ t”} {print $ 1,$ 7,$ 8}'; done – Sunny 2014-11-03 10:03:50

+0

请添加** nstats $ host -H **的输出,即删除awk命令并运行循环。 – Jdamian 2014-11-03 10:05:53

+0

LINXSERVE10%用于$(cat servers.txt)中的主机;做nstats $主机-H;完成 linux_server 0.01 47%22%56 05:08 20天17:21:00 linux_server 0.00 23%8%45 05:08 24天04:16:46 windows_serv 0.04 72%30%58 05:09 318天23:32:17 windows_serv 0.00 20%8%40 05:09 864天12:23:10 windows_serv 0.00 51%17%41 05:09 442天05:30:14 LINXSERVE10% – Sunny 2014-11-03 10:11:44