2011-04-24 64 views
-1

我正在寻找一个ruby脚本,它将使用类似last的东西来计算每个用户的登录频率,并将其输出到csv文件,以便我可以制作带有最频繁登录的条形图。Ruby CSV登录计数器脚本

我希望它保存CSV输出是这样的:

user2,19 
user6,20 
user3,18 

通常最后看起来像这样:

user3  :1001  192.1.20.17 Sun Nov 30 15:01 still logged in 
user8 :1000  192.1.20.15 Sun Nov 30 10:00 - 11:52 (01:52)  
user2  tty7   :0    Tue Nov 25 19:43 - 21:09 (01:25)  
user0 tty7   :0    Tue Nov 25 16:46 - 18:06 (01:19) 

有一些已经这样做了,或者我该怎么办呢?

+1

你到目前为止试过了什么?对于csv部分,请在https://rubygems.org/上搜索“csv”。你会得到一堆结果。 – sawa 2011-04-24 21:06:56

回答

1

也许是这样的:

file = `last` 
hash = {} 
file.each_line { |x| hash[x.split("  ")[0].split(" ")[0]] = 0 unless hash[x.split("  ")[0].split(" ")[0]]; hash[x.split("  ")[0].split(" ")[0]] += 1 } 
output = "" 
hash.each_pair { |key, value| output += "#{key},#{value}\n" } 
File.open('last.csv', 'w') {|f| f.write(output) } 

你应该分裂检查的“内容”是正确的。 你也应该检查你最后一个命令的确切输出 - 在写入文件之前,你可能需要把一些垃圾拿出来;)