我想为openwrt创建一个脚本,它每天都会更改Shadowsocks服务中的一些变量。这就是脚本,但我不知道该把它放在哪里,也不知道如何设法每天或每次路由器重启时调用它。
#!/bin/sh /etc/rc.common
restart=0
for i in `uci show shadowsocks | grep alias | sed -r 's/.*\[(.*)\].*/\1/'`
do
server=$(uci get shadowsocks.@servers[${i}].alias)
result=$(nslookup $server)
new_ip=$(echo "${result}" | tail -n +3 | awk -F" " '/^Address 1/{ print $3}')
if [ -n "$new_ip" ]; then
logger -t shadowsocks "nslookup $server -> $new_ip"
old_ip=$(uci get shadowsocks.@servers[${i}].server)
if [ "$old_ip" != "$new_ip" ]; then
logger -t shadowsocks "detect $server ip address change ($old_ip -> $new_ip)"
restart=1
uci set shadowsocks.@servers[${i}].server=${new_ip}
fi
else
logger -t shadowsocks "nslookup $server fail"
fi
done
if [ $restart -eq 1 ]; then
logger -t shadowsocks "restart for server ip address change"
uci commit shadowsocks
/etc/init.d/shadowsocks restart
fi发布于 2018-12-28 19:13:10
您可以使用cron实用程序。Cron是类Unix计算机操作系统中基于时间的作业调度程序。它允许在指定的时间运行作业/程序/脚本。
默认情况下,OpenWrt附带一个cron系统,由busybox提供。
Cron在默认情况下未启用,因此您的作业将不会运行。要在Openwrt中激活cron:
/etc/init.d/cron start
/etc/init.d/cron enable参考:https://oldwiki.archive.openwrt.org/doc/howto/cron
现在考虑你的问题,如果你想每天运行上面提到的脚本:
使用crontab -e命令编辑cron文件。并写在下面的行上。
0 0 * * * sh /path/to/your/script.sh此命令将在00:00 (每天午夜)运行您的脚本。您可以轻松地修改上述命令,以便在任何其他时间安排您的作业。生成cron作业条目的很好参考:https://crontab.guru/
要查看crontab是否正常工作:
tail -f /var/log/syslog | grep CRON现在进入您的第二个问题“每次重新启动路由器时运行脚本”:
您可以将脚本放在/etc/rc.local.中这个文件将在Openwrt中由/etc/rc.d/S95do在每次启动时作为shell脚本执行。因此,只需使用sh /path/to/your/script.sh编辑/etc/rc.local,确保您的脚本是可执行的,并正确执行您的任务。
https://stackoverflow.com/questions/53798438
复制相似问题