| 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
|