需求:前面写了关闭网络连接,进一步的需求是,在指定的时间段内开关网络。因为只有在使用PPOE拨号时才有需要在指定时间断网,所以一个判断也是需要的。

思路:指定时间写在crontab里就可以,但这个判断我写了好几次都不行。

解决:最终可用的crontab写法如下。

1
2
0 23 * * * ifup wan
0 5 * * * [ -z "$(uci get network.wan.username | grep username)" ] || ifdown wan;

前面五个项是cron要求的,含义是在23:00分执行第一个ifup命令,在5:00执行第二个命令。第二个命令是个判断,这个写法我是从init.d目录里面的脚本里面学来的。用中括号和-z判断字符串是否为空,字符串就是执行那条命令的结果。如果执行命令的结果是非空,也就是说uci获取的用户名和grep命令后面的用户名是一致的,那么,字符串是非空的,判断结果为否,执行||后面的命令也就是关闭Wan口的命令。

刚才又在本地试了一下,之前我写的几种情况在bash里面也是不行的,看来不是ash的问题,还是学艺不精啊。记录备忘。