OpenWRT路由器中监控网络服务并重启的脚本

2023-11-13

转载地址:http://jamesqi.com/%E5%8D%9A%E5%AE%A2/OpenWRT%E8%B7%AF%E7%94%B1%E5%99%A8%E4%B8%AD%E7%9B%91%E6%8E%A7%E7%BD%91%E7%BB%9C%E6%9C%8D%E5%8A%A1%E5%B9%B6%E9%87%8D%E5%90%AF%E7%9A%84%E8%84%9A%E6%9C%AC

 

前一阵子写了一篇《俺在德国上网的十八般武艺》和一篇《修改OpenWRT的设置接入802.1X认证的网络》,这个CF-E218N远程Wifi放大器确实帮了我的大忙,可以足不出户就连接上百米以外的WLan。

  不过从第一天开始就发现有路由器偶然中断的情况,也就是电脑或者移动终端突然会断网找不到Wifi热点,这时跑过去看路由器,会发现背后几个LED灯在不停闪烁,而正常情况下是显示远程无线信号强弱的。故障间隔时间上不固定,有时十几个小时会断一次,有时几个小时,或者几天,好像是与使用频繁程度有关,网络越繁忙就越容易出故障。偶尔也出现过出问题后路由器自己恢复的情况,但多数情况下都无法自己恢复,只好人工去把电源关闭、再接通,让路由器重启,这样几分钟后可以恢复。

  但这样也比较麻烦,想到能否有机制自动检测故障然后自动排除故障恢复访问呢?在网上找了一些资料,看到还是有人在Linux平台下编写脚本来做这个事情的,各种平台、各种路由器、各种监控手段和脚本都有,我这里结合自己的情况记录一下:

  在/root下编写一个my_watchdog.sh脚本:

#!/bin/sh
#sleep 100
DATE=`date +%Y-%m-%d-%H:%M:%S`
tries=0
echo --- my_watchdog start ---
while [[ $tries -lt 5 ]]
do
        if /bin/ping -c 1 8.8.8.8 >/dev/null
        then
                echo --- exit ---
#               echo $DATE OK >>my_watchdog.log
                exit 0
        fi
        tries=$((tries+1))
        sleep 10
#       echo $DATE tries: $tries >>my_watchdog.log
done

echo $DATE network restart >>my_watchdog.log
/etc/init.d/network restart

#echo $DATE reboot >>my_watchdog.log
#reboot

  然后用crontab -e来在系统的crontab中添加一句,每隔5分钟定时运行这个脚本:

*/5 * * * * sh /root/my_watchdog.sh

