shell脚本实现多台服务器自动巡检

摘要:

运维服务一个项目二十多台(或者多台)服务器,每天要做服务器的性能巡检工作是查看服务器的CPU、内存、磁盘空间是否在正常值范围内。像这样每天或者每个固定时间段都做相同的重复工作,为了简化重复的工作,我写了基于liunx服务器的自动巡检脚本,在crontab中设定一个固定时间进行自动执行即可,以减少人工重复劳动的工作。

环境:

我的项目上主要服务器是LINUX和AIX两种服务器,总数在30台左右。现在的工作量是每周巡检两次,都是手动登录到每台服务器使用相应的命令查看服务器性能参数。

思路:

1、所有的服务器之间的网络都是在同一个局域网内,所有网络两两相通。

2、在其中选择一台性能相对较好或者是服务器运行压力较小的服务器,作为巡检服务器。

3、通过这一服务器来实现对其他服务器的巡检,然后把巡检结果记录到巡检服务器上。

4、每台服务器巡检结果都以时间和ip做命名用来区分,最后将所有巡检结果压缩打包。

5、每次维护人员只需要定时去取这个压缩包查看最后结果即可,免去了对每台服务器都需要登录和输入相同的命令进行查看。

具体实现脚本:

#! /bin/bash
echo "start running!" | tee -a
LANG=en
set `date`
path="/home/check"
echo "start running!" | tee -a $path/log/$1-$2-$3.log
if [ -d /home/check/result/$1-$2-$3 ];
then
echo ''
else
mkdir /home/check/result/$1-$2-$3
echo `date +"%Y/%m/%d-%H:%M:%S"` "create " "$1-$2-$3" "directory success !"|tee -a $path/log/$1-$2-$3.log
fi
echo `date +"%Y/%m/%d-%H:%M:%S"` "starting reading linuxconfig.txt !" |tee -a $path/log/$1-$2-$3.log
cat "$path"/config/linuxconfig.txt| while read line;
do
ip=`echo $line |cut -d '=' -f2`
echo `date +"%Y/%m/%d-%H:%M:%S"` "check LINUX " $ip " starting !" |tee -a $path/log/$1-$2-$3.log
(
sleep 1
echo account

sleep 1
echo password

sleep 3
echo "free -k"
echo ""
echo "df -k"
echo ""
#memory_used_rate
echo "ps -ef| grep java"
echo ""
echo "netstat -an|egrep -n '8010|8008|9008|44444|4100'"
echo ""
echo "ifconfig -a"
echo ""
echo "top -n1|sed -n '1,5p'"
echo "exit"
sleep 5
)|telnet $ip >/home/check/result/$1-$2-$3/$ip-$1-$2-$3-$4.txt
echo `date +"%Y/%m/%d-%H:%M:%S"` "check LINUX " $ip " end !" |tee -a $path/log/$1-$2-$3.log
echo "" | tee -a $path/log/$1-$2-$3.log
done
echo `date +"%Y/%m/%d-%H:%M:%S"` "end reading linuxconfig.txt !" |tee -a $path/log/$1-$2-$3.log

echo `date +"%Y/%m/%d-%H:%M:%S"` "starting reading AIXconfig.txt !" | tee -a $path/log/$1-$2-$3.log
cat "$path"/config/AIXconfig.txt| while read line;
do
ip=`echo $line |cut -d '=' -f2`
echo `date +"%Y/%m/%d-%H:%M:%S"` "check IBM AIX " $ip " starting !" |tee -a $path/log/$1-$2-$3.log
(
sleep 1
echo account
sleep 1
echo password

sleep 5
echo ""
echo "df -k"
echo ""
#memory_used_rate
echo "ps -ef| grep java"
echo ""
echo "netstat -an|egrep -n '8010|8008|9008|44444|4100'"
echo ""
echo "ifconfig -a"
echo ""
echo "topas"
echo "exit"
sleep 5
)|telnet $ip >/home/check/result/$1-$2-$3/$ip-$1-$2-$3-$4.txt
echo `date +"%Y/%m/%d-%H:%M:%S"` "check IBM AIX " $ip " end !" |tee -a $path/log/$1-$2-$3.log
echo "" | tee -a $path/log/$1-$2-$3.log
done
echo `date +"%Y/%m/%d-%H:%M:%S"` "end reading AIXconfig.txt !" | tee -a $path/log/$1-$2-$3.log
zip -r /home/check/result/$1-$2-$3/$1-$2-$3.zip /home/check/result/$1-$2-$3/*
echo "End running !"

注意:

该脚本的巡检是基于TELNET服务所以被检服务器必须开启TELNET服务,不然巡检会失败。

你可能感兴趣的:(shell脚本)