Скрипт для оповещения по электронной почте и пинг - PullRequest
2 голосов
/ 19 января 2012

Мне нужна помощь, чтобы обновить этот скрипт, чтобы в случае сбоя проверки связи он отправлял другую проверку еще одному узлу (помимо сообщения электронной почты, которое отправляется сейчас, если сбой проверки связи не выполняется). Как это можно сделать из этого скрипта?

#!/bin/bash

HOSTS="IP ADRESS"
COUNT=4

for myHost in $HOSTS
do
    count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | a$
    if [ $count -eq 0 ]; then
        # 100% failed
        echo "Server failed at $(date)" | mail -s "Server Down" myadress@gmail.com
        echo "Host : $myHost is down (ping failed) at $(date)"
    fi
done

Ответы [ 2 ]

3 голосов
/ 19 января 2012

Вы можете поместить ping в функцию.Вам не нужно обрабатывать (grep) результат ping: вы можете положиться на ping возвращаемый статус выхода.

#!/bin/bash
HOSTS="IP1 IP2 IP3 IP4 IP5"
COUNT=4

pingtest(){
  for myHost in "$@"
  do
    ping -c "$COUNT" "$myHost" && return 1
  done
  return 0
}

if pingtest $HOSTS
then
  # 100% failed
  echo "Server failed at $(date)" | mail -s "Server Down" myadress@gmail.com
  echo "All hosts ($HOSTS) are down (ping failed) at $(date)"
fi
0 голосов
/ 19 января 2012

Попробуйте это с массивом:

#!/bin/bash
HOSTS_ARRAY=("IP_ADRESS" "ANOTHER_IP" "YET_ANOTHER")
COUNT=4
for myHost in "${HOSTS_ARRAY[@]}"
do
     count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | a$
     if [ $count -eq 0 ]; then
         # 100% failed
         echo "Server failed at $(date)" | mail -s "Server Down" myadress@gmail.com
         echo "Host : $myHost is down (ping failed) at $(date)"
     fi
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...