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

发表于:2007-05-26来源:作者:点击数: 标签:
netconsole真是好东东!通过它可以将kernel的printk消息通过udp发送到远程主机的syslogd。 linux 内核里的 netconsole 可以将内核的 printk 消息通过 udp 发送到远程主机上,而且还可以将 这样的消息发送到远程主机的syslogd里。 netconsole的用法: 如果 netc
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


原文转自:http://www.ltesting.net