shell腳本實現多台服務器自動巡檢


shell腳本實現多台服務器自動巡檢
 
摘要:
 
        運維服務一個項目二十多台(或者多台)服務器,每天要做服務器的性能巡檢工作是查看服務器的CPU、內存、磁盤空間是否在正常值范圍內。像這樣每天或者每個固定時間段都做相同的重復工作,為了簡化重復的工作,我寫了基於liunx服務器的自動巡檢腳本,在crontab中設定一個固定時間進行自動執行即可,以減少人工重復勞動的工作。
 
環境:
 
        我的項目上主要服務器是LINUX和AIX兩種服務器,總數在30台左右。現在的工作量是每周巡檢兩次,都是手動登錄到每台服務器使用相應的命令查看服務器性能參數。
 
思路:
 
1、所有的服務器之間的網絡都是在同一個局域網內,所有網絡兩兩相通。
 
2、在其中選擇一台性能相對較好或者是服務器運行壓力較小的服務器,作為巡檢服務器。
 
3、通過這一服務器來實現對其他服務器的巡檢,然后把巡檢結果記錄到巡檢服務器上。
 
4、每台服務器巡檢結果都以時間和ip做命名用來區分,最后將所有巡檢結果壓縮打包。
 
5、每次維護人員只需要定時去取這個壓縮包查看最后結果即可,免去了對每台服務器都需要登錄和輸入相同的命令進行查看。
 
具體實現腳本:





 cat check.sh 

#! /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 -p /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
 echo root

sleep 1
#echo password
 echo root

sleep 3
echo "free -k"
echo ""
echo "df -k"
echo ""

#memory_used_rate
echo "ps -ef| grep java"
echo ""
echo "netstat -an|egrep -n '80|22|21|23|9043|9044|45331|45332|39194|19195'"
echo ""
#echo "ifconfig -a "
echo  "/sbin/ip ad"
echo ""

echo " tail -2000  /var/log/messages | grep -v snmp |grep  -i  error "
echo ""
echo "/bin/dmesg  |grep -i error"
echo ""

echo "top -n1|sed -n '1,5p'"
echo "exit"
echo "/usr/bin/vmstat  1 3"
echo ""

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
 echo root

sleep 1
#echo password
 echo root
sleep 5
echo ""
#echo "df -k"
 echo "df -g"
echo ""

#memory_used_rate
echo "ps -ef| grep java"
echo ""
echo "netstat -an|egrep -n '80|22|21|23|9043|9044|45331|45332|39194|19195'"
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服務

感謝:http://blog.chinaunix.net/uid-14824714-id-4181103.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM