Тут от нечего делать, основываясь на асусовский watchdog, собрал утилитку с помощью которой можно управлять светодиодом pwr. Я думаю она может найти свое применение там, где необходимо уведомление пользователя о каком-либо событии, которое можно осуществить с помощью этого светодиода. Работать должна на WL-500gDeluxe/WL-550gE/WL-500gPremium/WL-500w и возможно на других моделях. Проверял я её на своем WL-500g Premium. Это мой первый опыт клепания программы на языке C да и к тому же под линукс да и к томуже под роутер. Так что используйте её на свой страх и риск(!).
Установка:
- На подключенный диск/флешку, смонтированную в /opt:
Code:
cd /opt/bin
/usr/bin/wget 'http://wl500g.info/attachment.php?attachmentid=2152' -O- | /bin/tar xzv
- Во флеш(flashfs) роутера:
Code:
cd /usr/local/bin
/usr/bin/wget 'http://wl500g.info/attachment.php?attachmentid=2152' -O- | /bin/tar xzv
flashfs save
Т.к. на разных моделях роутеров размер раздела flashfs разный и во избежание потери информации убедитесь, что размер полученного flashfs не превышает 64К. Для этого после команды flashfs save (и до commit) обратите внимание на строку вида:
Code:
-rw-r--r-- 1 root root 10710 Nov 16 15:24 /tmp/flash.tar.gz
Check saved image and type "/sbin/flashfs commit" to commit changes
где значение, выделенное красным не должно превышать 65535. Если значение превышает максимальный размер, то откажитесь от данной затеи, НЕ делайте flashfs commit и удалите файл с помощью команды rm /usr/local/bin/pwrled
Далее сохраните flashfs во флеш:
Code:
flashfs commit
flashfs enable
Использование:
Code:
Usage: pwrled [-fghl] [-b [-p pidile]] [-c count] [-e on_dur]
[-d off_dur] [-n n_cycles] [-s sleep] [preset]
-n n_cycles Количество подмигиваний.
-e on_dur Длительность паузы в состоянии
"включено" при подмигивании.
-d off_dur Длительность паузы в состоянии
"выключено" при подмигивании.
-s sleep Пауза после подмигивания.
-g "Негативный режим". Пауза (-s)
выдерживается при погасшем светодиоде.
-c count Количество полных циклов светомузыки
0 для бесконечной светомузыки.
-1 без входа в цикл.
-f Отключить светодиод по завершении
работы программы.
-b Фоновый режим.
-p file Записать PID процесса в файл file
Используйте "-" для вывода в stdout.
Опция имеет силу только при использовании
совместно с опцией -b.
-l Вывести в stdout результат совмещения
предустановок (preset) и указанных вручную
опций и затем выйти из программы.
-h Вывести справку.
Доступные предустановки (preset): on off alarm0 alarm1 alarm2
alarm3 alarm4 alarm5 alarm6 alarm7 alarm8 alarm9
В новой версии можно комбинировать опции согласно стандарту POSIX (например: -fbp /tmp/pid -c20 -s 10). Также сохранена обратная совместимость. Тоесть для включения или отключения светодиода можно также как и раньше использовать комманды pwrled on и pwrled off соответственно.
Из за того, что не все консоли одинаково русифицированы мне в программе пришлось использовать ломаный английский, так что звиняйте, если что не будет понятно. В связи с этим с удовольствием приму помощь в исправлении ошибок.
В (ba)sh скриптах теперь можно использовать как совместно с PID файлом:
Code:
PID="/var/run/pwrled.pid"
# Для запуска светомузыки в режиме alarm5
[ -r "$PID ] && kill $(cat $PID); pwrled -bp$PID alarm5
# Для отключения светомузыки
[ -r "$PID ] && kill $(cat $PID);
так и по старинке:
Code:
# Для запуска светомузыки в режиме alarm5
(killall pwrled 2>/dev/null; pwrled alarm5 &)
# Для отключения светомузыки
(killall pwrled 2>/dev/null)
Исходник утилиты на языке C также прилагается.