0 0,4,8,12,16,20 * * * date -u  +"%Y.%m.%d-%H:%M:%S" >/usr/data/time_backup
0,1,11,21,31,41,51 * * * * /usr/bin/set_kernel_timezone >/dev/null 2>&1
0 0,4,8,12,16,20 * * * /tmp/bw_backup/do_bw_backup.sh

  几个注意的地方:

  • 这个脚本是通过PING Google的DNS服务器8.8.8.8来判断网络是否连通的
  • 连续5次不能PING通,中间间隔10秒,就判断为网络故障
  • 我先考虑的处理办法是重启路由器,后来尝试用网络服务重启就可以恢复
  • 增加了一个my_watchdog.log的日志文件,记录故障、重启的时间、次数
  • 路由器的固态硬盘容量非常小,只有2M多,日志文件都不能大了,所以注释掉了一些不是很必要的运行记录
  • 脚本运行时间间隔不宜太短,否则在没有WLan网络连接的情况下会不断重启网络服务,都无法登陆进去修改设置了,现在设定的5分钟对于登录修改、停止脚本运行还是够了

  这个脚本运行了24小时,自动发现两次故障、自动重启网络服务两次,都正常恢复了,比人工来处理还是方便一些。不过如果能查到具体故障原因、彻底消除隐患才好,但那是高手才能做到的事情,我这种水平也就可以先做点临时修补、治标不治本的工作吧。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenWRT路由器中监控网络服务并重启的脚本 的相关文章

  • ubuntu18.04编译Openwrt出现的问题解决

    ubuntu18 04编译Openwrt出现的问题解决 问题1 Build dependency Please install Git git core gt 1 6 5 问题2 gdate c 2497 7 error format no
  • Buildroot用户指南

    第一章 关于Buildroot Buildroot是一个包含Makefile和修补程序 patch 的集合 这个集合可以使你很容易的为你的目标构建交叉工具链 cross compilationtoolchain 根文件系统 root fil
  • openwrt squashfs固件解包打包与签名方法

    我们有时没有时间重新编译整个固件 但是却又想修改其中的某个功能 这时就涉及到了固件的解包与打包 下面提供一个简单的解包打包脚本 openwrt固件修改 squashfs jffs2格式固件 bin sh sudo echo Starting
  • 在K2P路由器,非官方openwrt固件,安装软件遇到的坑!

    手上有一台斐讯K2P A2版本的路由器 一直空闲在宿舍 最近发现这个路由器被破解了 可以刷上不死breed 还有很多大神做的固件 因此我想用它刷上openwrt系统后 安装某软件 从而直接在路由器上完成学校的宽带验证登陆 接下来我就介绍我在
  • openwrt luci使用本地软件源更新软件包,更新package.sig签名

    官方的源在国外 一般访问速度比较慢 本地源可以快速解决这个问题 有时自己编译的软件升级发布版本使用本地源 能够更好的维护与安装 为了保证兼容性 尽量使用同一个源提供的SDK打包的源软件 把编译出来的ipk文件上传到本地服务器 在索引中添加新
  • 取消GL.iNet路由器视频的密码

    每次路由器访问192 168 8 1 8083 action stream时总是无法访问 但是先进入192 168 8 1登录以后再去刷新视频就可以出来 即使取消外网登录验证也还是没效果 最后发现广大网友的意见是重新刷固件 先去GL iNe
  • openwrt之initramfs-kernel

    在下载openwrt系统时 经常能看到initramfs kernel bin squashfs factory bin squashfs sysupgrade bin等结尾的文件 factory适用于从原厂系统刷到openwrt sysu
  • OpenWRT路由器中监控网络服务并重启的脚本

    转载地址 http jamesqi com E5 8D 9A E5 AE A2 OpenWRT E8 B7 AF E7 94 B1 E5 99 A8 E4 B8 AD E7 9B 91 E6 8E A7 E7 BD 91 E7 BB 9C
  • openwrt--内核编译及生成

    重要文件 在下面的目录中包含了编译过程中调用的makefile 很重要的 root localhost openwrt openwrt trunk include ls autotools mk device table txt bak k
  • 从零开始学习OpenWrt完美教程

    Cisco Linksys在2003年发布了WRT54G这款无线路由器 同年有人发现它的OS是基于Linux的 然而Linux是基于GPL许可证发布的 按照该许可证Cisco应该把WRT54G 的OS的源代码公开 2003年3月 Cisco
  • 基于openwrt平台搭建局域网技术验证之二

    1 测试目的 验证l2tp服务器模式的可行性 提供vpn l2tp模式的服务器功能 供客户端连接访问内网 2 参考资料 参考连接1 https www jianshu com p ccf8f2cca70e 参考连接2 https openw
  • OpenWrt系统无法进入Luci解决办法之一

    当在OpenWrt系统重启后 打开Luci后台时有时可能会遇到以下错误报告 usr lib lua luci dispatcher lua 577 bad argument 1 to pairs table expected got nil
  • 编写 LuCI CBI 模型

    编写 LuCI CBI 模型 CBI模型是描述UCI配置文件结构的Lua文件 并且CBI解析器将lua文件转为HTML呈现给用户 所有 CBI 模型文件都必须返回类型为luci cbi Map的对象 CBI 模型文件的范围由 luci cb
  • Openwrt按键检测分析-窥探Linux内核与用户空间通讯机制netlink使用

    首先看一下Openwrt系统中关于按键功能的使用和修改 以18 06版本为例 按键功能实现在脚本中 比如18 06 package base files files etc rc button reset bin sh lib functi
  • 从零开始编译OpenWrt固件

    从零开始编译OpenWrt固件 前言 进来阅读这篇文章的相信都是对OpenWrt有一定的了解的 对于OpenWrt的介绍这里就不再赘述 可以自行查找相关百科了解 OpenWrt是适合于嵌入式设备的一个Linux发行版 可以通过其提供的相关工
  • 【LEDE】树莓派上玩LEDE终极指南-75-获取CPU温度

    先来说说获取CPU温度的方法 1 通过hwmon获取 2 通过thermal获取 而树莓派就比较蛋疼了 没有额外的传感器 所以sensor detect这些东西完全不起作用 唯独CPU封装内的VideoCore具有温度传感功能 而想要与Vi
  • openwrt利用arp获取局域网设备IP

    openwrt利用arp获取局域网设备IP 文章目录 openwrt利用arp获取局域网设备IP 1 前言 2 ARP概念 3 arp局域网搜索设备实现思路和代码 1 前言 目前我们通过arp协议搜索局域网设备 根据局域网设备地址判断子设备
  • make menuconfig报错:Build dependency: Please install Git (git-core) >= 1.6.5

    版本号为chaos calmer 15 05 1 注意 在执行make menuconfig的时候 会报一个错误 如下 Build dependency Please install Git git core gt 1 6 5 这是open
  • 获取openwrt wan口ip方法

    2020年7月30日14点39分 更新 之前写的方法 获取的是wan口的ip和网关 使用过程发现 以有线上网模式为例 获取wan口网关时 若网关中出现连续的1 1 会获取失败 表明该正则表达式是有问题的 即下面这个grep oE 之后的内容
  • jshn - 如何解析 json 包

    我想知道如何在openwrt上轻松解析json 我有 jhsn 来解析 json 这是我的程序 sh 脚本 download weather wget api openweathermap org data 2 5 weather id 2

