Если я выполню этот скрипт вручную в 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
.Если у вашего сценария все еще возникают проблемы на этом этапе, любые ошибки, зарегистрированные в выходном файле, показывают справку, указывающую путь к решению.