Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: [BASH] - Ошибка вызова route в скрипте, запущенном через crontab  (Прочитано 906 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн El Scorpio

  • Автор темы
  • Участник
  • *
  • Сообщений: 158
    • Просмотр профиля
Добрый день.
Написал скрипт для автоматического переключения маршрутов, однако столкнулся со странной ошибкой
При запуске скрипта через crontab в полученном по email отчёте вижу следующее
Цитировать
/etc/chroute/chroute.sh: line 40: route: command not found

Вот соответствующий фрагмент кода
## Функция проверки качества линии связи
testroute()
{
route add -host $testserver gw $gateway metric 1    <--------------- строка 40. ошибка
ping $testserver -c $countping 2>&1 | tee $testpingfile
route del -host $testserver                         <--------------- строка 42. ошибка
testpinglost=$(grep "packets transmitted" $testpingfile | sed 's/[^0-9 ]//g;q' | awk '{print $3;}')
testpingtime=$(grep "rtt min/avg/max/mdev" $testpingfile | sed 's%\/%\ %g' | sed 's/[^0-9 ]//g;q' | awk '{print $2;}' )
if [[ $testpinglost -gt $maxpinglost ]]
then
echo "Обнаружено $testpinglost потерянных пакетов. Связь по данному каналу неустойчива." 
echo $(date +%F\ %T)": Потерянных пакетов - $testpinglost" >> $logfile
elif [[ $testpingtime -gt $maxpingtime ]]
then
echo "Время прохождения пакетов по данному каналу $testpingtime превышает разрешённое $maxpingtime ."
echo $(date +%F\ %T)": Время прохождения пакетов по данному каналу - $testpingtime" >> $logfile
else
goodlink=true
echo "Канал связи работает"
fi
}
Аналогичные ошибки происходят далее по тексту - то есть ни один вызов команды route не выполняется. Мол, "нет такой команды"
Однако ошибка эта возникает, только если скрипт вызывается через crontab от имени root. Если запускать скрипт вручную, то команда route выполняется правильно (при запуске через sudo) или выдаёт ошибку о недостаточности прав доступа (при запуске без sudo)

В чём может быть проблема?

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
В чём может быть проблема?
which route
PATH

Оффлайн El Scorpio

  • Автор темы
  • Участник
  • *
  • Сообщений: 158
    • Просмотр профиля
Действительно
Добавил в скрипт команду echo $PATH, и в письме с протоколом увидел" /usr/bin:/bin "
А команда  which route показывает, что искомая программа находится в каталоге /sbin

Значение path при работе в консоли равно
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Оказывается, нужно было открыть расписание кронтаба (sudo crontab -e ) и добавить команду PATH=/bin:/sbin: (ну и другие пути к нужным программам дописать)

 

Страница сгенерирована за 0.063 секунд. Запросов: 25.