清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
# Script to display the transfer information of a given
# interface. Relies on /proc/net/dev for byte totals.
require 'fileutils'
if ARGV.length < 1
puts "Usage: #{$0} <interface>"
exit -1
end
found_iface = false
iface = ARGV[0]
net_info = File.new('/proc/net/dev', 'r')
SI_STR = ['Bytes', 'KB', 'MB', 'GB']
# Convert transfer amounts from raw bytes to something more readable
def humanize(transfer)
si = 0
while transfer >= (2 ** 10) and si < SI_STR.length
transfer /= (2 ** 10).to_f
si += 1
end
sprintf('%.2f %s', transfer, SI_STR[si])
end
while line = net_info.gets
# Find the proper interface line
if line =~ /#{iface}/
found_iface = true
# Remove the interface prefix (i.e. "eth0:")
line.sub!(/^\s*#{iface}:/, '')
# Split the numbers into an array
line = line.split(/\s+/)
# Extract the number of bytes rx'd and tx'd
rx, tx = line[0].to_i, line[8].to_i
total = humanize(rx + tx)
rx = humanize(rx)
tx = humanize(tx)
puts "#{iface} transfer:"
puts 'Recieved: ' + rx
puts 'Transmitted: ' + tx
puts 'Total: ' + total
end
end
if not found_iface
puts "Unable to find interface: #{iface}"
exit -1
end
##