#!/usr/bin/env ruby # vim: set et sw=2 ts=2: require 'rubygems' require 'file/tail' require 'state' class Filter include State end filter = Filter.new() filename = ARGV.pop or fail "Usage: #$0 number filename" number = (ARGV.pop || 0).to_i.abs File::Tail::Logfile.open(filename) do |log| log.backward(number).tail { |line| filter.hash.clear filter.action.clear filter.chkurg(line) case filter.hash[:alarm] when 'testurgent' puts filter.hash[:action].to_a[0] puts "urgent: #{line}" when 'reject' puts "reject: #{line}" next else puts "mail: #{line}" end } end