Unix C-Shell:?需要帮助完成这项任务

时间:2015-11-09 00:19:31

标签: unix

我已经完成了制作C-shell脚本的任务。我分别有IP地址和设备名称列表。例如;

cal 1 : 100.21.25.10
cal 2 : 100.21.25.11
cal 3 : 100.21.25.12
cal 4 : 100.21.25.14
and so on...

根据这个ip和设备名称,我需要rsh ip地址并让磁盘空闲。磁盘空闲的结果将保存到日志中。日志的详细信息将是设备名称需要保持。我的想法是:

声明数组:

set device =( cal1 cal2 cal3)
set ip = (100.21.25.10 100.21.25.11 100.21.25.12 100.21.25.14)
set highspace = 90

foreach data($ip)
set space = rsh $ip df -k

if (${space} >= ${highspace}) then   
echo "Please Housekeep $device:" >> $device.log
endif

这会起作用吗?或者你们有更好的主意吗?感谢。

1 个答案:

答案 0 :(得分:1)

C shell应never be used anymore。也不应rsh;我们现在有ssh

你在Bourne shell中的任务:

#! /bin/sh

highspace=90
fs_to_watch=/path/to/filesystem/that/fills/up

exec 0<"$1"
while read cal calno colon addr; do
   space=$(ssh "$addr" df -k "$fs_to_watch" | 
           awk 'NR > 1 { sub(/%$/, "", $5); print $5 }')
   if [ "$space" -gt "$highspace" ]; then
       echo "Please Housekeep Cal-$calno"
   fi
done