Codebase list trend / lintian-fixes/main examples / net
lintian-fixes/main

Tree @lintian-fixes/main (Download .tar.gz)

net @lintian-fixes/mainraw · history · blame

#!/usr/bin/env perl
# network usage for trend

use strict;
use warnings;
use Time::HiRes "usleep";

# be sure to flush right away!
$| = 1;

# arguments
my $oldIn = 0;
my $oldOut = 0;
my $ms = ($ARGV[0]? $ARGV[0]: 0.1) * 1000000;
my $if = ($ARGV[1]? $ARGV[1]: "eth0");

# main loop
while()
{
  open FD, "/proc/net/dev" or die;
  while(<FD>)
  {
    my ($ent, $in, $out) = /^\s*([^\s:]+):\s*(\d+)\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+(\d+)/;
    if($ent and $ent eq $if)
    {
      $oldIn = $in if($oldIn == 0);
      $oldOut = $out if($oldOut == 0);

      print(($in - $oldIn) . " " .
	    ($out - $oldOut) . "\n");
      
      $oldIn = $in;
      $oldOut = $out;
      last;
    }
  }
  close FD;

  usleep $ms;
}