#!/bin/bash # # netdrawdaysum -- 2008-05-17, last edit 2009-10-02 # # script to display most recent network data transfer rate # # Copyright (C) 2008,2009 Grant Coady GPLv2 # # locate sample data file DATAFILE=$(awk ' $1 == "datapath" { dp = $2 } $1 == "datafile" { print dp "/" $2 } ' /etc/netdraw.conf) # find peak, average and latest rates for last 24 hours and draw summary block tail -289 $DATAFILE | awk ' function s(v, p) { v /= 300; p = " " if (v >= 1000) { v /= 1000; p = "k" } if (v >= 1000) { v /= 1000; p = "M" } return sprintf(" %#.4g", v) p "B/s" } function fly_chart(x, y) { print "# " img > out print "new" > out print "size " x "," y > out print "type png" > out print "name " tmp > out print "fill 1,1," col_back > out } function fly_string(x, y, t) { print "string " col_shdw "," x + 1 "," y ",small," t > out print "string " col_shdw "," x + 1 "," y + 1 ",small," t > out print "string " col_text "," x "," y ",small," t > out } BEGIN { out = "/tmp/netdrawdaysum.fly" tmp = "/tmp/netdrawdaysum.png" img = "/home/web/bugsplatter/netdraw/netdrawdaysum.png" htm = "/home/web/bugsplatter/netdraw/index/html" col_back = "215,231,252" col_shdw = "204,216,230" col_text = "0,0,0" } NR == 1 { lrx = $2; ltx = $3; next } { rx = $2 - lrx; tx = $3 - ltx if (rx < 0) rx = 0; if (tx < 0) tx = 0 if (rx > prx) prx = rx; if (tx > ptx) ptx = tx trx += rx; ttx += tx lrx = $2; ltx = $3 } END { l1 = sprintf("Peak: Rx:%s Tx:%s\n", s(prx), s(ptx)) l2 = sprintf("Average: Rx:%s Tx:%s\n", s(trx / 288), s(ttx / 288)) l3 = sprintf("Latest: Rx:%s Tx:%s", s(rx), s(tx)) # write fly script fly_chart(320, 48) fly_string(10, 4, l1) fly_string(10, 18, l2) fly_string(10, 32, l3) system("fly -q -i " out " && mv -f " tmp " " img) ##system("touch " htm) }'