Добрый день!
Вопрос по скрипту:
#!/bin/bash
MAIN=10.2.1.15
ME=10.2.1.18
while true
do
until [ "`ping -c1 $MAIN |grep received|sed 's/^.*ived, //'`" = "100.0% packet loss" ]; do
sleep 5
done
ping -c3 $ME
until [ "`ping -c1 $MAIN |grep received|sed 's/^.*ived, //'`" = "0.0% packet loss" ]; do
sleep 5
done
ping -c6 $ME
done
Скрипт пускается допустим, на машине 10.2.1.30 .
Отключаю машину с 10.2.1.15 затем, поднимаю ее, при этом
смотрю анализатором на машине с 10.2.1.18 - icmp-запросы не идут,
бегает только, как ему и положено, запрос c 10.2.1.30 на $MAIN.
В чем проблема ?
Может проверки условия в until не отрабатывают.
#!/bin/bash
MAIN=10.2.1.15
ME=10.2.1.18
while true; do
while ping -c1 -W1 $MAIN 2>&1 >/dev/null; do
#ping OK, wait
sleep 5
done
# no ping
ping -c3 $ME
while ! ping -c1 -W1 $MAIN 2>&1 >/dev/null; do
# no ping, wait
sleep 5
done
#ping OK
ping -c6 $ME
done
Все получилось. Так как скрипт писался под cegwin,а пускался под бсд, то неправильно срабатывал пинг и неправильно выцарапывалось значение packet loss. Вот рабочий вариант:
#!/bin/bash
MAIN=10.2.1.15
ME=10.2.1.18
while true
do
until [ "`ping -c1 $MAIN |grep received|cut -d' ' -f7`" = "100%" ]; do
sleep 5
done
ping -c3 $ME
Все получилось. Так как скрипт писался под cegwin,а пускался под бсд, то неправильно срабатывал пинг и неправильно выцарапывалось значение packet loss. Вот рабочий вариант:
#!/bin/bash
MAIN=10.2.1.15
ME=10.2.1.18
while true
do
until [ "`ping -c1 $MAIN |grep received|cut -d' ' -f7`" = "100%" ]; do
sleep 5
done
ping -c3 $ME
until [ "`ping -c1 $MAIN |grep received|cut -d' ' -f7`" = "0%" ]; do
sleep 5
done
ping -c6 $ME
done