The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Правка скрипта на bash"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Правка скрипта на bash"  
Сообщение от Jaivan (ok) on 03-Фев-09, 17:00 
Здравствуйте! Необходимо срочно подправить код! Есть скрипт на bash:

#!/bin/sh

#add the default route with equalize mpath echo "deleting and updating routes" while route del default >&- 2>&- ; do :; done ip route add default scope global nexthop via 77.220.58.194 dev ppp0 weight 4 nexthop via 85.113.195.196 dev ppp1 weight 1

нужно, чтобы если при выполнении последней команды произошла ошибка (например гетвей какой то не отзывается) выполнилась другая команда, т е создавались другие роуты

route add default gw 77.220.58.194 metric 1 route add default gw 85.113.195.196 metric 5

Помогите справиться с поставленной задачей! Заранее спасибо!

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Правка скрипта на bash"  
Сообщение от Pahanivo email(ok) on 03-Фев-09, 19:20 
>[оверквотинг удален]
>#add the default route with equalize mpath echo "deleting and updating routes" while route del default >&- 2>&- ; do :; done ip route add default scope global nexthop via 77.220.58.194 dev ppp0 weight 4 nexthop via 85.113.195.196 dev ppp1 weight 1
>
>нужно, чтобы если при выполнении последней команды произошла ошибка (например гетвей какой
>то не отзывается) выполнилась другая команда, т е создавались другие роуты
>
>
>route add default gw 77.220.58.194 metric 1 route add default gw 85.113.195.196
>metric 5
>
>Помогите справиться с поставленной задачей! Заранее спасибо!

интером пользоватся не умеем? че все в одной строке?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Правка скрипта на bash"  
Сообщение от vic (??) on 03-Фев-09, 23:21 
>[оверквотинг удален]
>#add the default route with equalize mpath echo "deleting and updating routes" while route del default >&- 2>&- ; do :; done ip route add default scope global nexthop via 77.220.58.194 dev ppp0 weight 4 nexthop via 85.113.195.196 dev ppp1 weight 1
>
>нужно, чтобы если при выполнении последней команды произошла ошибка (например гетвей какой
>то не отзывается) выполнилась другая команда, т е создавались другие роуты
>
>
>route add default gw 77.220.58.194 metric 1 route add default gw 85.113.195.196
>metric 5
>
>Помогите справиться с поставленной задачей! Заранее спасибо!

Определись каким образом производится детект ошибки. Будет ли это возвращаемое значение (статус)последней команды(утилиты) или же сообщение на stderr. Далее надеюсь понятно что надо просто выполнить проверку и запустить другую команду?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Правка скрипта на bash"  
Сообщение от Jaivan (ok) on 04-Фев-09, 10:21 
>[оверквотинг удален]
>>
>>
>>route add default gw 77.220.58.194 metric 1 route add default gw 85.113.195.196
>>metric 5
>>
>>Помогите справиться с поставленной задачей! Заранее спасибо!
>
>Определись каким образом производится детект ошибки. Будет ли это возвращаемое значение (статус)последней
>команды(утилиты) или же сообщение на stderr. Далее надеюсь понятно что надо
>просто выполнить проверку и запустить другую команду?

надеюсь, что нечто подобное заработает:

#!/bin/sh

#add the default route with equalize mpath
echo "deleting and updating routes"
while route del default >&- 2>&-
do
:
done
route_1(){
ip route add default scope global nexthop via 77.220.58.194 dev ppp0 weight 4 nexthop via 85.113.195.196 dev ppp1 weight 1
}
route_2(){
route add default gw 77.220.58.194 metric 1
route add default gw 85.113.195.196 metric 5
}
route_1
if [ $?!=0 ]; then
route_2
fi
ps вынес на суд... )

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Правка скрипта на bash"  
Сообщение от Pahanivo email(ok) on 04-Фев-09, 12:09 
>[оверквотинг удален]
>}
>route_2(){
>route add default gw 77.220.58.194 metric 1
>route add default gw 85.113.195.196 metric 5
>}
>route_1
>if [ $?!=0 ]; then
>route_2
>fi
>ps вынес на суд... )

работать не будет - возвращеямое команлой значение и фунцией - это разные вещи

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Правка скрипта на bash"  
Сообщение от Jaivan (ok) on 04-Фев-09, 12:35 
>[оверквотинг удален]
>>route add default gw 85.113.195.196 metric 5
>>}
>>route_1
>>if [ $?!=0 ]; then
>>route_2
>>fi
>>ps вынес на суд... )
>
>работать не будет - возвращеямое команлой значение и фунцией - это разные
>вещи

#!/bin/sh

#add the default route with equalize mpath
echo "deleting and updating routes"
while route del default >&- 2>&-
do
:
done
ip route add default scope global nexthop via 77.220.58.194 dev ppp0 weight 4 nexthop via 85.113.195.196 dev ppp1 weight 1
if [ $?!=0 ]; then
route add default gw 77.220.58.194 metric 1
route add default gw 85.113.195.196 metric 5
else; then
exit 1
fi

а так?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Правка скрипта на bash"  
Сообщение от Jaivan (ok) on 04-Фев-09, 12:45 
>[оверквотинг удален]
>>route add default gw 85.113.195.196 metric 5
>>}
>>route_1
>>if [ $?!=0 ]; then
>>route_2
>>fi
>>ps вынес на суд... )
>
>работать не будет - возвращеямое команлой значение и фунцией - это разные
>вещи

