OpenWRT設置定時重啓、定時開關WIFI、定時調整WIFI功率等自動化教學

OpenWRT一上手會覺得功能怎麼這麼少,但其實他允許你加裝的插件功能、自定義的設定多到數不清。就拿定時自動化來說,他提供的設定項目比任何一款廠牌的路由器都要自由。本文就拿定時重啓路由器、定時開關WIFI、定時調整WIFI功率爲例子。

如果你還沒有Openwrt路由器,不妨考慮小U出品的Ups-WR30U 預載 TailScale VPN和 Adguard擋廣告的WIFI6路由器:

Cron:OpenWRT上的定時排程神器

小U先考考大家,在你熟悉的操作系統,無論是電腦還是手機,如何設定「每天7點鐘把WIFI打開」?

5秒鐘時間回答。。。

是不是很難?因爲在圖形界面需要很多步驟,先打開設定,找到WIFI,把WIFI打開,然後把這一切自動化。

然而OpenWRT(以及其他Linux系統)的好處是所有操作的「實質」都是一條命令,例如:

「打開WIFI」 = wifi up

就這麼簡單的兩個英文字,輸入到OpenWRT系統,路由器WIFI就會打開。輸入 wifi down 路由器的WIFI就會關閉。輸入 reboot 路由器就會重啓。

本文主題是要利用OpenWRT定時重啓、定時開關WIFI,那就讓系統定時執行 reboot 、 wifi up / down 就好了。Cron就是一個很簡單的腳本,讓你告訴OpenWRT路由器什麼時候執行什麼命令。而且學一次所有的Linux系統、包括雲計算的主機都是使用這個通用的Cron功能。

cron 這個名稱來自於希臘語中的「Chronos」(Χρόνος),意為「時間」

我們下面就用最簡單的例子來介紹。

OpenWRT定時開關WIFI設定方法

首先登錄到 192.168.0.1 的控制界面後臺,選擇 System -> Scheduled Tasks 選項:

例如我要把路由器設定爲每天 23:00 點關閉WIFI,每天 6:00 點開啓WIFI,那麼我的設定就是:

0 23 * * * wifi down
0 6 * * * wifi up

cron的格式很簡單,

cron job的格式通常包含六個字段,分別代表不同的時間和日期參數,加上要執行的命令。這5個數字個字段的意義如下:

  1. 分鐘:0到59,*表示每分鐘
  2. 小時:0到23(0表示午夜),*表示每小時
  3. 日:1到31,*表示每天
  4. 月份:1到12,*表示每月
  5. 星期幾:0到7(0和7都代表星期日)

所以上面輸入的 0 23 * * * 就表示每月每天的 23點0分。0 6 * * * 表示每月每天的 6點0分。

還可以設置範圍,例如 0 6~8 * * * 表示每月每天的 6:00, 7:00, 8:00 各執行一次。

或者用除號來”取整“,例如 */15 * * * * 表示每15分鐘執行一次。

如果你還有很複製的設定範圍和調教,可以用 Crontab.guru – The cron schedule expression editor 之類的網頁來幫助生成Cron。

OpenWRT定時調整WIFI發射功率的方法

如果你覺得凌晨2點醒來沒有WIFI很不方便,也可以考慮將路由器的WIFI發射功率調低而不是關閉,那麼至少可以讓你睡覺的時候少吸收一些無謂的WIFI輻射:

0 23 * * * uci set wireless.radio0.txpower=1; uci set wireless.radio1.txpower=1; uci commit wireless; wifi reload
0 6 * * * uci -q delete wireless.radio0.txpower; uci -q delete wireless.radio1.txpower; uci commit wireless; wifi reload

上面的cron就是設定每天23點把2.4Ghz (radio0) 和 5Ghz (radio1)的功率都降低到1dbm。早上6點恢復預設。

OpenWRT定時重啓設定方法

如果你已經看懂了以上的cron排程設定,那麼自動重啓就更簡單了,因爲重啓就一個命令 reboot。

0 23 * * * reboot

但是有的玩家會發現路由器reboot得太快了,20秒就reboot完,但是時間還是在觸發那一分鐘內,所以直至過了 都會不斷reboot,所以有建議就加入一個delay延遲,延遲61秒才執行:

0 23 * * * sleep 61 && touch /etc/banner && reboot
2 23 * * * wifi reload

有的網友發現reboot完會沒了WIFI,所以在23:02執行一次 wifi reload。

官網上還有一些例子 [OpenWrt Wiki] Scheduling tasks with cron 例如自動備份Openwrt,防止手殘不知道搞亂了什麼設定,用來恢復。或者結合 WOL (Wake On Lan)每天自動喚醒NAS等等等等。

你學會了嗎?

歡迎留言分享你的經驗和問題交流。

本文是小U的「玩開源、從OpenWRT開始」系列文章的其中一篇。自從Ups-WR30U開源路由器得到大家的熱烈支持,小U也收到了客戶的各種使用OpenWRT的問題查詢,順勢就着手把大家會遇到的,想要用的,都集結成這個系列的文章,希望讓各位從OpenWRT體驗和玩樂開源系統。不需要靠AI,你就能讓路由器變得更”聰明“!

如果你還未有OpenWRT路由器,不妨從 Ups-WR30U 上手吧:

歡迎你的留言討論:

你可以一針見血

by Upsangel
Logo