module Vidibus::Sysinfo::Traffic
Returns total traffic of this month in gigabytes.
Calls `vnstat`
Installation on Debian:
apt-get install vnstat vnstat -u -i eth0
Public Class Methods
command()
click to toggle source
# File lib/vidibus/sysinfo/traffic.rb, line 36 def command "vnstat -m" end
explain(error)
click to toggle source
# File lib/vidibus/sysinfo/traffic.rb, line 61 def explain(error) if error.match("vnstat: command not found") return "vnstat is not installed. On Debian, you can install it with 'apt-get install vnstat' and 'vnstat -u -i eth0'" end end
parse(output)
click to toggle source
# File lib/vidibus/sysinfo/traffic.rb, line 40 def parse(output) month = /(\s*\w{3} \'\d{2})/ traffic = /\s*(\d+(?:\.\d+)?) (ki?B|Mi?B|Gi?B|Ti?B)\s*/i last_month = output.split(/\r?\n/)[-3] if last_month && last_month.match(/#{month}#{traffic}\|#{traffic}\|#{traffic}+/m) input_amount = $2.to_f input_unit = $3 output_amount = $4.to_f output_unit = $5 Result.new({ input: gigabytes(input_amount, input_unit), output: gigabytes(output_amount, output_unit) }) elsif output.match("Not enough data available yet") Result.new({ input: 0.0, output: 0.0 }) end end