首页 > 代码库 > shell脚本

shell脚本


1.磁盘剩余空间不足80%

#!/bin/bash

#Usage:if the disk use%>80%,give an alarm

#Author:chengyanli

#Date:2016/7/14


IP=`ip addr show|sed ‘8!d‘|awk ‘{print $2}‘|cut -f 1 -d ‘/‘` #local ip

USER=742019722@qq.com #mail

DISKUSED=`df -h |awk ‘{print $5}‘|sed ‘2!d‘|awk -F ‘%‘ ‘{print $1}‘` #The use of the disk

NUM=80 #The standard number

if [ "$DISKUSED" -gt "$NUM" ] ;then

echo -e "Notice:${IP} disk use>80%,plz do something:\n\n`df -h`\n\n`date +%Y-%m-%d`"|mail -s ‘WARNING‘ $USER

else

echo $IP disk is ok

fi



2.cpu及内存、虚拟内存查看并报警

cat 2_cpu+mem.sh

#!/bin/bash

#Usage:if the cpu or mem or virtmem use% > 80%,give an alarm

#Author:chengyanli

#Date:2016/7/14


IP=`ip addr show|sed ‘8!d‘|awk ‘{print $2}‘|cut -f 1 -d ‘/‘`

USER=742019722@qq.com


#The use of cpu,mem and virtmem

cpu=`top -n 1 | grep Cpu | awk ‘{print $5}‘ |awk -F ‘.‘ ‘{print $1}‘`

mem=`free -m | sed ‘2!d‘ | awk -F ‘ ‘ ‘{print $3/$2*100}‘ | awk -F ‘.‘ ‘{print $1}‘`

virtmem=`free -m|sed ‘4!d‘|awk ‘{print $3/$2*100}‘|awk -F ‘.‘ ‘{print $1}‘`


#This is about cpu

if [ "$cpu" -le 20 ]; then

echo "Notice:${IP} cpu use > 80%,plz do something "| mail -s ‘WARNING‘ $USER

fi


#This is about mem

if [ "$mem" -ge 80 ]; then

echo "Notice:${IP} mem use > 80%,plz do something "| mail -s ‘WARNING‘ $USER

fi


#This is about virtmem

if [ "$virtmem" -ge 80 ]; then

echo "Notice:${IP} virtmem use > 80%,plz do something "| mail -s ‘WARNING‘ $USER

fi


3.进程丢失报警 

cat 3.4_procs.sh

#!/bin/bash

#Usage:if the server process lost,give an alarm

#Author:chengyanli

#Date:2016/7/14


IP=`ip addr show|sed ‘8!d‘|awk ‘{print $2}‘|cut -f 1 -d ‘/‘`

USER=742019722@qq.com


pgrep server > /dev/null 2>&1

if [ $? != 0 ]; then

echo "Notice:${IP} server process lost"|mail -s ‘WARNING‘ $USER

elif [ $? = 0 ];then

echo ‘The server process is ok‘

fi


4.磁盘监控及报警 

cat 5_disk.sh

#!/bin/bash

#Usage:if disk is not ok ,give an alarm

#Author:chengyanli

#Date:2016/07/19


IP=`ip addr show|sed ‘8!d‘|awk ‘{print $2}‘|cut -f 1 -d ‘/‘`

USER=742019722@qq.com


#all disk in localhost

disklist=`ls -l /dev|grep -E ‘\bhd[a-z]$|\bsd[a-z]$‘|awk ‘{print $10}‘`


#check disk is ok,if not then give an alarm

for i in $disklist

do

smartctl -s on -a $disklist|grep OK

if [ $? != 0 ]; then

echo -e "Notice:${IP} $disklist status is not ok:\n\n`smartctl -a $disklist`\n\n`date +%Y-%m-%d`"|mail -s ‘WARNING‘ $USER

fi

done


5.监控ssh的连通性

 cat 6_ssh.sh

#!/bin/bash

#Usage:Juage ssh is ok or not

#Author:chengyanli

#Date:2016/7/18


#This is the module check remote 22

for ip in `cat /mnt/ip_only`

do

nc -z -v -n $ip 22 >/dev/null 2>&1

if [ $? = 0 ];then

echo "${ip}:ssh is ok"

else

echo "{$ip}:ssh is not ok"

fi

done


6.监控crontab正常性

cat 7_crontab.sh

#!/bin/bash

#Usage:judge crontab is normal

#Author:chengyanli

#Date:2016/07/14


#start crontd

/etc/init.d/crond status|grep running /dev/null 2>&1

if [ $? != 0 ]; then

/etc/init.d/crond start >/dev/null 2>&1

fi


#check crontab is ok

/bin/rm -f /tmp/test_cron.txt

echo "*/1 * * * * /bin/touch /tmp/test_cron.txt" > /var/spool/cron/root

sleep 60

if [ -f /tmp/test_cron.txt ]; then

echo ‘the crontab is ok‘

else

echo ‘the crontab is not ok‘

fi


7.home分区不可写

cat 11_home.sh

#!/bin/bash

#Usage:judge the /home is writable or not

#Author:hengyanli

#Date:2016/7/15


#If the file exists,delete it

if [ -f "file" ]; then

rm -f file

fi


#touch file to check home can write

touch /home/file

if [ $? != 0 ]; then

echo ‘The /home can not write‘

else

echo ‘The /home can write‘

fi


本文出自 “真水无香” 博客,请务必保留此出处http://chengyanli.blog.51cto.com/11399167/1846781

shell脚本