- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的背景主要是使用 C 和 C++ 进行 Windows 编程。最近我也有机会使用一些嵌入式 Linux 系统,但我对此还是个新手。
现在我正在为 Openwrt 开发一个实用程序,它需要对正常操作期间发生的网络和系统事件使用react。
我已经能够在某些事件中使用 Hotplug,但其他事件仍然让我望而却步。我可以使用 logread 解析系统日志的输出,但这看起来很原始而且很老套。
特别是,我希望获得类似于热插拔对某些“kern.info kernel”和“daemon.info”事件所做的回调。例如:
Mar 31 19:42:32 OpenWrt kern.info kernel: [ 369.540000] device wlan0 left promiscuous mode
Mar 31 19:42:32 OpenWrt kern.info kernel: [ 369.540000] br-lan: port 2(wlan0) entered disabled state
Mar 31 19:42:32 OpenWrt kern.info kernel: [ 369.730000] device wlan1 left promiscuous mode
Mar 31 19:42:32 OpenWrt kern.info kernel: [ 369.730000] br-lan: port 3(wlan1) entered disabled state
Mar 31 19:42:34 OpenWrt kern.info kernel: [ 371.360000] device wlan0 entered promiscuous mode
Mar 31 19:45:56 OpenWrt daemon.info hostapd: wlan0: STA 04:f7:e4:00:00:00 IEEE 802.11: authenticated
Mar 31 19:45:56 OpenWrt daemon.info hostapd: wlan0: STA 04:f7:e4:00:00:00 IEEE 802.11: associated (aid 1)
Mar 31 19:45:56 OpenWrt daemon.info hostapd: wlan0: STA 04:f7:e4:00:00:00 WPA: pairwise key handshake completed (WPA)
Mar 31 19:45:56 OpenWrt daemon.info hostapd: wlan0: STA 04:f7:e4:00:00:00 WPA: group key handshake completed (WPA)
Mar 31 19:45:56 OpenWrt daemon.info dnsmasq-dhcp[5005]: DHCPREQUEST(br-lan) 10.1.1.51 04:f7:e4:00:00:00
Mar 31 19:45:56 OpenWrt daemon.info dnsmasq-dhcp[5005]: DHCPNAK(br-lan) 10.1.1.51 04:f7:e4:00:00:00 wrong network
Mar 31 19:46:00 OpenWrt daemon.info dnsmasq-dhcp[5005]: DHCPDISCOVER(br-lan) 04:f7:e4:00:00:00
Mar 31 19:46:00 OpenWrt daemon.info dnsmasq-dhcp[5005]: DHCPOFFER(br-lan) 192.168.1.198 04:f7:e4:1c:09:00
Mar 31 19:46:00 OpenWrt daemon.info dnsmasq-dhcp[5005]: DHCPDISCOVER(br-lan) 04:f7:e4:1c:09:00
Mar 31 19:46:00 OpenWrt daemon.info dnsmasq-dhcp[5005]: DHCPOFFER(br-lan) 192.168.1.198 04:f7:e4:1c:09:00
Mar 31 19:46:01 OpenWrt daemon.info dnsmasq-dhcp[5005]: DHCPREQUEST(br-lan) 192.168.1.198 04:f7:e4:1c:09:00
Mar 31 19:46:01 OpenWrt daemon.info dnsmasq-dhcp[5005]: DHCPACK(br-lan) 192.168.1.198 04:f7:e4:1c:09:00 My-iPhone
最佳答案
DHCPOFFER
之类的日志条目(如您的示例所示)是由相应进程(例如,udhcpc
)使用 Unix syslog 单独生成的机制(有点像 Windows 事件日志记录 API)
默认情况下,OpenWRT 日志记录由 busybox
包提供的 syslogd
进程处理。这是相当原始的,只是将消息发送到您使用 logread
看到的循环缓冲区和/或发送到 UDP 套接字。
您可以升级 OpenWRT 上的日志记录以使用 syslog-ng
包。这有一个更高级的配置,您应该能够使用它来将过滤后的日志事件发送到您可以编写的脚本来执行您需要的操作。
opkg install syslog-ng
syslog-ng 是 GPL 产品,但文档现在隐藏在商业网站下,希望您可以通过 http://freecode.com/projects/syslog-ng 从源代码中获取它。 .请注意,OpenWRT 似乎提供了 1.6.12 版本,当我在我的 OpenWRT 设备上实现它时,我很难找到它的文档,但最终我通过 wayback 机器找到了它:https://web.archive.org/web/20070406054439/http://www.balabit.com/products/syslog_ng/reference-1.6/syslog-ng.html/x731.html (例如)
提取这些 DHCP 消息并将它们发送到独立日志文件的配置文件片段看起来有点像:
source src { unix-stream("/dev/log"); internal(); };
destination dhcp_messages { file("/var/log/dhcpmessages"); };
filter f_dhcp { match("dnsmasq-dhcp"); };
log {
source(src);
filter(f_dhcp);
destination(dhcp_messages);
};
您可能会发现 pipe()
或 program()
目标驱动程序对您的应用程序最有用。例如,使用 program()
驱动程序,您可以将选定的消息发送到 shell 脚本,该脚本会解析它们并将它们保存到 sqlite 数据库中。
关于linux - 如何检测 Openwrt kern.info 和 daemon.info 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22771221/
我已经从 subversion 存储库成功克隆了 OpenWRT buildroot,并且我一直在使用它来构建在 Qemu 上运行的镜像。我可以在 Qemu 中运行图像。 现在我尝试为路由器(Link
我在 OpenWRT 下构建了许多自定义软件包,我想将它们添加到自定义源中,这样我就可以让 IoT 设备提取这些自定义软件包的更新。 我浏览了所有 OpenWRT 文档并进行了多次谷歌搜索,但没有找到
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
最近,我在很多设备上配置了 OpenWrt,它是一个很好的无线路由器固件。我阅读了很多关于 OpenWISP 的内容: OpenWISP is a software platform designed
我将在 OpenWRT 镜像中包含 pip3 模块,因此在安装 OpenWRT 镜像后不需要其他依赖项。 例如,我将在 OpenWRT 镜像中包含 argparse 模块。该模块可以通过以下命令在初始
我正在尝试使用 OpenWRT 工具链为 OpenWRT Linux 环境交叉编译 POCO 源包。我已经下载了 POCO 源码包并尝试交叉编译它,但是我得到如下错误日志 src/Error.cpp:
我正在运行 dd-wrt 或 OpenWRT 的 Linksys WRT54G-V4 上运行 Hello World 程序。 现在这个路由器正在运行 dd-wrt,原因我将在下面解释。我想将此路由
我想重启我的设备,它有 Openwrt 操作系统。我希望命令使用 crontab 运行并且只执行一次。 最佳答案 如果您只想运行一次,那么最好通过 ssh openwrt 并进入终端并键入 reboo
最近买了个N1盒子,从源系统刷到OpenWrt,总结一下整体过程,大部分都来源于网络教程和自己实践,如有错误欢迎指出! N1盒子刷机 固件准备 最著名的应该是F大的吧,原贴地址:
我正在寻找在 openwrt 上运行的 tcpdump 二进制文件。该网站仅显示必须构建的源代码。有人指向我包含预构建二进制文件的位置吗?谢谢。 最佳答案 我建议建立一个工作存储库,即: https:
uci文档说: All "uci set", "uci add", "uci rename" and "uci delete" commands are staged into a temporary
如果有人能帮助我解决这个问题,我会非常感激,因为它让我发疯。 当我从头开始编译 OpenWRT 镜像(包括我的包)时,通常一切正常。 否则,当我尝试重新编译时,我不断收到缺少依赖项的错误。 我发现唯一
我正在尝试使用我在其中制作的自定义包来编译 OpenWRT。这是我的包的 OpenWRT Makefile: # # Copyright (C) 2008 OpenWrt.org # # This i
OpenWRT使用opkg来管理包。默认情况下,运行 opkg update 时会下载 Packages 和 Packages.sig 文件,然后根据 Packages 文件验证签名文件 Packag
我正在尝试将软件包安装到我的 OpenWrt SDK 中。为此,您必须通过键入以下内容来使用 OPKG 包管理器: opkg update opkg install 但是,就我而言,未安装 OPKG
我为 OpenWrt 路由器编译了一个简单的 C UDP 服务器和客户端。当代码都在我的电脑上时,代码可以按预期工作。客户端(如果在路由器上)似乎成功发送了数据包(端口 6115),因为如果我将它们发
我正在尝试为 VoCore v1.0 构建内核镜像。我从 github 获取了 sdk 文件。这样做时我遇到了如下错误 /build_root/openwrt/staging_dir/host/bin
我想在 OpenWRT 中执行 GMOCK 和 GTEST 测试。我有 x86_64 机器。我的包裹适用于 x32 设备。我尝试手动复制 header ,但是,当然,它不起作用。在设备内部运行测试很重
我正在为 Arduino Yun 板构建 openWrt,我正在按照 this link 中描述的步骤进行操作,但是我遇到了构建错误:svn: E160013: 无法连接到 URL 'http://o
我是 OpenWrt 的新手,我正在尝试交叉编译一个新内核。为了找到线索,我检查了/source/package/kernel/linux/modules 中一个名为 video.mk 的文件 我可以
我是一名优秀的程序员,十分优秀!