Используя часы для выполнения сценария оболочки - но сценарий идет более не существующий

В зависимости от бюджета у Вас есть широкий спектр от Netbackup Symantec до различных продуктов CommVault, Arcserve и свободного материала как инструменты NT Backup и Linux также. Необходимо разработать точно, что Вы хотите скопировать, от того, где и каков Ваш бюджет.

0
задан 19 November 2011 в 01:48
4 ответа

ping будет зависать, если он не может достичь своей цели, и, возможно, поэтому скрипт перестает работать, потому что ping все еще ожидает ответа. Попробуйте добавить параметр -w крайний срок или -W тайм-аут в пинг .

1
ответ дан 4 December 2019 в 12:49

Вы можете сделать это в реальном времени, используя "ip monitor". При этом будут выведены любые события, такие как удаление или добавление IP-адреса, изменение состояния канала с рабочего на отключенное, или изменение маршрута каким-либо образом.

ip monitor all >> /some/log.log &

Вы должны открыть в режиме добавления. Если вы хотите, чтобы оно работало вне терминала, вы можете просто отключить задание с помощью "disown% 1"

. Если вам также нужны временные метки, есть несколько способов. Простой способ - использовать inotifywait, чтобы проверить, получил ли файл обновление, а затем добавить к нему свою дату. Было бы легко сделать то же самое в сценарии оболочки и, возможно, отказаться от этого, чтобы вы получили

ip monitor all >> /some/log.log &
while inotifywait -qq -e modify /some/log.log; do 
  sleep 0.2;
  date >>/root/mon.log; 
done

Enjoy

1
ответ дан 4 December 2019 в 12:49

Он перестает функционировать, потому что он уже завершен, но зависит от родительского процесса - watch команда, которая все еще активна.

Итак, я получаю почту, когда сеть выходит из строя, но не как долго он был недоступен для.

Этот сценарий уже печатает дату, когда удаленная система не работает:

echo "Хост: $ myHost не работает (ошибка ping) в $ (date)" | mail -s "$ SUBJECT" $ EMAILID

Как я могу заставить скрипт продолжать работу, когда сеть не работает?

Это пинг с -c 1 поэтому он остановится после отправки 1 пакета ECHO_REQUEST.

Поместите его в cron для запуска каждые минуты:

*/1 * * * * /path/to/your/script
0
ответ дан 4 December 2019 в 12:49

Ваше решение с командой «смотреть» не подходит. Я бы попытался решить это примерно так:

#!/bin/bash
HOSTS="foo.bar foo2.bar"
COUNT=4
while :
do
    for myHost in $HOSTS
    do
      count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
      if [ $count -eq 0 ]; then
        # 100% failed 
        echo "Host : $myHost is down (ping failed) at $(date)"
      fi
      done
sleep 15 # here is your refresh rate
done

, а затем запустить его как обычный скрипт: ./script_name.sh

завершить с помощью CTRL + C.

1
ответ дан 4 December 2019 в 12:49

Теги

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