云网牛站
所在位置:首页 > Linux编程 > 用脚本监视多个远程Linux系统上的磁盘空间使用情况并通过邮件警报

用脚本监视多个远程Linux系统上的磁盘空间使用情况并通过邮件警报

2020-02-09 21:18:37作者:叶云稿源:云网牛站

本文介绍的Bash脚本,可用来监视多个远程Linux系统上的磁盘空间使用情况并通过电子邮件警报。我们编写过Bash脚本来监视Linux系统上的磁盘空间使用情况,该脚本可在一台计算机上运行,​​并且您必须将该脚本放在相应的计算机上,参考Linux Shell脚本监视磁盘空间使用情况并发送电子邮件。如果要同时在多台计算机上设置磁盘空间使用情况警报,则该脚本无济于事。因此,我们编写了这个新的Shell脚本来实现此目的。为此,您需要一个无需密码即可与任何其他计算机通信的JUMP服务器(集中式服务器),这意味着必须将无密码身份验证设置为前提条件。前提条件完成后,请在JUMP服务器上运行脚本,最后添加一个cronjob以完全自动化此过程。另外,涉及到邮件的请替换您的电子邮件ID,而不是我们,以接收此警报。

用脚本监视多个远程Linux系统上的磁盘空间使用情况并通过邮件警报

 

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

您会得到类似下面的输出:

用脚本监视多个远程Linux系统上的磁盘空间使用情况并通过邮件警报

 

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

您会得到类似下面的输出:

用脚本监视多个远程Linux系统上的磁盘空间使用情况并通过邮件警报

最后添加一个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

您会得到类似下面的输出:

用脚本监视多个远程Linux系统上的磁盘空间使用情况并通过邮件警报

最后添加一个cronjob以使其自动化,它将每10分钟运行一次:

# crontab -e

*/10 * * * * /bin/bash /opt/scripts/disk-usage-multiple-1.sh

注意:由于脚本计划每10分钟运行一次,因此您将每10分钟收到一封电子邮件警报。

如果系统在18分钟后达到给定的限制,则您将在第二个周期收到电子邮件警报,例如20分钟(第二个10分钟周期)之后。

 

相关主题

用命令检查Linux中可用磁盘空间的方法

精选文章
热门文章