Назад | Перейти на главную страницу

Проблема с ifconfig в сценарии оболочки (с использованием cron)

Если я выполню этот скрипт вручную в Debian:

#!/bin/bash
/sbin/ifconfig wlan0 down
/sbin/ifconfig wlan0 up
sudo iwconfig wlan0 essid "WLAN_NETWORK"
sudo iwconfig wlan0 key myPassword
sudo dhclient wlan0

Работает нормально. Он перезапускает мой адаптер Wi-Fi и снова подключается без проблем. Однако он ничего не делает, когда я программирую его с помощью cron (конечно, с правами администратора).

Есть намёк на то, что происходит?

Похоже, вы "бесполезно используете sudo"в этом сценарии. То есть, если вы можете выполнить это успешно:

/sbin/ifconfig wlan0 down

Тогда вы, вероятно, уже являетесь пользователем root, поэтому у вас должна быть возможность:

/sbin/iwconfig wlan0 essid "WLA_NETWORK"

без использования sudo.

Есть несколько вещей, которые могут помешать запуску вашего скрипта в его текущей форме:

  • sudo может быть настроен так, чтобы требовать действительный tty (используя requiretty директива конфигурации). Если этот флаг активен, вы не сможете использовать sudo через cron.
  • Вы используете полностью определенные пути для ifconfig но не для iwconfig. Если этой команды нет в PATH доступно при запуске через sudo, это не сработает.

Вот что вы можете сделать, чтобы это исправить:

  • Удалить использование sudo. Либо запустите весь скрипт через sudo или просто запустите его как root.
  • Заменить iwconfig и dhclient с полностью квалифицированными путями.
  • Журнал stdout и stderr из сценария в файл, чтобы вы могли проверить вывод. Ваша запись crontab будет выглядеть примерно так * * * * * /path/to/your/script > /tmp/script.log 2>&1.

Если у вашего сценария все еще возникают проблемы на этом этапе, любые ошибки, зарегистрированные в выходном файле, показывают справку, указывающую путь к решению.