Поигрался еще немного с cgi shell скриптами и html, если кому интересно - ниже код для управления с вебстранички двумя leds на gl-inet, по аналогии легко делается на большее (у gl-inet еще, кроме led, есть пять GPIO на штырьках) или меньшее :-) число пинов. Управление с обратной связью, то есть сначала устанавливается требуемое значение пина, а потом читается реальное его состояния, после чего генерируется страничка с картинками и линками. В начале каждой секции есть четыре переменные, две из которых указывают на картинки, их конечно лучше заменить на желаемые вами картинки, лучше - расположенные локально, прямо на роутере, ну и за дизайн картинок не бейте :-), нарисовал в пейнте за пару минут... Файл называется
two-leds.cgi, лежит в
/www/cgi-bin/, права на исполнение должны быть дадены.
Если вызвать страничку без параметров:
http://<IP>/cgi-bin/two-leds.cgi, то просто показываются состояния светодиодов.
А если с параметрами, то можно сразу светодиодами управлять, например:
http://<IP>/cgi-bin/two-leds.cgi?green-led=off&red-led=off выключит оба светодиода,
http://<IP>/cgi-bin/two-leds.cgi?red-led=on - включит только красный, не тронув зеленый. Ну и конечно картинки для управления кликабельные. Для удобства форматирования все это завернул в таблицу, если таблица таки не нужна - все "табличные" тэги (table, tr, td) можно удалить, они в работе не участвуют, только оформление.
Ну и сам файл:
PHP код:
#!/bin/sh
echo "Content-type: text/html; charset=utf-8"
echo
echo "<html>"
echo "<head> <title>Two LEDs on GL-iNet</title> </head>"
echo "<body>"
echo " <table border="0">"
#--------------------------------------------------
############ first button ##########
# variables
var_Btn_Name='green-led' #IMPORTANT: must be uniq!
var_ONpict='http://sergeskor.no-ip.org/Files/Tech/Green_LED_On.png'
var_OFFpict='http://sergeskor.no-ip.org/Files/Tech/Green_LED_Off.png'
var_TextLabel='Green LED Control'
############ set pin ############
if echo "$QUERY_STRING" | egrep -q "$var_Btn_Name=on"; then
echo 1 > /sys/devices/platform/leds-gpio/leds/gl-connect\:green\:lan/brightness
elif echo "$QUERY_STRING" | egrep -q "$var_Btn_Name=off"; then
echo 0 > /sys/devices/platform/leds-gpio/leds/gl-connect\:green\:lan/brightness
fi
############ end of set pin ############
echo " <tr>" #start new table row
############ read pin ############
if cat /sys/devices/platform/leds-gpio/leds/gl-connect\:green\:lan/brightness | egrep -q "1"; then
echo " <td> <a href='$SCRIPT_NAME?$var_Btn_Name=off'> <img src='$var_ONpict' alt='$var_TextLabel'> </a> </td>"
else
echo " <td> <a href='$SCRIPT_NAME?$var_Btn_Name=on'> <img src='$var_OFFpict' alt='$var_TextLabel'> </a> </td>"
fi
############ end of read pin ############
echo " <td>$var_TextLabel</td>"
echo " </tr>" #close table row
#--------------------------------------------------
############ second button ##########
#variables
var_Btn_Name='red-led' #IMPORTANT: must be uniq!
var_ONpict='http://sergeskor.no-ip.org/Files/Tech/Red_LED_On.png'
var_OFFpict='http://sergeskor.no-ip.org/Files/Tech/Red_LED_Off.png'
var_TextLabel='Red LED Control'
############ set pin ############
if echo "$QUERY_STRING" | egrep -q "$var_Btn_Name=on"; then
echo 1 > /sys/devices/platform/leds-gpio/leds/gl-connect\:red\:wlan/brightness
elif echo "$QUERY_STRING" | egrep -q "$var_Btn_Name=off"; then
echo 0 > /sys/devices/platform/leds-gpio/leds/gl-connect\:red\:wlan/brightness
fi
############ end of set pin ############
echo " <tr>" #start new table row
############ read pin ############
if cat /sys/devices/platform/leds-gpio/leds/gl-connect\:red\:wlan/brightness | egrep -q "1"; then
echo " <td> <a href='$SCRIPT_NAME?$var_Btn_Name=off'> <img src='$var_ONpict' alt='$var_TextLabel'> </a> </td>"
else
echo " <td> <a href='$SCRIPT_NAME?$var_Btn_Name=on'> <img src='$var_OFFpict' alt='$var_TextLabel'> </a> </td>"
fi
############ end of read pin ############
echo " <td>$var_TextLabel</td>"
echo " </tr>" #close table row
#--------------------------------------------------
### close all tags #
echo " </table>"
echo "</body>"
echo "</html>"
Всем помогшим - спасибо за помощь, было интересно поиграться с роутером и cgi shell скриптами - никогда раньше не пробовал. Теперь буду думать, зачем оно мне надо и куда его всунуть :-)