Не получилось отключить светодиоды при помощи скрипта. Понятно, что можно настроить их из панели, но хотелось бы разобраться, почему они не отключаются из автозагрузки. Скрипт я создал, как описано в документации на оффсайте (Работа с LED | Wiki.js). Сам скрипт запускается и отрабатывает нормально - светодиоды гаснут (проверял из Терминала). Но вот запускаться из автозагрузки не хочет. Также пробовал просто команды прописать в автозагрузку без самого скрипта - не помогло. Не подскажите, где тут собака порылась?
В wiki ошибка в команде, пропущен один символ &
Там написано
touch /etc/led_off.sh & chmod +x /etc/led_off.sh
а должно быть
touch /etc/led_off.sh && chmod +x /etc/led_off.sh
Хотя и с одним амперсандом в данном конкретном случае результат будет тот же.
Я разобрался в принципе. Просто я столкнулся с Линуксом впервые и только методом научного тыка получилось кое-что понять)))). Светодиоды не гаснут не из-за двойного/одинарного амперсанда. Дело в том, что при перезагрузке сначала обрабатывается rc.local и светодиоды гаснут, но сразу же загрузка идет дальше и обрабатывается информация об их состоянии из Система-Индикаторы и и они включаются. Промежуток между командами из rc.local и Система-Индикаторы видимо настолько мал, что светодиоды не успевают даже погаснуть.
Разработчикам видимо стоит поправить информацию в Wiki.
После дальнейших изысканий))) выяснил следующее - переключатели стоит обнулять через какое-то время, чтобы прошла полная инициализация роутера. Для этого достаточно в скрипт добавить sleep 20:
#!/bin/sh
sleep 20
echo “none” > /sys/class/leds/blue:lan-1/trigger
echo “none” > /sys/class/leds/blue:lan-2/trigger
echo “none” > /sys/class/leds/blue:lan-3/trigger
echo “none” > /sys/class/leds/blue:wan/trigger
echo “none” > /sys/class/leds/red:wan/trigger
echo “none” > /sys/class/leds/blue:wlan-24/trigger
echo “none” > /sys/class/leds/red:wlan-50/trigger
echo “none” > /sys/class/leds/blue:power/trigger
echo “default-on” > /sys/class/leds/red:wan/trigger
а для запуска в команду в rc.local в конце добавить амперсанд
/etc/led_off.sh &
Здравствуйте! А можно это расписать подробно, как сделать новичку? Есть ли готовый скрипт, чтоб вырубить все светодиоды? Из панели не отключаются. Светодиоды ночью просто бесят!
- В Терминале надо ввести команду:
touch /etc/led_off.sh && chmod +x /etc/led_off.sh - В File Manager найти файл /etc/led_off.sh и вставить в него команды из моего прошлого сообщения.
- В файле /etc/rc.local перед командой exit 0 вставить команду:
/etc/led_off.sh & - Перезагрузить роутер.
Индикаторы отключаются при перезагрузке, но через некоторое время снова включаются. Может я что не так сделал, просто впервые имею дело с таким.
Подробней надо бы. Что в /etc/rc.local, какой скрипт используете и тд?
Put your custom commands here that should be executed once
the system init finished. By default this file does nothing.
/etc/led_off.sh &
exit 0
Как вы и расписали в своем 2 посте, пробовал число sleep увеличивать не помогло.
А до скольких sleep увеличивали?
У меня такой скрипт работает:
sleep 20
echo none >> /sys/class/leds/blue:power/trigger
echo 0 >> /sys/class/leds/blue:power/brightness
sleep 150
echo none | tee /sys/class/leds/blue:lan-1/trigger /sys/class/leds/blue:lan-2/trigger /sys/class/leds/blue:lan-3/trigger /sys/class/leds/blue:wan/trigger /sys/class/leds/blue:wlan-24/trigger /sys/class/leds/red:wlan-50/trigger /sys/class/leds/blue:power/trigger >> /dev/null
echo 0 >> /sys/class/leds/blue:lan-1/brightness
echo 0 >> /sys/class/leds/blue:lan-2/brightness
echo 0 >> /sys/class/leds/blue:lan-3/brightness
sleep 50-200 делал. Как я понимаю этот скрипт в файл led_off.sh сохранять? попробовал перезагрузил, все равно горят
Сам скрипт led_off.sh точно работает? Надо попробовать запустить его вручную из Терминала после полной перезагрузки роутера. Если работает, то проверить запускается ли он при перезагрузке из rc.local (добавить в него какой-нибудь флаг срабатывания). После этого проверить не переключает ли что-нибудь светодиоды уже после отработки rc.local и окончания работы /etc/led_off.sh. В luci светодиодов достаточно нажать кнопку Применить (а это команда comit в терминале или скрипте), чтобы светодиоды встали по умолчанию.
Как запустить скрипт вручную? chmod a+x /etc/led_off.sh
-
команда chmod правильная, её надо выполнить, чтобы поставить исполняемый атрибут на файл. Без неё скрипт не запустится
-
первая строчка скрипта должна быть такой:
#!/bin/sh
Shebang (Unix) - Wikipedia
По ней загрузчик узнаёт, какой интерпретатор скрипта запустить. -
как запустить скрипт вручную: открыть терминал или подключиться к роутеру по ssh и ввести путь до скрипта (
/etc/led_off.sh
)
А скажите, вам индикаторы вообще надо выключить или по расписанию включать-выключать?
Если вообще выключить, то почему бы не сделать это из веб-интерфейса?
В веб интерфейсе есть возможность управлять светодиодами и полностью их отключить.
Веб морда роутера->Система->Индикаторы->Вот так сделать и полностью все погаснут.
Ребят, всем спасибо за помощь, получилось через веб-интерфейс их отключить.