家里那台老路由器刷了OpenWrt,想让它每天凌晨自动重启、定时更新广告过滤列表,或者检测到网速变慢就自动换DNS——这些事,靠网页后台点几下根本搞不定,得靠固件里的脚本命令来跑。
先确认你的路由器支持脚本执行
不是所有路由器固件都开放命令行。常见的可刷固件中,OpenWrt、Padavan、DD-WRT 和 Merlin(华硕梅林)基本都带完整的 Linux 环境,能直接用 ssh 登录后敲命令。如果你用的是原厂固件(比如TP-Link、华为的默认系统),大概率不支持,强行折腾可能变砖,建议先查型号是否有人成功刷机。
常用登录和执行方式
以 OpenWrt 为例,打开终端(Windows 可用 PuTTY 或 Windows Terminal),输入:
ssh root@192.168.1.1密码就是你设置的管理员密码(首次登录可能是 password 或空)。进去了就能像操作 Linux 一样敲命令。
几个真能用上的脚本命令示例
① 让路由器每天3:15自动重启
echo "15 3 * * * /sbin/reboot" | crontab -这句是把定时任务写进 cron,保存后生效。重启 crond 服务可加一句:/etc/init.d/cron restart。
② 检查 WAN 口是否掉线,掉线就拨号重连
if ! ping -c 1 114.114.114.114 &> /dev/null; then
ifup wan
fi可以存成 /root/check_wan.sh,再用 chmod +x /root/check_wan.sh 加执行权限,然后放进 cron 每5分钟跑一次。
③ 更新 adguardhome 的过滤规则(假设已装好)
wget -O /opt/adguardhome/filters.txt https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/2_Base_filter/filter.txt &> /dev/null
/opt/adguardhome/adguardhome -s reload注意路径要按你实际安装位置改,/opt 是 OpenWrt 常用扩展目录,如果没挂 U 盘或 SD 卡,/tmp 也能临时放脚本,但重启后会丢。
小心这些坑
• /etc/storage 或 /jffs 这类目录才持久化,/tmp 和 /etc 下非配置文件重启就没了;
• 脚本里别用绝对路径依赖的命令(比如 python3),OpenWrt 默认没装,要用 opkg install python3 先装;
• 修改系统级配置前,先备份:cp /etc/config/network /etc/config/network.bak;
• 别在脚本里写死密码或密钥,尤其用 curl 或 wget 调 API 时,优先走 token 或环境变量。
有次我帮邻居调一台 Padavan 路由器,他嫌广告太多,我就写了段脚本每小时拉一次去广告域名列表,自动更新 dnsmasq 的 conf 文件,再 killall -HUP dnsmasq 重载——不用重启,广告真的少了一大半。脚本不复杂,关键是知道在哪跑、怎么让它活下来。
路由器不是只能当“傻瓜转发器”,固件里的命令行,就是把它变成家庭网络小管家的钥匙。