Linux-远程监视磁盘


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 著

[2] https://blog.csdn.net/lc250123/article/details/90747798


文章作者: Enomothem
版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Enomothem !
  目录