и тут сказано совершенно обратное
http://www.opennet.me/docs/RUS/bash_scripting_guide/c3270.ht...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Правка скрипта на bash"  
Сообщение от Pahanivo email(ok) on 04-Фев-09, 12:54 
>[оверквотинг удален]
>>>if [ $?!=0 ]; then
>>>route_2
>>>fi
>>>ps вынес на суд... )
>>
>>работать не будет - возвращеямое команлой значение и фунцией - это разные
>>вещи
>
>и тут сказано совершенно обратное
>http://www.opennet.me/docs/RUS/bash_scripting_guide/c3270.ht...

да ну? ))
Аналогичным образом ведут себя функции, расположенные внутри сценария, и сам сценарий, возвращая код завершения. Код, возвращаемый функцией или сценарием, определяется кодом возврата последней команды.
извините но если у вас в функции 10 команд и только последняя вернула 0, а вы проверяете только результат функции - это по вашему правильно?
попробуйте хотябы команды в выде последовательности давать типа:
cmd1 && cmd2 && cmd3 и тд

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Правка скрипта на bash"  
Сообщение от Jaivan (ok) on 04-Фев-09, 13:00 
>[оверквотинг удален]
>
>да ну? ))
>Аналогичным образом ведут себя функции, расположенные внутри сценария, и сам сценарий, возвращая
>код завершения. Код, возвращаемый функцией или сценарием, определяется кодом возврата последней
>команды.
>извините но если у вас в функции 10 команд и только последняя
>вернула 0, а вы проверяете только результат функции - это по
>вашему правильно?
>попробуйте хотябы команды в выде последовательности давать типа:
>cmd1 && cmd2 && cmd3 и тд

понял, а как насчет последней реализации?
я так понимаю
ip route add default scope global nexthop via 77.220.58.194 dev ppp0 weight 4 nexthop via 85.113.195.196 dev ppp1 weight 1
это одна по сути команда (с подкомандами внутри), соответственно должно прокатить...


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Правка скрипта на bash"  
Сообщение от vic (??) on 04-Фев-09, 17:49 
>понял, а как насчет последней реализации?
>я так понимаю
>ip route add default scope global nexthop via 77.220.58.194 dev ppp0 weight
>4 nexthop via 85.113.195.196 dev ppp1 weight 1
>это одна по сути команда (с подкомандами внутри), соответственно должно прокатить...

прокатывает обычно в военкомате :)
а в скриптах либо работает либо нет :)
в данном случае ip это команда с множеством параметров и проверка [ $? != 0 ] поставленная сразу после этой строки вернет результат ее (ip) выполнения, т.е. :


ip route add default scope global nexthop via 77.220.58.194 dev ppp0 weight 4 nexthop via 85.113.195.196 dev ppp1 weight 1
if [ $? != 0 ] ; then
   # тут обработка ошибки как вам надо
fi

норм решение

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Правка скрипта на bash"  
Сообщение от Jaivan (ok) on 05-Фев-09, 09:44 
>[оверквотинг удален]
>$? != 0 ] поставленная сразу после этой строки вернет результат
>ее (ip) выполнения, т.е. :
>
 
>ip route add default scope global nexthop via 77.220.58.194 dev ppp0 weight
>4 nexthop via 85.113.195.196 dev ppp1 weight 1
>if [ $? != 0 ] ; then
>   # тут обработка ошибки как вам надо
>fi
>

>норм решение

большое спасибо, заказчик молчит - значит все в порядке )))


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "продолжим? не останавливайтесь"  
Сообщение от Andrey Mitrofanov on 05-Фев-09, 10:20 
>нужно, чтобы если при выполнении последней команды произошла ошибка (например гетвей какой
>то не отзывается) выполнилась другая команда, т е создавались другие роуты

"Если не отзывается гейтвей" и "ruote вернул ненулевой RC" -- две большие разницы.

А заказчик молчит потому, что баран. И Вы его ввели в заблуждение.

Предлагаю продолжить нашу "Санта-Барбару".

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "продолжим? не останавливайтесь"  
Сообщение от Jaivan (ok) on 05-Фев-09, 14:54 
>>нужно, чтобы если при выполнении последней команды произошла ошибка (например гетвей какой
>>то не отзывается) выполнилась другая команда, т е создавались другие роуты
>
>"Если не отзывается гейтвей" и "ruote вернул ненулевой RC" -- две большие
>разницы.
>
>А заказчик молчит потому, что баран. И Вы его ввели в заблуждение.
>
>
>Предлагаю продолжить нашу "Санта-Барбару".

Вы можете растолковать, что это выражение значит вообще:
>&- 2>&-

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "продолжим? не останавливайтесь"  
Сообщение от Andrey Mitrofanov on 05-Фев-09, 16:09 
>Вы можете растолковать,

Не-а, не могу. А оно мне надо?...

> что это выражение значит вообще:
>>&- 2>&-

Closing File Descriptors

n<&-
    Close input file descriptor n.

0<&-, <&-
    Close stdin.

n>&-
    Close output file descriptor n.

1>&-, >&-
    Close stdout.

http:/docs/RUS/bash_scripting_guide/c11620.html

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру