0

Ruby ベース (1.9.1) の syslog サーバーを一緒にハックしようとしていますが、最初からかなり基本的な問題に直面しています。

これが私の(非常に基本的な)コードです:

#!/usr/bin/env ruby

require 'socket'
require 'io/wait'
require 'syslog'

class Server
    def initialize
        @listener = UDPSocket.new
        @listener.bind("192.168.253.5", "514")
        getdata
    end

    def getdata
        while true
            @text, @sender = @listener.recvfrom(9000)
            p @listener
            p @text
            p @sender
        end
    end
end

x = Server.new

これは、ファシリティまたはメッセージの重大度のいずれも表示しないことを除いて、すべて正常に機能します。

#<UDPSocket:fd 5>
"<189>49: *Mar  1 00:24:37.862: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/8, changed state to down"
["AF_INET", 56970, "192.168.253.10", "192.168.253.10"]

Tcpdump は、この情報を正常に表示します ("local7" ファシリティ、"notice" 重大度):

15:18:01.987542 IP 192.168.253.10.56970 > 192.168.253.5.514: SYSLOG local7.notice, length: 115

送信された UDP パケットを調べて、syslog メッセージのファシリティと重大度の両方を収集するにはどうすればよいですか?

4

1 に答える 1