Отладка скрипта Ping

Я попросил раньше помочь со скриптом ping , который должен проверить связь с некоторыми хостами и отправить мне электронное письмо, если он есть пинг не работает. Это прекрасно работает.

Теперь я хочу изменить этот сценарий (см. Ниже), чтобы он отправлял мне электронное письмо только в случае успеха. Итак, в основном я хочу, чтобы сценарий проверял связь с несколькими узлами, я знаю, что они не работают, и если какой-либо из этих узлов вернет проверку связи, я хочу, чтобы сценарий отправил мне электронное письмо. Вот сценарий, который у меня сейчас есть:

#!/bin/bash

ping_targets="server1 server2 server3 server4 server5"
failed_hosts=""

for i in $ping_targets
do
   ping -c 1 $i > /dev/null
   if [ $? -ne 0 ]; then
      if [ "$failed_hosts" == "" ]; then
         failed_hosts="$i"
      else
         failed_hosts="$failed_hosts, $i"
      fi
   fi
done

if [ "$failed_hosts" != "" ]; then
   echo $failed_hosts| mailx -s "Failed ping targets" email@domain
fi

0
16.12.2018, 06:07
3 ответа
ping_targets="server1 server2 server3 server4 server5"
up_hosts=""

for i in $ping_targets
do
   ping -c 1 $i > /dev/null
   if [ $? -eq 0 ]; then
      if [ "$up_hosts" == "" ]; then
         up_hosts="$i"
      else
         up_hosts="$up_hosts, $i"
      fi
   fi
done

if [ "$up_hosts" != "" ]; then
   echo $up_hosts| mailx -s "ping targets that are now available" email@domain
fi
0
28.01.2020, 05:05

Используйте fping для проверки пинга нескольких серверов:

fping server{1,2,3,4,5} |& grep -v 'is alive' | mailx -E -s "Failed ping targets" email@domain
-1
28.01.2020, 05:05
#!/bin/bash

ping_targets="server1 server2 server3 server4 server5"

for i in $ping_targets
do
   ping -c 1 $i > /dev/null
   if [ $? -eq 0 ]; then
         echo "$i ping success!" > test_file
   fi
   if [ -s test_file ];then        
         mailx -s "Successful ping targets" -a test_file email@domain
   fi

Если вы не хотите добавлять вложения, замените строку mailx на:

mailx -s "Successful ping targets" email@domain < test_file
0
28.01.2020, 05:05

Теги

Похожие вопросы