OpenWrt | 以斐讯K2为例,编写脚本使用logread命令实时读取日志,监听OpenWrt网线插拔事件

这篇具有很好参考价值的文章主要介绍了OpenWrt | 以斐讯K2为例,编写脚本使用logread命令实时读取日志,监听OpenWrt网线插拔事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、绪言

OpenWrt是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,适用于较多的路由器设备。

有时候,在使用OpenWrt时,我们需要监听网线的插拔,获取网线插拔的事件,并执行一些操作。OpenWrt官方文档给出使用hotplug去获取相关事件: https://openwrt.org/docs/guide-user/base-system/hotplug
如文档中指出,可在/etc/hotplug.d/iface/文件夹下编写脚本,对$ACTION$INTERFACE$DEVICE进行判断,可监听网络接口的状态。
logread命令,网络,智能路由器,自动化,bash

但是实际上验证,此监听只是对INTERFACE下建立的接口虚拟接口有效,当手动控制接口状态时,如Restart Stop才会执行/etc/hotplug.d/iface/下的脚本文件,而直接插拔网线并不能被监听到。因此此方法并不能直接监听网线插拔事件。
logread命令,网络,智能路由器,自动化,bash

同时,这篇文章(https://www.jianshu.com/p/a1bfc54bc6dd)中提到phy内核检测到WAN口变化后会创建hotplug消息,因此可在/etc/hotplug.d/phy/路径下编写脚本,获取hotplug消息。但是使用斐讯K2的官方OpenWrt,在插拔网线时,并不能执行/etc/hotplug.d/phy/路径下的脚本。

在通过查看日志排查脚本的过程中,发现日志中有内核对网线插拔的事件打印。
logread命令,网络,智能路由器,自动化,bash
打印形式诸如mtk_soc_eth 10100000.ethernet eth0: port x link up/down
port标识端口号,up/down表示插入/移除网线。

因此,本文以此为基础,以斐讯K2为例,将介绍一种通过读取日志的方法,监听OpenWrt网线插拔的事件。

二、相关基础

1. logread命令

OpenWrt提供了logread命令用来读取日志的内容,其帮助文档如下:
logread命令,网络,智能路由器,自动化,bash
logread命令相当强大,官方已给出来详细的指导文档(https://openwrt.org/docs/guide-user/base-system/log.essentials),可以实现将日志保存到内存,文件甚至是通过TCP/IP存储到远程设备中。

我们关注-f参数,此参数可以使终端一直等待日志的到来,并将日志实时地显示在终端中
logread命令,网络,智能路由器,自动化,bash
因此我们可以通过编写脚本,使用logread -f命令实时读取日志,并使用Linux的管道流操作,检测是否为网线插拔的事件,从而做成相应的响应。

2. Linux管道流操作

在Bash中,把前一个的输出连接作为后一个的输入,是谓管道。命令commandA|commandB的执行流程可用流程图进行如下表示

3. 判断变量中是否含有指定字符串

在Bash中可以使用 =~ 符号进行判断字符串是否包含另一个字符串,如"$var1" =~ "$var2"

4. 使用read命令并搭配循环,逐行获取输入流

read是bash提供的从输入流读取单行数据的命令,read后面接一个变量名,可将读取到的数据赋值给该变量,其搭配循环可以实现逐行获取,循环体中可对各行数据进行处理,采用do...while循环体的格式如下

while read var; do
	# statements
done

三、编写脚本

经前文分析,可以编写以下脚本,实现通过读取日志的方法,监听OpenWrt网线插拔的事件。文章来源地址https://www.toymoban.com/news/detail-665242.html

#!/bin/sh

# 编写判断是否为插入/摆出网线的事件的函数
judge() {
	# 使用read进行逐行读取读取输入流, 并赋值给变量log
	while read log; do
		# 此处监听端口4的插入事件(其它端口和事件修改此判断条件)
		if [[ "$log" =~ "eth0: port 4 link up" ]]; then
			# 编写事件的响应
		fi
	done
}

# 使用 readlog -f 实时读取日志, 并使用管道传递给judge函数, 进行判断并做出响应
logread -f | judge

到了这里,关于OpenWrt | 以斐讯K2为例,编写脚本使用logread命令实时读取日志,监听OpenWrt网线插拔事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nmap脚本编写和使用

    预计更新 第一章 nmap漏洞扫描 nmap漏洞扫描的基本原理和技术 nmap漏洞扫描的常用选项和参数 nmap漏洞扫描的实战案例 第二章 nmap网络探测和映射 nmap网络探测和映射的基本原理和技术 nmap网络探测和映射的常用选项和参数 nmap网络探测和映射的实战案例 第三章 nmap安全审计 nm

    2024年02月12日
    浏览(28)
  • 使用Python编写自动传输脚本详解

    写一个Python脚本来自动传输文件到FTP服务器是一个非常有用的任务,特别是在需要定期备份文件或与其他人共享文件时。本文将介绍如何编写一个Python脚本来实现FTP文件自动传输,并提供详细的内容和丰富的示例代码,以帮助您了解这个过程。 在开始之前,需要安装Python并了

    2024年02月03日
    浏览(32)
  • 自动化用例编写思路 (使用pytest编写一个测试脚本)

    目录 一,明确测试对象 二,编写测试用例 构造请求数据 封装测试代码 断言设置 三,执行脚本获取测试结果 四,总结 经过之前的学习铺垫,我们尝试着利用pytest框架编写一条接口自动化测试用例,来厘清接口自动化用例编写的思路。 我们在百度搜索天气查询,会出现如下

    2024年02月16日
    浏览(45)
  • 运维——编写脚本,使用mysqldump实现分库分表备份。

     编写脚本,使用mysqldump实现分库分表备份。 需要将 和 替换为您的 MySQL 用户名和密码,并将 替换为您希望保存备份文件的路径。 your_username your_password \\\"/path/to/backup\\\" 此脚本将遍历所有数据库和表,并使用 mysqldump 工具将每个表的数据导出到单独的备份文件中。备份文件的命

    2024年02月15日
    浏览(43)
  • postman使用教程-设置断言(tests脚本编写)

    一个完整的接口测试,包括:请求获取响应正文断言。所谓断言,就是结果和预期对比,如果一致,则用例通过,如果不一致,断言失败,用例执行失败。 当一个接口发送请求有返回结果后,如何知道返回的结果符合预期?可以在 postman 里面的 Tests 写脚本断言符合结果符合预

    2024年02月01日
    浏览(27)
  • 使用Python编写游戏辅助脚本——Pygame详细教程

    Python是一种简单且强大的编程语言,在游戏开发中,它可以用来创建游戏辅助脚本。Pygame是Python编程语言的一个库,它提供了一组用于开发游戏的功能和工具。本教程将介绍如何使用Pygame库来编写一个简单的游戏辅助脚本。 在开始编写游戏辅助脚本之前,我们需要先安装Py

    2024年02月04日
    浏览(35)
  • 【测试技术-性能测试-实战1】使用Loadrunner自带的系统学习脚本编写和脚本增强。

    Hp software-start hp web tours server Hp software-hp web tours application 打开Virtual User Generator 创建脚本,协议选择Web - HTTP/HTML,输入脚本名,选择好脚本存放路径,点击create即可创建好一个空白脚本。 设置录制选项,点击record按钮,设置完基本信息后,点击右下角的Recording Options,设置录

    2024年02月02日
    浏览(32)
  • Openwrt读取spi-nand协议Flash芯片UniqueID(华邦为例)

    Flash芯片一般都有一个出厂时由制造商设定的Unique ID,唯一ID。获取到可以用来进行各类加密识别认证,作为设备唯一ID的一种。 本文以华邦品牌的flash芯片为例(W25N01GV、W25M02GV),如何在Linux下读取该ID。 一般Unique ID信息都存放在otp区域里,otp区域是芯片上一块特殊的区域,

    2024年02月10日
    浏览(46)
  • OpenWrt网络打印机TCP/IP共享设置教程——以703N为例(PCL)

    在本教程中,我们将探讨如何在OpenWrt路由器上设置TCP/IP共享以实现打印机的网络共享。我们以OpenWrt路由器型号703N为例,并使用PCL作为打印机的语言。 步骤1:准备工作 首先,确保你已经在OpenWrt路由器上安装了最新版本的OpenWrt固件,并且已经连接到你的网络。另外,确保你

    2024年02月08日
    浏览(57)
  • Unity3D使用C#脚本修改TextMeshPro的内容(以显示系统时间为例)

    在网上找了很多都没有涉及到这个TextMeshPro内容修改,踩了很多坑,记录一下 特别是using TMPro; public TextMeshProUGUI Text; GetComponent();

    2024年02月11日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包