TCL我想读取fail2ban新日志并将它们打印到某个频道

时间:2013-03-06 15:01:02

标签: tcl eggdrop

当filesize或行数更改时,我想从fail2ban日志中读取所有新行。 我想只将fail2ban日志中的新行打印到指定的通道。

我试试:

bind time - * checklogs
set kanal "#logzzz"
set logf2b "/var/log/fail2ban.log"

proc linecount {file} {
        set i 0
        set fid [open $file r]
        while {[gets $fid line] > -1} {incr i}
        close $fid
        return $i
}

set oldlines [linecount $logf2b]
set filesize [file size $logf2b]

proc checklogs {min hour day mon year} {
    global kanal oldlines logf2b filesize
    if {[file size $logf2b] != $filesize} {
        set newfile [open $logf2b "r"]
        while {1} {
            set line [gets $newfile $oldlines]
            if {[eof $newfile]} {
                close $newfile
                break
            }
            putserv "PRIVMSG $kanal :Fail2Ban $line"
        }
    } else { putserv "PRIVMSG $kanal :No new fail2ban logs!" }
}

但不起作用:/

任何解决方案或解释如何制作?

0 个答案:

没有答案