一,软路由无故断线,找到自动检测脚本

地址:https://www.right.com.cn/forum/thread-4059789-1-1.html

#!/bin/sh
#网络检测脚本 通过PING来判断网络互通状态
#参数
#testing_ip=目标IP地址  detection_times=检测次数  Interval_time=间隔时间(秒)
#状态解释state
#start=开始检测  ok=网络连通  no=网络断开重试
#restart wan=重连WAN  restart wan ok=重连WAN完成
#restart network=重启网络进程  restart network ok=重启网络进程完成
#restart reboot=重启路由  restart reboot ok=重启路由完成
#脚本目录下日志文件my_pppoe.log 最大512K超出自动清空
#BY:朱君绰绰 V1.4
#其他重启命令
#ifup wan=重连WAN
#/etc/init.d/network restart=重启网络进程
#reboot=重启路由
#shell测试命令
#./my_pppoe.sh restart1
#echo $1

function Get_local_time(){
    date_time=`date +"%Y-%m-%d %H:%M:%S"`;
}
function text_log_size(){
    if [ -f $1 ]
    then
        filesize=`ls -l $1 | awk '{ print $5 }'`
        maxsize=$((1024*512))
        if [ $filesize -gt $maxsize ]
        then
            echo "$filesize > $maxsize"
            echo "log cleared" >$1
        else 
            echo "$filesize < $maxsize"
        fi
    fi 
}
#testing_ip=目标IP地址
testing_ip=114.114.114.114
testing_ip2=202.108.22.5

#detection_times=检测次数
detection_times=3

#Interval_time=间隔时间(秒)
Interval_time=10
detection_count=0
WebError=0
text_log=my_pppoe.log

text_log_size $text_log
Get_local_time
echo $date_time -- my_pppoe -- state:start >>$text_log
while [[ $detection_count -lt $detection_times ]]
do
    if /bin/ping -c 1 $testing_ip >/dev/null
    then
        Get_local_time
        echo $date_time -- my_pppoe -- state:ok ping=$testing_ip>>$text_log
        WebError=0
        break
    else
        if /bin/ping -c 1 $testing_ip2 >/dev/null
        then
            Get_local_time
            echo $date_time -- my_pppoe -- state:no ping=$testing_ip -->>$text_log
            echo $date_time -- my_pppoe -- state:ok ping=$testing_ip2>>$text_log
            WebError=0
            break
        else
            detection_count=$((detection_count + 1))
            Get_local_time
            echo $date_time -- my_pppoe -- state:no ping=$testing_ip -->>$text_log
            echo $date_time -- my_pppoe -- state:no ping=$testing_ip2 -->>$text_log
            echo $date_time -- my_pppoe -- state:ping retry $detection_count-$detection_times>>$text_log
            WebError=1
            sleep $Interval_time
        fi
    fi
done

if [ $WebError = 1 ]
then
    if [ $1 = restart1 ]
    then
        Get_local_time
        echo $date_time -- my_pppoe -- state:restart wan >>$text_log
        ifup wan
        Get_local_time
        echo $date_time -- my_pppoe -- state:restart wan ok >>$text_log
    fi

    if [ $1 = restart2 ]
    then
        Get_local_time
        echo $date_time -- my_pppoe -- state:restart network >>$text_log
        /etc/init.d/network restart
        Get_local_time
        echo $date_time -- my_pppoe -- state:restart network ok >>$text_log
    fi

    if [ $1 = restart3 ]
    then
        Get_local_time
        echo $date_time -- my_pppoe -- state:restart reboot >>$text_log
        Get_local_time
        echo $date_time -- my_pppoe -- state:restart reboot ok >>$text_log
        reboot
    fi
fi

exit 0



#end

移动 电信 联通 没有固定IP的宽带都支持哦
脚本原理机制,ping指定IP地址判断网络互连状态
具体相关逻辑:

  1. ping地址1正常,网络正常,不执行任何操作
  2. ping地址1异常,ping地址2正常,网络正常,不执行任何操作
  3. ping地址1异常,ping地址2异常,网络异常,准备再次验证
  4. 每隔10秒执行一次上述流程,连续循环3次后还是异常状态就执行相关操作
  5. IP1为114.114.114.114,IP2为202.108.22.5

相关解释打开脚本自行了解
推荐使用Notepad++编辑脚本
日志文件保存在脚本文件同目录my_pppoe.log

