困扰5年的K1K2pk3华硕padavan不能定时crontab命令执行的问题终于解决

缘起

​ 大概2015年,跟风上了斐讯的车,屯了不少的K1/K2路由器。后来斐讯什么情况大家都知道,比较幸运的是最后2个斐讯的产品由京东自营兜底了,所以我不但没有赔钱,还小赚了一点以及斐讯的路由器设备。

​ 由于斐讯路由器市场保有量大,从而有很多第三方的固件可供安装。就我而言,安装过潘多拉、华硕老毛子、华硕荒野无灯、华硕Hiboy、高恪。现在在持续更新的还有Hiboy、高恪的固件。高恪我不喜欢用,性能不够好。Hiboy只在telegram发布了,而其他的作者已经不再更新甚至下架了,原因我问过H大,他表示因为固件里带了一些“科学上网”,所以在2019年只要包含了“科学上网”的固件全部下架,这些都是题外话,不过多叙述。

​ 在体验众多固件中,最稳定的就是潘多拉,但是界面和设置繁琐以及没有相应的插件,我不喜欢用它,但是够稳定,该有的功能都能正常使用,比如我最喜欢的Crontab定时功能,我常用来给路由器进行重启。

​ 但是我装上华硕的固件后,用了几年,从来就没有Crontab定时成功过,由于近期迫切需要该功能,我只能重头到位尝试。

开始解决

测试思路

  1. 重新安装其他的固件,好在硬盘里有几年前的华硕固件
  2. 恢复出厂设置,测试Crontab命令
  3. 联系Hiboy作者

测试结果

  1. 第一种思路,无效。原因是重新安装其他的固件,不会重置用户的数据,这也是后来才知道为什么无效的
  2. 第二种思路。刚恢复后定时命令可以成功,但是当我导入用户配置文件后,立即失效
  3. Hiboy作者同样不知道原因

进一步思考

  1. 既然恢复出厂设置后成功,那么我是不是可以手动设置路由器,而不是直接导入以前的路由器配置文件?
  2. 既然要手动设置路由器,那么我应该每次修改设置后,通过Crontab定时命令输出一些内容,比如打印日志,来证明我修改设置后还是可以定时执行的

操作方法

  1. 我准备了一个定时命令,以修改WiFi为例子:

    1
    * * * * */bin/echo -路由器定时测试:修改2.4g WiFi名和密码`date` >> /home/root/time.txt  &

    这个shell命令需要写在:自定义设置 - 脚本 - 自定义 Crontab 定时任务配置 内

    它的作用是每间隔1分钟,用echo命令向:/home/root/time.txt 文件写入一段字符串,同事路由器配置页面也会显示log记录

  2. 当我配置WiFi以后,我在:自定义设置 - 脚本 - 自定义 Crontab 定时任务配置,填入上面的内容,最后保存配置

  3. 等待log输出内容,华硕固件的log查看方法是在右上角,有一个Log按钮

  4. 每配置一个内容后,就对shell命令内的测试内容进行修改,直到我设置路由器用户名后,定时命令不再生效

  5. 此时我的路由器用户名里有一些符号“.”,一个英文的点,这是不支持特殊符号,还是不允许修改默认的用户名?

  6. 为此,我将用户名内的符号删除,仅适用:数字+字母 的组合

  7. 测试结果表明,华硕固件的用户名不支持用户名带有特殊符号,为此困扰我5年的问题终于得到解决

总结

  1. 如果某个功能之前正常,在做了某些操作后失效,就需要恢复曾做过的操作
  2. 如果操作的内容太多,建议恢复出厂设置,一步步来操作
  3. 用户名不应该使用特殊符号,建议:字母+数字 的组合
  4. 路由器的固件通常是一个裁剪过的Linux系统,有不完善的地方很正常。请仔细Google搜索,有可能别人遇到和你一样的问题,耐心一点测试,毕竟能靠得住的人还是你自己