Всем привет.
Ubuntu 16.04. У меня поднята вай-фай точка доступа через хостапд в связке с isc-dhcp-server. иногда драйвер вай-фай адаптера не грузится или грузится криво, либо грузится, но интерфейсу wlan0 не присваивается статический айпи-адрес. В любом из этих случаев, сервис isc-dhcp-server грузится со статусом "failed".
Я сделал скрипт проверки этого статуса и автоматический перезапуск драйвера адаптера, присвоение ему адреса и перезапуск сервисов hostapd и isc-dhcp-server.
#!/bin/bash
function checkIt()
{
check=$(service $1 status | grep -P ''running'(?!-)\b')
# service $1 status | grep -P '\b'running'(?!-)\b' >/dev/null
if [[ $check = '' ]];
then
sudo /sbin/modprobe -r rtl8192cu;
sleep 3;
sudo /sbin/modprobe rtl8192cu;
sleep 5
sudo ip a add 192.168.1.1/24 dev wlan0;
sleep 3;
sudo /etc/init.d/isc-dhcp-server restart;
sleep 3;
sudo /etc/init.d/hostapd restart;
sleep 3;
echo "$check";
echo $1" its bad";
else
echo $1" its good";
echo "$check";
fi;
}
#checkIt "motion"
checkIt "isc-dhcp-server"
#checkIt "hostapd"
Когда запускаешь скрипт из консоли, то проверка статуса сервиса идет корректно. Если он активен, то функция возвращает статус "good" и соответственно ничего не делает. Если сервис не запущен, либо имеет статус "failed", то функция возвращает статус "bad" и перезапускает драйвера и сервисы.
Пробовал и с правами su и логинится в консоль рута - все прекрасно. Но через планировщик задач от рута функция всегда возвращает статус "bad".
Не могу понять в чем дело.