0

ファイルサイズまたは行数が変更されたときに、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!" }
}

しかし、動作しません:/

解決策や作り方の説明はありますか?

4

0 に答える 0