1. 程式人生 > >批量檢測服務器能否ping通和硬盤容量狀態的一個腳本

批量檢測服務器能否ping通和硬盤容量狀態的一個腳本

sage 批量檢測 腳本 alert 自己 ssh ash 感覺 linux

有一些linux基礎,最經剛開始學shell,參考了阿良老師的一個監測服務器硬盤狀態的腳本,自己進行了一些擴展,今天比較晚了,後邊會把註釋放上來,感覺腳本還很不完善,希望大家一起探討一下,共同學習

#!/bin/sh
source /etc/profile
source /root/.bashrc
HOST_INFO=${PWD}/all_hosts.info
TMP_FILE=${PWD}/all_tmp.log
ALERT_FILE=${PWD}/all_alert.log
echo null > $ALERT_FILE & echo null > $TMP_FILE
for IP in $(awk ‘/^[^#]/{print $1}‘ $HOST_INFO)
do
echo "開始測試服務器:$IP"
ping -c3 $IP 2>&1 >/dev/null
if [ $? -eq 0 ]
then
echo "服務器:$IP 可以連通"
else
DATE=`date`
echo -e "註意!!!服務器:$IP 在時間:$DATE 未能連通\n" 2>&1 >>$ALERT_FILE
fi
USER=$(awk -v ip=$IP ‘ip==$1{print $2}‘ $HOST_INFO)
PORT=$(awk -v ip=$IP ‘ip==$1{print $3}‘ $HOST_INFO)
echo "-------開始檢測測盤占用,詳情見文件:all_tmp.log,和報警文件:all_alert.log---------"
echo ‘------------------------------------------------------------------------------------‘ >> $TMP_FILE
echo $IP >> $TMP_FILE
ssh -p $PORT $USER@$IP ‘df -hP‘ >> $TMP_FILE
if [ $? -gt 0 ]
then
echo "請檢查服務器:$IP ssh連接!" 2>&1 >>$ALERT_FILE
fi
USE_RATE_LIST=$( awk ‘BEGIN{OFS="="}/^\/dev/{print $1,int($5)}‘ $TMP_FILE)
for USE_RATE in $USE_RATE_LIST; do
PART_NAME=${USE_RATE%=*}
USE_RATE=${USE_RATE#*=}
if [ $USE_RATE -ge 80 ]
then
echo -e "警告:服務器:$IP 磁盤:$PART_NAME 使用率: $USE_RATE" 2>&1 >$ALERT_FILE
fi
done
done

附 :

阿良老師腳本(測試版,改動了文件路徑等):

#!/bin/bash
HOST_INFO=/opt/tools/stat_host.info
TMP_FILE=/opt/tools/tmp_stat_disk.log
date > $TMP_FILE
echo ‘------------------------------------------------------------------------------------‘ >> $TMP_FILE
for IP in $(awk ‘/^[^#]/{print $1}‘ $HOST_INFO); do
USER=$(awk -v ip=$IP ‘ip==$1{print $2}‘ $HOST_INFO)
PORT=$(awk -v ip=$IP ‘ip==$1{print $3}‘ $HOST_INFO)
echo ‘------------------------------------------------------------------------------------‘ >> $TMP_FILE
echo $IP >> $TMP_FILE
ssh -p $PORT $USER@$IP ‘df -h -P‘ >> $TMP_FILE
USE_RATE_LIST=$( awk ‘BEGIN{OFS="="}/^\/dev/{print $1,int($5)}‘ $TMP_FILE)
for USE_RATE in $USE_RATE_LIST; do
PART_NAME=${USE_RATE%=*}
USE_RATE=${USE_RATE#*=}
if [ $USE_RATE -ge 80 ]; then
echo "Warning: $PART_NAME Partition usage $USE_RATE%!"
fi
done
done
more $TMP_FILE

批量檢測服務器能否ping通和硬盤容量狀態的一個腳本