我希望使用"nstats“命令获得一个完整的主机名,并使其服务器能够正常运行。剧本似乎运行良好。我需要帮助第一列与“完整”主机名和第7列(服务器启动时间)打印。
以下命令只给出它们的部分主机名:
for host in $(cat servers.txt); do nstats $host -H | awk 'BEGIN {IFS="\t"} {$2=$3=$4=$5=$6=$9="" ; print}' ; done坏输出:(主机名在第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 daysservers.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 *这个工作正常,但它只列出一个完整的主机名,没有服务器正常运行时间。
如果你能提供任何帮助,我们将不胜感激。
发布于 2014-11-03 09:55:03
你知道你可以选择用awk打印的字段吗?
for host in $(cat servers.txt); do
nstats $host -H |
awk 'BEGIN {IFS="\t"} {print $1,$7,$8}';
done这些将只打印您感兴趣的三个字段。
标记为"note“的awk代码是完全无用的--它相当于
for host in $(cat servers.txt); do
echo "$host"
done更新:在意识到问题是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_server3https://stackoverflow.com/questions/26711525
复制相似问题