Ruby CSV登录计数器脚本
我正在寻找一个ruby脚本,它将使用类似于Ruby CSV登录计数器脚本,ruby,csv,rubygems,Ruby,Csv,Rubygems,我正在寻找一个ruby脚本,它将使用类似于last的东西来计算每个用户的登录频率,并将其输出到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:
last
的东西来计算每个用户的登录频率,并将其输出到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)
通常最后一个看起来像这样:
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)
有什么东西已经做到了吗,或者我该怎么做呢?也许是这样:
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) }
您应该检查拆分中“”的内容是否正确。
此外,您还应该检查上一个命令的确切输出—在写入文件之前,您可能需要清除一些垃圾;) 到目前为止你试过什么?对于csv部分,在上搜索“csv”。你会得到一连串的结果。