随机推荐

  • matlab读取文件各种方法

    本技术支持指南主要处理 ascii binary and mat files 要得到matlab中可用来读写各种文件格式的完全函数列表 可以键入以下命令 help iofun matlab中有两种文件i o程序 high level and
  • js6语法总结

    Vuex Action的 commit
  • Linux定时任务crontab

    格式要求如下 For details see man 4 crontabs Example of job definition minute 0 59 hour 0 23 day of month 1 31 month 1 12 OR ja
  • IOS 图片转换二进制 二进制转换为图片

    类方法 图片 转换为二进制 NSData Image TransForm Data UIImage image NSData imageData UIImageJPEGRepresentation image 0 5 几乎是按0 5图片大小
  • axure到底好不好学,有哪些技巧

    Axure学习难吗 这个问题一直引起很多朋友的讨论 有的觉得难 有的觉得不难 当然 人不一样 每个人的学习方式也不一样 对学习难度的理解自然也不一样 这个问题自然没有定论 在学习的时候 有很多方法可以帮助我们 有不同的意见 我们需要尽可能多
  • 一份完整的问卷模板_Word制作问卷调查模板表「教你复选框打钩」

    作者易雪龙转自 Word联盟 问卷调查相信大家都有用过吧 就是一些问题 然后下面有几个选项给我们选择 类似这种问卷调查模板 其实用Word也是可以制作出来的 今天 易老师就来教一下大家利用Word来制作一份电子版的调查问卷 效果演示 Wor
  • 模型/视图编程

    模型 视图编程 模型 视图编程 模型 视图 委托 模型 视图编程 Qt中的模型 视图架构用来实现大量的数据存储 处理及显示 MVC Model View Controller 包括了3个组件 模型 Model 是应用对象 用来表示数据 视图
  • Lotus Domino Notes表单,页面,视图,文档,域之间的关系

    1 表单 Form 关系型数据库里的 表设计 关系型数据库中通过表设计来定义这张Table上会有哪些字段 字段的类型以及长度等 然后通过Table来创建符合这个Table定义的记录 Record 通常情况下 Lotus通过表单 Form 来
  • Micropython史上最友好的编辑器,小巧精悍

    Python 因为非常好学 易上手故而广受大众的喜欢 micropython 也因此在物联网单片机领域拥有一席之位 并且 python 有着良好的生态环境 功能亦更加丰富 from machine import Pin p0 Pin 0 P
  • 购物商城---SpringMVC拦截器的使用

    springmvc front xml
  • spring data jpa

    Spring Data是什么 Spring Data是一个用于简化数据库访问 并支持云服务的开源框架 其主要目标是使得对数据的访问变得方便快捷 并支持map reduce框架和云计算数据服务 Spring Data 包含多个子项目 Comm
  • 深度学习中矩阵求导公式整理

    深度学习中矩阵求导公式整理 1 两种布局约定方式 2 矩阵求导的类型 3 标量对标量求导 4 向量对标量求导 5 矩阵对标量求导 6 标量对向量求导 7 向量对向量求导 8 标量对矩阵求导 参考文献 1 两种布局约定方式 布局 Layout
  • 机试算法题-敲击计数器

    题目 设计一个敲击计数器 使它可以统计在过去 5 分钟内被敲击次数 即过去 300 秒 您的系统应该接受一个时间戳参数 timestamp 单位为 秒 并且您可以假定对系统的调用是按时间顺序进行的 即 timestamp 是单调递增的 几次
  • CVPR 2022

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 转载自 集智书童 On the Integration of Self Attention and Convolution 论文 https arxiv org abs
  • 回溯算法-----473. 火柴拼正方形&&698. 划分为k个相等的子集

    分享两个回溯算法解决的算法题 和自己以往做这类题目的思路不同 导致这里卡了很久 不得不花几个小时总结一下 火柴拼正方形 首先展示一下自己一开始的回溯算法的解决方式 其实这个也是自己进行了优化之后的 没有优化之前是超时的 public boo
  • 如何导出存储过程、函数、包和触发器的定义语句?如何导出表和索引的创建语句?...

    Oracle中如何导出存储过程 函数 包和触发器的定义语句 如何导出表的结构 如何导出索引的创建语句 QQ群里有人问 如何导出一个用户下的存储过程 麦苗答 方法有多种 可以使用DBMS METADATA GET DDL包 使用PL SQL
  • Java实现质数筛的三种方法

    今天在做一个算法题的时候遇到一个需要求质数的情况 但是本人比较菜只会暴力做法 所以在此记录学习一下质数筛选除了暴力以外的其它做法 注意 一个大于1的自然数 除了1和它自身外 不能被其他自然数整除的数叫做质数 题目 暴力做法 直接根据定义写一
  • docker stats 命令详解

    docker stats 显示容器资源的使用情况 包括 CPU 内存 网络 I O 等 docker stats OPTIONS CONTAINER OPTIONS 说明 all a 显示所有的容器 包括未运行的 format 指定返回值的
  • [NKCTF2023]web/misc/blockchain-wp

    总体体验还是不错的 感谢我的二进制队友带我 WEB babyphp Pop链 链子 destruct gt toString gt invoke 最后要绕一个正则匹配 通过dir命令发现flag在 f1ag中 利用剩下没被过滤的通配符进行匹
  • OpenWRT路由器中监控网络服务并重启的脚本

    转载地址 http jamesqi com E5 8D 9A E5 AE A2 OpenWRT E8 B7 AF E7 94 B1 E5 99 A8 E4 B8 AD E7 9B 91 E6 8E A7 E7 BD 91 E7 BB 9C