注意

本文修改的rc.local文件为开机文件,语句插入到开机文件的倒数第二行,即【exit 0】前。

小米路由

开机文件/etc/rc.local 写入:

#!/bin/bash
process=`ps | grep adbyby/adbyby | grep -v grep | wc -l`
iptables=`iptables -t nat -L PREROUTING | grep 8118 | wc -l`
if [ "$process" -eq "0" -o "$iptables" -eq "0" ] ; then
echo "`date` restart $process $iptables" >> /extdisks/sda1/adbyby/log.txt
pkill -9 adbyby
/extdisks/sda1/adbyby/adbyby &
iptables -t nat -D PREROUTING -p tcp ! -d 192.0.0.0/8 --dport 80 -j REDIRECT --to-ports 8118
iptables -t nat -A PREROUTING -p tcp ! -d 192.0.0.0/8 --dport 80 -j REDIRECT --to-ports 8118
else
echo "`date` ok" >> /extdisks/sda1/adbyby/log.txt
fi

极路由

不想吐槽极路由所谓的开放,所有东西都遮遮掩掩,连个SD卡空间在ssh里都控制不了。

怎么把adbyby放到sd卡里就不研究了,shell里加上文件判断,在极路由升级后可以自动下载【极路由自动升级不会重置/etc/rc.local启动文件】

开机文件/etc/rc.local 写入:

file=`ls /etc/adbyby | wc -l`
process=`ps | grep adbyby/adbyby | grep -v grep | wc -l`
iptables=`iptables -t nat -L PREROUTING | grep 8118 | wc -l`

if [ "$file" -eq "0" ] ; then
mkdir /etc/adbyby
cd /etc/adbyby
wget http://update.adbyby.com/download/7620n.tar.gz
tar zxvf 7620n.tar.gz
fi

if [ "$process" -eq "0" -o "$iptables" -eq "0" -o "$file" -eq "0" ] ; then
echo "`date` restart $process $iptables" >> /etc/adbyby/log.txt
pkill -9 adbyby
/etc/adbyby/adbyby &
iptables -t nat -D PREROUTING -p tcp ! -d 10.0.0.0/8 --dport 80 -j REDIRECT --to-ports 8118
iptables -t nat -A PREROUTING -p tcp ! -d 10.0.0.0/8 --dport 80 -j REDIRECT --to-ports 8118
else
echo "`date` ok" >> /etc/adbyby/log.txt
fi

自用极路由,一劳永逸修改:

路由器开机检测adbyby文件夹是否存在,不存在就下载并建立check.sh,以防极路由升级导致adbyby消失。

使用极路由过程中发现有时候adbyby会被极路由kill掉,所以需要建立check.sh并加计划任务定期检查。

开机文件/etc/rc.local 写入:

file=`ls /etc/adbyby | wc -l`

 ##文件不存在,可能极路由升级过
if [ "$file" -eq "0" ] ; then
mkdir /etc/adbyby
cd /etc/adbyby
wget http://update.adbyby.com/download/7620n.tar.gz
tar zxvf 7620n.tar.gz

##建立定期检测shell文件
cat > check.sh << EOF
#!/bin/bash
process=`ps | grep adbyby/adbyby | grep -v grep | wc -l`
iptables=`iptables -t nat -L PREROUTING | grep 8118 | wc -l`
if [ "\$process" -eq "0" -o "\$iptables" -eq "0" ] ; then
echo "`date` restart \$process \$iptables" >> /etc/adbyby/log.txt
pkill -9 adbyby
/etc/adbyby/adbyby &
iptables -t nat -D PREROUTING -p tcp ! -d 10.0.0.0/8 --dport 80 -j REDIRECT --to-ports 8118
iptables -t nat -A PREROUTING -p tcp ! -d 10.0.0.0/8 --dport 80 -j REDIRECT --to-ports 8118
else
echo "`date` ok" >> /etc/adbyby/log.txt
fi
EOF
fi

##定期检测shell文件加入Crontab,未避免重复添加,先监测是否已经有crontab
crontab=`crontab -l | grep adbyby | wc -l`
if [ "$crontab" -eq "0" ] ; then
crontab -l >/tmp/crontab.bak
echo "*/10 * * * * sh /etc/adbyby/check.sh >/dev/null 2>&1" >>/tmp/crontab.bak
crontab /tmp/crontab.bak
fi

##进行一次检测
sh /etc/adbyby/check.sh