• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

利用netconsole将linux的内核printk消息发送到远程主机的udp端口

发布: 2007-7-04 12:06 | 作者: admin | 来源:  网友评论 | 查看: 22次 | 进入软件测试论坛讨论

领测软件测试网 netconsole真是好东东!通过它可以将kernel的printk消息通过udp发送到远程主机的syslogd。

linux 内核里的 netconsole 可以将内核的 printk 消息通过 udp 发送到远程主机上,而且还可以将
这样的消息发送到远程主机的syslogd里。

netconsole的用法:
如果 netconsole 被编译成模块,可以用下面的命令启用 netconsole

=============================================================================
2.4内核语法:
modprobe netconsole [dev=srcdev] [source_port=srcport] [target_port=dstport] target_ip=<hex mode of dst ip addr> [\
     target_eth_byte0=<dst mac addr hex byte 0> \
     target_eth_byte1=<dst mac addr hex byte 1> \
     target_eth_byte2=<dst mac addr hex byte 2> \
     target_eth_byte3=<dst mac addr hex byte 3> \
     target_eth_byte4=<dst mac addr hex byte 4> \
     target_eth_byte5=<dst mac addr hex byte 5> ]

srcdev: 网络接口
srcport: udp 源端口 (缺省为6665)

dstport: udp 目标端口 (缺省为6666)
hex mode of dst ip addr: 十六进制表示的目标 ip 地址
dst mac addr hex byte [0-6]:  十六进制表示的目标 mac 地址的第一到六位

#modprobe netconsole dev=eth0 target_port=514 target_ip=0xc0a86b01 \
      target_eth_byte0=0x00 \
      target_eth_byte1=0x0D \
      target_eth_byte3=0x60 \
      target_eth_byte4=0x2C \
      target_eth_byte0=0x05 \
      target_eth_byte0=0xB2
上面这条命令会将本机的 kernel printk msg 发送到主机 192.168.107.1 的 udp 端口 514 (syslogd 缺省监听的端口),
发送给 mac 地址为00:0D:60:2C:05:B2的接口。

=============================================================================
2.6内核语法:
modprobe netconsole netconsole=[srcport]@[srcip]/[srcdev],[dstport]@dstip/[dstmac]
srcport: udp 源端口 (缺省为6665)
srcip: 源ip地址 (缺省为接口地址)
srcdev: 网络接口

dstport: udp 目标端口 (缺省为6666)
dstip: 目标ip地址
dstmac: 目标主机接口的 MAC 地址

#modprobe netconsole netconsole=@/,514@192.168.107.1/00:0D:60:2C:05:B2
上面这条命令会将本机的 kernel printk msg 发送到主机 192.168.107.1 的 udp 端口 514 (syslogd 缺省监听的端口),
发送给 mac 地址为00:0D:60:2C:05:B2的接口。


如果那台主机的 syslogd 配置成为接收远程的 syslog 消息,来自 netconsole 的消息就可以记录在那台主机的系统日志里。

在没有syslogd在运行的主机上可以用命令接收来自远程主机的消息:
# netcat -u -l -p

参见:
1. /usr/src/linux/Documentation/networking/netconsole.txt
2. man 8 syslogd
3. man 1 netcat


文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网