Hi, i need a scheduled task to activate and stop the wireless lan.
The name of the wireless lan is = wlan0
Check here:
Can i add these command to the crontab ?
# start wlan0 each day at 06:30 am
00 06 * * * uci set wireless.@wifi-device[0].disabled=0; uci set wireless.@wifi-device[0].txpower=20; uci set wireless.@wifi-device[1].disabled=0; uci set wireless.@wifi-device[1].txpower=20; uci commit wireless; wifi
#
# stop wlan0 each day at 05:00 am
30 23 * * * uci set wireless.@wifi-device[0].disabled=1; uci set wireless.@wifi-device[1].disabled=1; uci commit wireless; wifi
Check here:
Is now the configuration complete, is that all correct ?
Thanks for your help!
Well, this doesn't fit to my personal usecase ... where a 17 year old boy simply powercycle the router and the WLAN is back again ...
Therefore I use this snippet successfully for a couple of years:
#!/bin/sh
#
# ap-toggle script
# written by Dirk Brenken (dev@brenken.org)
# usage:
# ap-toggle.sh on <radio> => switch the AP on all radios "on", you can limit this with the optional <radio>-parm
# ap-toggle.sh off <radio> => switch the AP on all radios "off", you can limit this with the optional <radio>-parm
# reference this script in /etc/crontabs/root and restart cron service afterwards, e.g.:
# 0 00 * * * /usr/bin/ap-toggle.sh off
# 0 06 * * * /usr/bin/ap-toggle.sh on
#
# This is free software, licensed under the GNU General Public License v3.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# set initial defaults
#
LC_ALL=C
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
apt_ver="0.5"
apt_sysver="$(ubus -S call system board | jsonfilter -e '@.release.description')"
apt_action="${1}"
apt_radio="${2}"
. "/lib/functions.sh"
# f_prepare: gather wireless information & enable/disable AP interfaces
#
f_prepare()
{
local config="${1}"
local mode="$(uci -q get wireless."${config}".mode)"
local radio="$(uci -q get wireless."${config}".device)"
local disabled="$(uci -q get wireless."${config}".disabled)"
if [ "${mode}" = "ap" ] && ([ -z "${apt_radio}" ] || [ "${apt_radio}" = "${radio}" ])
then
if [ "${apt_action}" = "on" ] && ([ -z "${disabled}" ] || [ "${disabled}" = "1" ])
then
uci -q set wireless."${config}".disabled=0
elif [ "${apt_action}" = "off" ] && ([ -z "${disabled}" ] || [ "${disabled}" = "0" ])
then
uci -q set wireless."${config}".disabled=1
fi
fi
}
config_load wireless
config_foreach f_prepare wifi-iface
# commit & reload all changes, write final log message
#
if [ -n "$(uci -q changes wireless)" ]
then
uci -q commit wireless
ubus call network reload
apt_radio="${apt_radio:="all radios"}"
logger -t "ap-toggle-[${apt_ver}] info " "AP on ${apt_radio} has been switched '${apt_action}' (${apt_sysver})"
fi
Try initially to use full paths: /sbin/uci /sbin/wifi
Activating cron
Cron is not enabled by default, so your jobs won't be run. To activate cron:
/etc/init.d/cron start /etc/init.d/cron enable
If there is no crontab defined (i.e. /etc/crontabs/ is empty), then cron won't start! Make sure you already defined cron jobs before trying to start cron.