http://www.perlmonks.org?node_id=636278


in reply to Re^2: measuring IN/OUT traffic on your computer
in thread measuring IN/OUT traffic on your computer

That's easy too. Firstly change the print statement so it would print the time (in epoch seconds) and the rate separated by spaces. Write that output to a file, and then graph that file with gnuplot.

I actually have a perl program that draws a graph by calling gnuplot, here are a few parts of its code (I did it as a work so I don't want to publish all of it). The part not shown here opens a tempfile and writes into it the numbers in the simple format mentioned above. I also print some overall statistics to stdout. The following sub graphs the data then (it might need some adaptation for your purposes).

use File::Temp (); sub showgraph { my($cmdfile, $cmdfilename); my $cmds = qq[set key off\nplot "] . quote($outname) . qq[" wi +th lines\n! echo "Press return to continue" ; read\n]; ($cmdfile, $cmdfilename) = File::Temp::tempfile undef, "UNLINK +", 1; $out or die "error creating temporary commands file"; print "Writing gnuplot command to temporary file $cmdfilename\ +n"; print $cmdfile $cmds or die "error writing command file: $!"; flush $cmdfile or die "error flushing comand file"; print "Launching gnuplot\n"; system "gnuplot", $cmdfilename; close $cmdfile; }

Update 2008-01-29: see Plot a spiral with gnuplot.

Replies are listed 'Best First'.
Re^4: measuring IN/OUT traffic on your computer
by stark (Pilgrim) on Aug 31, 2007 at 09:34 UTC

    I like it.

    On Linux you can use the tools nload or ipfraf for this... But anyway - short and definitely a cool use of Perl.

Re^4: measuring IN/OUT traffic on your computer
by spx2 (Deacon) on Aug 31, 2007 at 10:06 UTC
    ___
Re^4: measuring IN/OUT traffic on your computer
by spx2 (Deacon) on Sep 03, 2007 at 12:17 UTC
    __