一,软路由无故断线,找到自动检测脚本
地址: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地址判断网络互连状态
具体相关逻辑:
- ping地址1正常,网络正常,不执行任何操作
- ping地址1异常,ping地址2正常,网络正常,不执行任何操作
- ping地址1异常,ping地址2异常,网络异常,准备再次验证
- 每隔10秒执行一次上述流程,连续循环3次后还是异常状态就执行相关操作
- 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分钟(设置太短可能无法进入路由器后台)
判断脚本是否执行成功的方法:
- 查看系统日志有无类似记录,cmd sh /root/my_pppoe.sh restart1(如果设置的是5分钟执行一次,会在设置后的5分钟才有记录显示)
- WinSCP到root目录下查看是否有日志文件
检验脚本是否有效的方法(可跳过此步骤):
- 计划任务命令设置为/1 * sh /root/my_pppoe.sh restart1
- 手动关闭WAN的连接,看脚本是否重连
- 完成后改回需要的命令即可
脚本文件名为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就可以访问光猫后台了。