Linux远程监视磁盘
学习本脚本的前提是掌握了Linux-ssh的免密登入,然后才能执行以下脚本。
传送门:Linux-ssh免密登入
Ax 远程监视磁盘健康情况
#! /bin/bash
logfile="diskusage.log"
if [[ -n $1 ]]
then
logfile=$1
fi
if [ ! -e $logfile ]
then
printf "%-8s %-14s %-9s %-8s %-6s %-6s %-6s %-6s %s\n" "Date" "IP address" "Device" "Capacity" "Used" "Free" "Percent" "Status" > $logfile
fi
IP_LIST="这里是一个IP或IP段"
# IP段可以写成 192.168.1.0 0.0.0.0
(
for ip in $IP_LIST;
do
ssh USER@$ip 'df -H' | grep ^/dev/ > /tmp/$$.df
while read line;
do
cur_date=$(date +%D)
printf "%-8s %-14s" $cur_date $ip
echo $line | awk '{ printf("%-9s %-8s %-6s %-6s %-8s",$1,$2,$3,$4,$5); }'
pusg=$(echo $line | egrep -o "[0-9]+%")
pusg=${pusg/\$/};
if [ $pusg -lt 80 ];
then
echo SAFE
else
echo ALERT
fi
done< /tmp/$$.df
done
) >> $logfile
运行结果
Bx 让脚本自动化运行
这时就可以用上我们的cron命令啦,简直就是不用手就行,传送门:Linux-cron
比如我们每天上午10点执行脚本,可以添加任务
00 10 * * * /home/path/disklog.sh /home/user/diskusage.log
Cx 我遇见的问题
sh命令无法识别”[[]]”表达式。
解决办法:bash与sh是有区别的,两者是不同的命令,且bash是sh的增强版,而”[[]]”是bash脚本中的命令,因此在执行时,使用sh命令会报错,将sh替换为bash命令即可。
Dx 参考
[1] 《Linux Shell脚本攻略》第二版 Shantanu Tushar\Sarath Lakshman 著