目的:简化部分控制功能(wifi开关,拨号联网开关……)
平台:GL-iNet6416,AR9331,集成一个按键;
默认按键功能:重启;初始化
1.启发:
http://wiki.openwrt.org/doc/howto/hardware.button?s[]=reset&s[]=button
关键字: /etc/rc.button/
*文中提到了不止一种方法可以修改物理按键的功能,下列方法为最简单的一种。(简单好用才是硬道理)
2.验证
进入该目录后有以下四个文件,
failsafe power reset rfkill
感觉reset比较眼熟,先用cat输出到终端:
#!/bin/sh
[ "${ACTION}" = "released" ] || exit 0
. /lib/functions.sh
logger "$BUTTON pressed for $SEEN seconds"
if [ "$SEEN" -lt 1 ]
then
echo "REBOOT" > /dev/console
sync
reboot
elif [ "$SEEN" -gt 5 ]
then
echo "FACTORY RESET" > /dev/console
jffs2reset -y && reboot &
fi
//shell脚本,看代码应该是来对地方了,用logger测试一下,正解;
//保存后即可生效,无需重启。
3.添加自定义规则
需要shell条件分支知识,问度娘。
#!/bin/sh
[ "${ACTION}" = "released" ] || exit 0
. /lib/functions.sh
logger "$BUTTON pressed for $SEEN seconds."
if [ "$SEEN" -lt 1 ] ; then
wifi down && ifdown Home
elif [ "$SEEN" -ge 1 ] && [ "$SEEN" -lt 3 ] ; then
wifi up && ifup Home
elif [ "$SEEN" -ge 3 ] && [ "$SEEN" -lt 5 ] ; then
echo "REBOOT" > /dev/console
sync
reboot
else
logger "Invalid pressed!"
fi
//每一个elif代表一个功能;
*注意空格,缺少必要的空格将导致语句不执行。