本文介绍的Bash脚本,可用来监视多个远程Linux系统上的磁盘空间使用情况并通过电子邮件警报。我们编写过Bash脚本来监视Linux系统上的磁盘空间使用情况,该脚本可在一台计算机上运行,并且您必须将该脚本放在相应的计算机上,参考Linux Shell脚本监视磁盘空间使用情况并发送电子邮件。如果要同时在多台计算机上设置磁盘空间使用情况警报,则该脚本无济于事。因此,我们编写了这个新的Shell脚本来实现此目的。为此,您需要一个无需密码即可与任何其他计算机通信的JUMP服务器(集中式服务器),这意味着必须将无密码身份验证设置为前提条件。前提条件完成后,请在JUMP服务器上运行脚本,最后添加一个cronjob以完全自动化此过程。另外,涉及到邮件的请替换您的电子邮件ID,而不是我们,以接收此警报。
Bash脚本1:用于检查多个远程Linux系统上的磁盘空间使用情况并在终端上打印输出 该bash脚本检查给定远程计算机上的磁盘空间使用情况,如果系统达到指定的阈值,则将输出打印到终端。 在此示例中,出于测试目的,我们将阈值限制设置为80%,您可以调整此限制以适合您的需求。 # vi /opt/scripts/disk-usage-multiple.sh #!/bin/sh output1=/tmp/disk-usage.out echo "---------------------------------------------------------------------------" echo "HostName Filesystem Size Used Avail Use% Mounted on" echo "---------------------------------------------------------------------------" for server in `more /opt/scripts/servers.txt` do output=`ssh $server df -Ph | tail -n +2 | sed s/%//g | awk '{ if($5 > 80) print $0;}'` echo "$server: $output" >> $output1 done cat $output1 | grep G | column -t rm $output1 将以上脚本添加到文件后,运行脚本文件: # sh /opt/scripts/disk-usage-multiple.sh 您会得到类似下面的输出:
Shell脚本2:监视多个远程Linux系统上的磁盘空间使用情况并通过电子邮件警报 此Shell脚本检查给定远程计算机上的磁盘空间使用情况,并在系统达到指定的阈值后通过邮件以简单文本形式发送输出。 # vi /opt/scripts/disk-usage-multiple-1.sh #!/bin/sh SUBJECT="Disk Usage Report on "`date`"" MESSAGE="/tmp/disk-usage.out" MESSAGE1="/tmp/disk-usage-1.out" TO="249562751@qq.com" echo "---------------------------------------------------------------------------------------------------" >> $MESSAGE1 echo "HostName Filesystem Size Used Avail Use% Mounted on" >> $MESSAGE1 echo "---------------------------------------------------------------------------------------------------" >> $MESSAGE1 for server in `more /opt/scripts/servers.txt` do output=`ssh $server df -Ph | tail -n +2 | sed s/%//g | awk '{ if($5 > 80) print $0;}'` echo "$server: $output" >> $MESSAGE done cat $MESSAGE | grep G | column -t >> $MESSAGE1 mail -s "$SUBJECT" "$TO" < $MESSAGE1 rm $MESSAGE rm $MESSAGE1 将以上脚本添加到文件后,运行脚本文件: # sh /opt/scripts/disk-usage-multiple-1.sh 您会得到类似下面的输出:
最后添加一个cronjob以使其自动化,它将每10分钟运行一次: # crontab -e */10 * * * * /bin/bash /opt/scripts/disk-usage-multiple-1.sh
Bash脚本3:监视多个远程Linux系统上的磁盘空间使用情况并通过电子邮件警报 此shell脚本检查给定远程计算机上的磁盘空间使用情况,如果系统达到指定的阈值,则通过带有CSV文件的邮件发送输出。 # vi /opt/scripts/disk-usage-multiple-2.sh #!/bin/sh MESSAGE="/tmp/disk-usage.out" MESSAGE2="/tmp/disk-usage-1.csv" echo "Server Name, Filesystem, Size, Used, Avail, Use%, Mounted on" > $MESSAGE2 for server in thvtstrhl7 thvrhel6 for server in `more /opt/scripts/servers-disk-usage.txt` do output1=`ssh $server df -Ph | tail -n +2 | sed s/%//g | awk '{ if($5 > 80) print $0;}'` echo "$server $output1" >> $MESSAGE done cat $MESSAGE | grep G | column -t | while read output; do Sname=$(echo $output | awk '{print $1}') Fsystem=$(echo $output | awk '{print $2}') Size=$(echo $output | awk '{print $3}') Used=$(echo $output | awk '{print $4}') Avail=$(echo $output | awk '{print $5}') Use=$(echo $output | awk '{print $6}') Mnt=$(echo $output | awk '{print $7}') echo "$Sname,$Fsystem,$Size,$Used,$Avail,$Use,$Mnt" >> $MESSAGE2 done echo "Disk Usage Report for `date +"%B %Y"`" | mailx -s "Disk Usage Report on `date`" -a /tmp/disk-usage-1.csv 249562751@qq.com rm $MESSAGE rm $MESSAGE2 将以上脚本添加到文件后,运行脚本文件: # sh /opt/scripts/disk-usage-multiple-2.sh 您会得到类似下面的输出:
最后添加一个cronjob以使其自动化,它将每10分钟运行一次: # crontab -e */10 * * * * /bin/bash /opt/scripts/disk-usage-multiple-1.sh 注意:由于脚本计划每10分钟运行一次,因此您将每10分钟收到一封电子邮件警报。 如果系统在18分钟后达到给定的限制,则您将在第二个周期收到电子邮件警报,例如20分钟(第二个10分钟周期)之后。
相关主题 |