使用方法WinSCP上传脚本文件到root目录下,设置777权限
WinSCP软件设置权限方法
选择脚本文件my_pppoe.sh,鼠标右键->属性,权限勾选R W X(拥有者 组 其他),八进制表=0777就可以了

openwrt计划任务设置,系统->计划任务,添加下列命令中的一条,按需设置
1分钟执行一次,异常重启wan
/1 * sh /root/my_pppoe.sh restart1
2分钟执行一次,异常重启wan
/2 * sh /root/my_pppoe.sh restart1
5分钟执行一次,异常重启wan
/5 * sh /root/my_pppoe.sh restart1

5分钟执行一次,异常重启网络连接
/5 * sh /root/my_pppoe.sh restart2

5分钟执行一次,异常重启路由
/5 * sh /root/my_pppoe.sh restart3

restart1=重启WAN(极力推荐) restart2=重启网络连接(推荐) restart3=重启路由(不推荐)
restart1,restart2支持(1-30分钟),restart2 restart3最少需要5分钟(设置太短可能无法进入路由器后台)

判断脚本是否执行成功的方法:

  1. 查看系统日志有无类似记录,cmd sh /root/my_pppoe.sh restart1(如果设置的是5分钟执行一次,会在设置后的5分钟才有记录显示)
  2. WinSCP到root目录下查看是否有日志文件

检验脚本是否有效的方法(可跳过此步骤):

  1. 计划任务命令设置为/1 * sh /root/my_pppoe.sh restart1
  2. 手动关闭WAN的连接,看脚本是否重连
  3. 完成后改回需要的命令即可

脚本文件名为my_pppoe.sh,已放在onedrive中

二,docter下的甜糖作者更新了项目,解决甜糖用久会占用大量CPU及内存,是否与我的软路由突然断网有关?未知。重新刷甜糖

项目地址:https://github.com/ericwang2006/docker_ttnode

使用的教程是:http://zxbblog.com/?id=429

先在软路由挂载点中,挂上U盘,我是直接的msata分配的盘

请输入图片描述

选择你的盘,

请输入图片描述

挂载点记得选择自定义,输入/mnt/ssd1

请输入图片描述

挂载后重启软路由,因为我安装的高大全版本,带有TTYD终端,我直接在终端中输入如下代码,如果没有的。就要使用putty等,连上软路由去操作

按顺序执行以下命令:(下载慢的,请挂上梯子来下载)

下面下载的是官网提供的docker容器

docker run -v /mnt/ssd1:/mnts -d --name ttnode --net=host -i -t --privileged=true --restart=always tiptime/ttnode:latest

下面是原作者提供的容器位置,区别就在最后always后的地址

docker run -v /mnt/ssd1:/mnts -d --name ttnode --net=host -i -t --privileged=true --restart=always 744287383/linux_ttnode:latest (将整条命令复制进去)

/mnt/ssd1为硬盘的挂载路径,:/mnts这个冒号和路径的不能改动,ttnode为容器的名字。

(这一步容易出现的错误有两点,第一点是:提示无法连接链接 检查docker是否运行,

第一点解决方法:出现这个问题大多数是因为你的openwrt是U盘启动的,没有把openwrt写入emmc中。还有一种可能是你的docker没启动,大多数是前者的问题

第二点是:提示docker的存储空间不足,

第二点解决方法:导致这个问题出现的原因是你走了docker初始化的那个教程。大多数固件自带的docker已经是在运行的了,不需要再初始化。重新刷一次固件直接走本教程就好)

出现报错了,要把错误信息复制到百度翻译,这样你就知道报错是什么原因了。

生成二维码命令:

docker logs ttnode

命令中ttnode是指容器名,改成你自己的容器名,如果是上面的代码,容器名已经是ttnode,不需要更改。执行改命令可以获取绑定甜糖的二维码和甜糖服务的端口号,甜糖app扫码即可绑定设备

执行完之后就是下面这样子,不太一样也没关系,只要不报错就好:

请输入图片描述

执行到这里,你的甜糖服务端就算是挂起来了,需要等待5分钟后才能绑定设备。

甜糖自动收获代码

地址:https://www.right.com.cn/forum/thread-4087719-1-1.html?mobile=2

1. docker run  -itd -v /root/ttnode:/root/ttnode --net=host  --name ttnodeclient  --privileged=true --restart=always registry.cn-hangzhou.aliyuncs.com/744287383/autottnodeclient
2. #创建容器
docker exec -it ttnodeclient  python3 /root/ttnode/TTnodeLogin.py
#登录甜糖客户端并配置推送消息渠道

请输入图片描述

