此脚本为多个 Linux 系统生成 CPU、内存和交换使用情况,并生成报表发送到邮件。
1、在多个 Linux 系统上检查 CPU、内存和交换使用情况的 Shell 脚本。
# vim /opt/scripts/cpu-memory-swap.sh
#!/bin/bash
echo "-------------------------------------------"
echo "Server_Name CPU(%) Memory(%) Swap(%)"
echo "-------------------------------------------"
for server in `more /opt/scripts/server-list.txt`
do
scpu=$(ssh $server cat /proc/stat | awk '/cpu/{printf("%.2f%\n"), ($2+$4)*100/($2+$4+$5)}' | awk '{print $0}' | head -1)
smem=$(ssh $server free | awk '/Mem/{printf("%.2f%"), $3/$2*100}')
sswap=$(ssh $server free | awk '/Swap/{printf("%.2f%"), $3/$2*100}')
echo "$server $scpu $smem $sswap"
done | column -t
echo "-------------------------------------------"
执行脚本,效果如下:
# sh cpu-mem-black.sh --------------------------------------------------- Server_Name CPU(%) Memory(%) Swap(%) --------------------------------------------------- web.keysou.com 0.04% 12.77% 0.00% web2.keysou.com 0.29% 28.43% 0.00% ---------------------------------------------------
2、将Shell 脚本检测的CPU,内存,交换内存使用情况,通过发送邮件给管理员。
# vim /opt/scripts/cpu-memory-swap-1.sh
#!/bin/bash
if which mailx > /dev/null
then
echo "mailx package is exist"
elif (( $(cat /etc/*-release | grep "Red Hat" | wc -l) > 0 ))
then
yum install mailx -y > /dev/null
else
apt install mailutils -y > /dev/null
fi
echo "-------------------------------------------" >> /tmp/cpu-mem-swap.txt
echo "Server_Name CPU(%) Memory(%) Swap(%)" >> /tmp/cpu-mem-swap.txt
echo "-------------------------------------------" >> /tmp/cpu-mem-swap.txt
for server in `more /opt/scripts/server-list.txt`
do
scpu=$(ssh $server cat /proc/stat | awk '/cpu/{printf("%.2f%\n"), ($2+$4)*100/($2+$4+$5)}' | awk '{print $0}' | head -1)
smem=$(ssh $server free | awk '/Mem/{printf("%.2f%"), $3/$2*100}')
sswap=$(ssh $server free | awk '/Swap/{printf("%.2f%"), $3/$2*100}')
echo "$server $scpu $smem $sswap" >> /tmp/cpu-mem-swap.txt
done | column -t
echo "-------------------------------------------" >> /tmp/cpu-mem-swap.txt
echo "CPU and Memory Report for `date +"%B %Y"`" | mailx -s "CPU and Memory Report on `date`" -a /tmp/cpu-mem-swap.txt xxx@qq.com
rm /tmp/cpu-mem-swap.txt
最后添加一个任务计划,每隔2个小时运行。
# crontab -e
0 */2 * * * /bin/bash /opt/scripts/cpu-memory-swap-1.sh
3、将Shell 脚本统计的多个 Linux 系统上CPU、内存和交换使用的情况,生成表格发送到邮件。
这个 Shell 脚本在一个 excel 文件中以给定的时间间隔收集和发送一封邮件,其中包含给定 Linux 系统的 CPU、内存和交换使用情况。
# vim /opt/scripts/cpu-memory-swap-2.sh
#!/bin/bash
if which mailx > /dev/null
then
echo "mailx package is exist"
elif (( $(cat /etc/*-release | grep "Red Hat" | wc -l) > 0 ))
then
yum install mailx -y > /dev/null
else
apt install mailutils -y > /dev/null
fi
echo "Server_Name, CPU, Memory, Swap" > /tmp/cpu-mem-swap.csv
for server in `more /opt/scripts/server-list.txt`
do
scpu=$(ssh $server cat /proc/stat | awk '/cpu/{printf("%.2f%\n"), ($2+$4)*100/($2+$4+$5)}' | awk '{print $0}' | head -1)
smem=$(ssh $server free | awk '/Mem/{printf("%.2f%"), $3/$2*100}')
sswap=$(ssh $server free | awk '/Swap/{printf("%.2f%"), $3/$2*100}')
echo "$server, $scpu, $smem, $sswap" >> /tmp/cpu-mem-swap.csv
done
echo "CPU and Memory Report for `date +"%B %Y"`" | mailx -s "CPU and Memory Report on `date`" -a /tmp/cpu-mem-swap.csv xxx@qq.com
rm /tmp/cpu-mem-swap.csv
最后添加一个任务计划,在每天 8 点运行。
# crontab -e
0 8 * * * /bin/bash /opt/scripts/cpu-memory-swap-2.sh