URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 40092
[ Назад ]

Исходное сообщение
"Туплю. Нужен взгляд со стороны."

Отправлено anton , 03-Фев-04 16:34 
Есть скриптик. Цель когда пропадает тунель запускатьдругие скрипты. И вот уже часа два не могу его дописать. Гляньте какую галочку я забываю?

#!/bin/sh
tun=`/sbin/ifconfig -a | /usr/bin/grep "192.168.130.1"`
tun_true="inet 192.168.130.2 --> 192.168.130.1 netmask 0xffffff00"
if [ $tun = $tun_true ] ; then
echo "Ok"
fi

выдаёт
[: 192.1681.130.2: unexpected operator

Как правильно?  


Содержание

Сообщения в этом обсуждении
"Туплю. Нужен взгляд со стороны."
Отправлено alk , 03-Фев-04 16:53 
>Есть скриптик. Цель когда пропадает тунель запускатьдругие скрипты. И вот уже часа
>два не могу его дописать. Гляньте какую галочку я забываю?
>
>#!/bin/sh
#!/bin/sh -xv
>tun=`/sbin/ifconfig -a | /usr/bin/grep "192.168.130.1"`
>tun_true="inet 192.168.130.2 --> 192.168.130.1 netmask 0xffffff00"
>if [ $tun = $tun_true ] ; then
>echo "Ok"
>fi
>
>выдаёт
>[: 192.1681.130.2: unexpected operator
>
>Как правильно?
запуск сктипта ./script.sh 2>&1 | more


"Туплю. Нужен взгляд со стороны."
Отправлено anton , 03-Фев-04 17:11 
Не понял что ты имел ввиду?

"Туплю. Нужен взгляд со стороны."
Отправлено alk , 03-Фев-04 18:05 
>>Есть скриптик. Цель когда пропадает тунель запускатьдругие скрипты. И вот уже часа
>>два не могу его дописать. Гляньте какую галочку я забываю?
>>
>>#!/bin/sh
>>#!/bin/sh -xv
>>tun=`/sbin/ifconfig -a | /usr/bin/grep "192.168.130.1"`
>>tun_true="inet 192.168.130.2 --> 192.168.130.1 netmask 0xffffff00"
>>if [ $tun = $tun_true ] ; then
>>echo "Ok"
>>fi
>>
>>выдаёт
>>[: 192.1681.130.2: unexpected operator
>>
>>Как правильно?
#!/bin/sh -xv
запуск сктипта ./script.sh 2>&1 | more
покажет на экране каждую строчку выполнения скрипта
увидишь где ошибка


"Туплю. Нужен взгляд со стороны."
Отправлено pasha , 03-Фев-04 17:08 
>Как правильно?

if [ "$tun" = "$tun_true" ]; then

Вот так будет правильно.
RTFM.


"Туплю. Нужен взгляд со стороны."
Отправлено anton , 03-Фев-04 17:18 
#!/bin/sh
tun=`/sbin/ifconfig -a | /usr/bin/grep "192.168.130.1"`
tun_true="inet 192.168.130.2 --> 192.168.130.1 netmask 0xffffff00"
echo $tun
echo $tun_true
if [ "$tun" = "$tun_true" ] ; then
echo "Ok"
else
echo "Fuck"
fi

Получил

   inet 192.168.130.2 --> 192.168.130.1 netmask 0xffffff00
inet 192.168.130.2 --> 192.168.130.1 netmask 0xffffff00
Fuck

Вот :(


"Туплю. Нужен взгляд со стороны."
Отправлено pasha , 03-Фев-04 17:38 
>Вот :(

if test "$tun" = "$tun_true"; then

А так попробуй. ;)

Все одно - RTFM!



"Туплю. Нужен взгляд со стороны."
Отправлено Michael , 03-Фев-04 18:37 
>Есть скриптик. Цель когда пропадает тунель запускатьдругие скрипты. И вот уже часа
>два не могу его дописать. Гляньте какую галочку я забываю?
>
>#!/bin/sh
>tun=`/sbin/ifconfig -a | /usr/bin/grep "192.168.130.1"`
>tun_true="inet 192.168.130.2 --> 192.168.130.1 netmask 0xffffff00"
>if [ $tun = $tun_true ] ; then
>echo "Ok"
>fi
>
>выдаёт
>[: 192.1681.130.2: unexpected operator
>
>Как правильно?

попробуй
if $tun == $tun_true; then

а вообще, имхо, не лучший способ определять падение канала... но сойдет...


"Туплю. Нужен взгляд со стороны."
Отправлено anton , 04-Фев-04 10:04 
Оба способа не канают.
В первом при if test "$tun" = "$tun_true"; then
Получаю Fuck
Во втором
inet: not found.
Fuck

"Туплю. Нужен взгляд со стороны."
Отправлено Michael , 04-Фев-04 10:22 
>Оба способа не канают.
>В первом при if test "$tun" = "$tun_true"; then
>Получаю Fuck
>Во втором
>inet: not found.
>Fuck
а откуда фраза "inet: not found."?

я еще одну вещь проглядел - надо точку с запятой поставить после обоих echo внутри if-а
т.е. примерно так:
if test "$tun" = "$tun_true"; then
  echo OK;
else
  echo BAD;
fi


"Туплю. Нужен взгляд со стороны."
Отправлено anton , 04-Фев-04 10:27 
>>Оба способа не канают.
>>В первом при if test "$tun" = "$tun_true"; then
>>Получаю Fuck
>>Во втором
>>inet: not found.
>>Fuck
>а откуда фраза "inet: not found."?
Да фиг её знает такое впечатление что он переменные в нутри if воспринимал как команды сшела.
>
>я еще одну вещь проглядел - надо точку с запятой поставить после
>обоих echo внутри if-а
>т.е. примерно так:
>if test "$tun" = "$tun_true"; then
>  echo OK;
>else
>  echo BAD;
>fi



"Туплю. Нужен взгляд со стороны."
Отправлено anton , 04-Фев-04 10:06 
>
>а вообще, имхо, не лучший способ определять падение канала... но сойдет...

А как лучше, грамотней. Мне просто в голову только этот способ пришел.


"Туплю. Нужен взгляд со стороны."
Отправлено anton , 04-Фев-04 10:20 
Такое впечатление что, что то с пробелами в переменных. Ибо так прокатило.

#!/bin/sh
tun=`/sbin/ifconfig -a | /usr/bin/grep "192.168.130.1" | awk '{print $2}'`
tun_true="192.168.130.2"
echo "$tun"
echo "$tun_true"
if test "$tun" = "$tun_true" ; then
echo "Ok"
else
echo "Fuck"
fi


"Туплю. Нужен взгляд со стороны."
Отправлено Michael , 04-Фев-04 10:45 
>А как лучше, грамотней. Мне просто в голову только этот способ пришел.
я проверяю простым пингом
вот такой скрипт у меня дает данные в mrtg для графика работоспособности канала и инернета вообще:
if ping -c 1 -I eth1 -w 1 $1 > /dev/null; then
  echo "1000";
else
  echo "0";
fi
if ping -c 1 -I eth1 -w 1 $2 > /dev/null; then
  echo "1000";
else
  echo "0";
fi
/usr/bin/uptime
echo "Internet"

в качестве параметров идет адрес шлюза провайдера и адрес какого-нибудь гарантированно работающего хоста в интернете типа mail.ru


"Туплю. Нужен взгляд со стороны."
Отправлено anton , 04-Фев-04 10:52 
>>А как лучше, грамотней. Мне просто в голову только этот способ пришел.
>я проверяю простым пингом
>вот такой скрипт у меня дает данные в mrtg для графика работоспособности
>канала и инернета вообще:
>if ping -c 1 -I eth1 -w 1 $1 > /dev/null; then
>  echo "1000";
>else
>  echo "0";
>fi
>if ping -c 1 -I eth1 -w 1 $2 > /dev/null; then
>  echo "1000";
>else
>  echo "0";
>fi
>/usr/bin/uptime
>echo "Internet"
>
>в качестве параметров идет адрес шлюза провайдера и адрес какого-нибудь гарантированно работающего
>хоста в интернете типа mail.ru


вариант неплохой но у меня несколько маршрутов, поэтому если один тунель лег то ping всёравно пройдёт


"Туплю. Нужен взгляд со стороны."
Отправлено seiko_ , 07-Фев-04 22:07 
вы гоните!!!!!
у вас строки не ИДЕНТИЧНЫЕ! как вы их сравнивать собираетесь?

#!/bin/sh
tun=`/sbin/ifconfig -a | /usr/bin/grep "192.168.130.1"`
tun_true="inet 192.168.130.2 --> 192.168.130.1 netmask 0xffffff00"
if [ $tun = $tun_true ] ; then
echo "Ok"
fi

может проще ?!
#!/bin/sh
tun_res=`/sbin/ifconfig -a | /usr/bin/grep "192.168.130.1"`
res=`echo $?`

if [ $res -ne 0 ];then
echo "tun DOWN"  # or run other command
fi


"Туплю. Нужен взгляд со стороны."
Отправлено anton , 09-Фев-04 10:19 
>вы гоните!!!!!
>у вас строки не ИДЕНТИЧНЫЕ! как вы их сравнивать собираетесь?
>
В итоге я пришёл к тому же выводу, потому и сделал так
tun=`/sbin/ifconfig -a | /usr/bin/grep "192.168.130.1" | awk '{print $2}'`
вот только почему они различные не понимаю

>#!/bin/sh
>tun=`/sbin/ifconfig -a | /usr/bin/grep "192.168.130.1"`
>tun_true="inet 192.168.130.2 --> 192.168.130.1 netmask 0xffffff00"
>if [ $tun = $tun_true ] ; then
>echo "Ok"
>fi
>
>может проще ?!
>#!/bin/sh
>tun_res=`/sbin/ifconfig -a | /usr/bin/grep "192.168.130.1"`
>res=`echo $?`
>
>if [ $res -ne 0 ];then
>echo "tun DOWN"  # or run other command
>fi



"Туплю. Нужен взгляд со стороны."
Отправлено Михаил , 08-Фев-04 08:33 
>вариант неплохой но у меня несколько маршрутов, поэтому если один тунель лег
>то ping всёравно пройдёт
но ведь я же указываю конкретный интерфейс для пинга...
что мешает сделать копии этого скрипта для всех интерфейсов?

"Туплю. Нужен взгляд со стороны."
Отправлено anton , 09-Фев-04 10:18 
>>вариант неплохой но у меня несколько маршрутов, поэтому если один тунель лег
>>то ping всёравно пройдёт
>но ведь я же указываю конкретный интерфейс для пинга...
>что мешает сделать копии этого скрипта для всех интерфейсов?
Да вариант хороший но не для моего случая. Тот же фаервол.

"Туплю. Нужен взгляд со стороны."
Отправлено Aquarius , 09-Фев-04 09:33 
>if [ $tun = $tun_true ] ; then

>выдаёт
>[: 192.1681.130.2: unexpected operator
>
>Как правильно?

$tun и $tun_true необходимо, так сказать, "отквотить".


"Туплю. Нужен взгляд со стороны."
Отправлено anton , 09-Фев-04 10:20 
>>if [ $tun = $tun_true ] ; then
>
>>выдаёт
>>[: 192.1681.130.2: unexpected operator
>>
>>Как правильно?
>
>$tun и $tun_true необходимо, так сказать, "отквотить".

А поподробней нельзя, так на будущее чтоб знать.


"Туплю. Нужен взгляд со стороны."
Отправлено roma , 10-Фев-04 14:36 
Попробуй так:

#!/bin/sh
tun=`/sbin/ifconfig -a | /usr/bin/grep "192.168.130.1" | /usr/bin/tr '\t' ' ' | /usr/bin/sed 's/^ *//g'`
tun_true="inet 192.168.130.2 --> 192.168.130.1 netmask 0xffffff00"
if [ "$tun" = "$tun_true" ] ; then
echo "Ok"
fi


>Есть скриптик. Цель когда пропадает тунель запускатьдругие скрипты. И вот уже часа
>два не могу его дописать. Гляньте какую галочку я забываю?
>
>#!/bin/sh
>tun=`/sbin/ifconfig -a | /usr/bin/grep "192.168.130.1"`
>tun_true="inet 192.168.130.2 --> 192.168.130.1 netmask 0xffffff00"
>if [ $tun = $tun_true ] ; then
>echo "Ok"
>fi
>
>выдаёт
>[: 192.1681.130.2: unexpected operator
>
>Как правильно?