Ruby - 从文件末尾连续读取

时间:2017-03-31 14:41:08

标签: ruby

我制作了一个Ruby程序,它应该读取 Linux 日志文件的末尾,以及在执行脚本期间添加到文件末尾的任何其他信息。然后使用正则表达式匹配特定行,如下所示。

  

Mar 31 13:28:05 dns.ns1.local dnsmasq [82093]:query [A] ns1.localdomain   来自192.168.10.2

程序应该将整行发送给本地用户(可以手动完成),无限期地这样做,同时将相同的过程应用于添加到日志文件中的任何其他信息。这个想法是程序永远不会退出。

我可以使用 ruby​​ name_of_program.rb / var / log / messages 运行我的程序,没有任何错误,提供日志文件的tsystemhe路径作为参数。问题在于程序不能完成任何可以手动执行的任务。

我的Ruby程序:

open(ARGV.first) do |file|
    file.seek(0, IO::SEEK_END)
    loop do
        changes = file.read
        unless changes.empty?
            if changes =~ /query.*ns1.localdomain/
                cmd "echo Q%DNS_QUERY_TO_WWW -> #{file}Q% | /usr/sbin/sendmail berit"
            end
        end
    end
end

对于我所缺少的内容的任何输入都将不胜感激。

1 个答案:

答案 0 :(得分:0)

问题似乎源于系统输出,我通过以下修复解决了这个问题。

{{1}}