On 17 February 2014 23:24, Jeremy Laidman <jlaidman at rebel-it.com.au> wrote:
On 17 February 2014 18:48, Jeremy Laidman <jlaidman at rebel-it.com.au>wrote:
For this reason, it seems to make sense that the "link" lines are probably the best for this, as I would think that they would show packets contained only in physical frames (ethernet or some other medium).
So I'm proposing that the FreeBSD client be adjusted from this:
echo "[ifstat]" netstat -i -b -n | egrep -v "^lo|<Link"
To this:
echo "[ifstat]" netstat -i -b -n | egrep "<Link"
Seem reasonable? Would anyone be adversely impacted by this suggested change?
Anyone? Nobody else using FreeBSD? I've implemented a work-around that works for me, by using the following line in xymonclient-freebsd.sh: netstat -ibn|egrep "<Link|Name"| grep -v ^lo | while read A B C D E F G; do [ $A = "Name" ] || { C=0.0.0.0/0; D=0.0.0.0; }; printf "%-5s %5s %-13s %-17s %12s %6s %14s %14s %6s %14s %6s\n" $A $B $C $D $E $F $G; done The output now only includes interface lines with "<Link" that are not loopback devices (thus ignoring all the non-physical entries), and the "<Link#1>" and MAC address lines have been replaced with dummy values that parse correctly on the server. I now have useful interface graphs for my FreeBSD systems. This is an ugly hack, and I only want this in place until a proper solution can be implemented. So, I'm proposing that the xymonclient-freebsd.sh script be modified to use this line for [ifstat]: netstat -ibn | egrep "<Link|Name"|grep -v ^lo (This could leave the loopback addresses in place, and I don't think anyone would mind.) Then, the following (untested) patch to do_ifstat.c. What say ye all? Cheers Jeremy --- do_ifstat.c.orig 2014-02-20 13:35:33.000000000 +1100 +++ do_ifstat.c 2014-02-20 13:42:32.000000000 +1100 @@ -27,8 +27,10 @@ /* Name MTU Network IP Ipkts Ierrs Ibytes Opkts Oerrs Obytes Coll */ /* lnc0 1500 172.16.10.0/24 172.16.10.151 26 - 1818 26 - 1802 - */ +/* Name MTU Network Address Ipkts Ierrs Ibytes Opkts Oerrs Obytes Coll */ +/* em0 1500 <Link#1> 00:11:22:33:44:55 26 - 1818 26 - 1802 - */ static const char *ifstat_freebsd_exprs[] = { - "^([a-z0-9]+)\\s+\\d+\\s+[0-9.\\/]+\\s+[0-9.]+\\s+\\d+\\s+[0-9-]+\\s+(\\d+)\\s+\\d+\\s+[0-9-]+\\s+(\\d+)\\s+[0-9-]+" + "^([a-z0-9]+)\\s+\\d+\\s+<Link#\\d+>\\s+[:0-9]+\\s+\\d+\\s+[0-9-]+\\s+(\\d+)\\s+\\d+\\s+[0-9-]+\\s+(\\d+)\\s+[0-9-]+" }; /* Name Mtu Network Address Ipkts Ierrs Idrop Ibytes Opkts Oerrs Obytes Coll */