【发布时间】:2015-12-16 23:52:06
【问题描述】:
我有 10 个使用 hp-ux 的设备,我想检查每个设备的磁盘空间。 我的要求是如果空间超过 90%,设备和空间的信息将被保存到日志中。 这是我设置为变量 ipadd 的设备和 IP 地址列表:
lo1 100.45.32.43
lot2 100.45.32.44
lot3 100.45.32.44
lot4 100.45.32.45
lot5 100.45.32.46
and so on..
到目前为止,这是我的脚本:
#!/bin/csh -f
set ipaddress = (`awk '{print $2}' "ipadd"`)
set device = (`awk '{print $1}' "ipadd"`)
@ j = 1
while ($j <= $#ipaddress)
echo $ipaddress
set i = 90 # Threshold set at 90%
set max = 100
while ($i <= $max)
rsh $ipaddress[$j] bdf | grep /dev/vg00 | grep $i% \
|awk '{ file=substr($6,index($6,"/") + 1,length($6)); print "WARNING: $device[$j]:/" file " has reached " $5 ". Perform HouseKeeping IMMEDIATELY..." >> "/scripts/space." file ".file"}'
@ i++
end
@ j++
end
bdf 之后的输出:
/dev/vg00/lvol2 15300207 10924582 28566314 79% /
/dev/vg00/lvol4 42529 23786 25510 55% /stand
执行脚本后终端的输出:
100.45.32.43
100.45.32.44
.file 处的输出:
WARNING: $device[$j]:/ has reached 79%. Perform HouseKeeping IMMEDIATELY...
我的问题是,我的循环是否有问题,因为我的 .file 输出只显示一个设备而只迭代一次? 为什么 $device[$j] 没有出现在 .file 输出中? 还是awk有问题?
感谢您的建议。
【问题讨论】:
-
你可以试试这里:serverfault.com
-
您在每个主机上执行 11
rshs - 效率不高!我会重新考虑解决方案。$device[$j]按原样打印,因为它位于awk '...'内部(单引号 - 无扩展)。