docker exec -it ttnodeclient python3 /root/ttnode/AutoTTnodeClient.py
#手动执行采集心愿,看看有没有消息推送。
docker exec -it ttnodeclient crontab -e
#自定义执行采集心愿程序的时间,需要懂cron规则(非必须步骤,可以不执行这一步,默认6点30会自动执行采集心愿)

效果大概如下:

甜糖提示auth失效通知的处理法

请输入图片描述

请输入图片描述

以上方法是按照作者安装的方法使用的教程,但我执行不了,用下面的两条命令来执行

docker exec -it ttnodeclient  python3 /root/ttnode/TTnodeLogin.py
#登录甜糖客户端并配置推送消息渠道
#执行上面的命令,重新登陆pushplus来推送,用winscp登陆找不到TTnodeLogin.py这个文件,奇怪
docker exec -it ttnodeclient python3 /root/ttnode/AutoTTnodeClient.py
#手动执行采集心愿,看看有没有消息推送。

自动更新容器同步最新甜糖镜像(可选项)

安装containrrr/watchtower可以自动更新容器,它也是一个容器,但这个容器可以监视你安装的所有容器的原始镜像的更新情况,如有更新,它将使用你原来的配置自动重新部署容器。部署containrrr/watchtower最简单的方式如下:

docker run -d --name watchtower --restart=unless-stopped --network=host -e TZ=Asia/Shanghai -v/var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --interval 3600 (复制整条代码)

你也可以访问 https://containrrr.dev/watchtower/ 这个网址来获取更详细的部署说明,包括如何避开某些容器不让它自动更新,如何发更新容器后发送通知,设置检测时间等等。

三,openwrt全硬盘教程的补充,主要是多分一个区出来给甜糖用

首先需要有一个带有PE的启动U盘,然后将一下文件放入U盘中:

  • DiskGenius V5.3.0 PE 新版也行
  • physdiskwrite V0.5.3 固件写入软件
  • openwrt-x86-64-generic-squashfs-combined.img 软路由固件,找自己喜欢的

电脑插入U盘,选择从U盘启动,进入PE系统,打开我的电脑,查看上面软件放入的是哪个盘,打开cmd,输入软件所在盘后回车。回车后,可以输入dir,查看该盘下的所有文件。

请输入图片描述

请输入图片描述

输入以下代码,其中,open开头,是你openwrt固件的名字,可以改个容易记,容易输入的。

请输入图片描述

回车后,会显示几个盘,把几个盘记住,我是拍个照,关掉cmd,插入软路由上的硬盘,我是128G的msata固态盘,买了转USB接口的,直接插到电脑USB上。重新打开cmd,输入软件所在盘,输入以上代码,就是重复上面的动作,会发现,多出来一个盘符。这个就是需要刷写的盘。血的教训,当时直接跟着作者教程,选择了0,结果把电脑系统盘格式化了,后面几天才安装完系统。

以下图片是借用,只要选择对盘,步骤差不多。

请输入图片描述

选择需要安装的盘符数字

请输入图片描述

输入Y 确认

请输入图片描述

显示如上,说明已经刷写成功,关闭CMD,打开DiskGenius,选择刚才刷写后的盘,会显示三个盘符,最前面两个就是openwrt系统需要的分区,剩下很大空间未格式化,我为了给甜糖分配一个缓存区,所以我选择新建分区,新建了一个主磁盘系统,格式ntfs,容量为80G,剩下20来G,再按以下操作,分配给openwrt

请输入图片描述

请输入图片描述

请输入图片描述

格式完之后 ,就可以拔下硬盘,插入到软路由中,启动软路由,可以正常使用了。

四,京东云显示nat3,软路由开启upnp无效

openwrt中,防火墙增加一个端口转发,端口为30745,京东云重新检测,格式变为nat1。

五,openwrt路由器拔号设置访问光猫后台

我的光猫IP是192.168.1.1

我的拔号软路由 IP是192.168.5.1

首先,记下WAN口的接口名称,我是选择网络-接口-添加新接口,可以看到wan的口对应的是eth1,

请输入图片描述

然后在“网络-防火墙-自定义规则中添加如下代码

ifconfig eth1 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255
iptables -l forwarding_rule -d 192.168.1.1 -j ACCEPT
iptables -t nat -l postrouting_rule -d 192.168.1.1 -j MASQUERADE

重启防火墙,通过192.168.1.1就可以访问光猫后台了。

最后修改:2022 年 01 月 24 日
如果觉得我的文章对你有用,请随意赞赏