From owner-freebsd-questions@FreeBSD.ORG Mon Sep 18 15:25:43 2006 Return-Path: X-Original-To: freebsd-questions@freebsd.org Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5C54A16A412 for ; Mon, 18 Sep 2006 15:25:43 +0000 (UTC) (envelope-from phoffman@proper.com) Received: from balder-227.proper.com (Balder-227.Proper.COM [192.245.12.227]) by mx1.FreeBSD.org (Postfix) with ESMTP id C001A43D77 for ; Mon, 18 Sep 2006 15:25:40 +0000 (GMT) (envelope-from phoffman@proper.com) Received: from [10.20.30.177] (dsl-63-249-108-169.cruzio.com [63.249.108.169]) (authenticated bits=0) by balder-227.proper.com (8.13.5/8.13.5) with ESMTP id k8IFPPFm045656; Mon, 18 Sep 2006 08:25:27 -0700 (MST) (envelope-from phoffman@proper.com) Mime-Version: 1.0 Message-Id: In-Reply-To: <20060918144206.GG55663@dan.emsphone.com> References: <20060918144206.GG55663@dan.emsphone.com> Date: Mon, 18 Sep 2006 08:25:12 -0700 To: Dan Nelson From: Paul Hoffman Content-Type: text/plain; charset="us-ascii" ; format="flowed" Cc: freebsd-questions@freebsd.org Subject: Re: Getting a specific value from netstat X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Sep 2006 15:25:43 -0000 At 9:42 AM -0500 9/18/06, Dan Nelson wrote: >In the last episode (Sep 17), Paul Hoffman said: > > Greetings again. If I do a 'netstat -I em0 -b', I get: >> >> Name Mtu Network Address Ipkts Ierrs >>Ibytes Opkts Oerrs Obytes Coll >> em0 1500 00:0e:0c:67:c8:04 93555198 0 >>2179562966 114493253 0 723565977 0 >> em0 1500 fe80:1::20e:c fe80:1::20e:cff:f 0 - >>0 4 - 288 - >> em0 1500 192.245.12 Balder-227 35399016 - >>1770283188 114484197 - 3415268168 - >> em0 1500 192.245.12.22 Balder-228 27063120 - >>1655024896 0 - 0 - >> em0 1500 192.245.12.22 Balder-229 47427840 - >>3954775975 18975500 - 2445620452 - >> >> What I care about is the number of input and output bytes (in this >> case, 2179562966 and 723565977). I can write a short Perl script to >> parse the netstat output, but I would rather just get the numbers >> directly from the OS. Are these values available without going >> through netstat? > >If you use the same code netstat does, yes :) It looks like >per-interface stats are still obtained by grovelling through /dev/kmem, >though, so it may be easier to just parse netstat's output. Yes, probably so. The quick-and-dirty Perl script I wrote is: $ThisNetStat = `/usr/bin/netstat -I em0 -b`; @Lines = split(/^/, $ThisNetStat); $TheLine = $Lines[1]; $TheLine =~ s/ ( )*/ /g; @Fields = split(/ /, $TheLine); $InBytes = $Fields[6]; $OutBytes = $Fields[9]; *However*, I now see that the byte numbers from netstat seem to wrap around at about 4 gigabytes. I'll have to add some code to handle that over the long term, given that my system puts out that much in a day... >Another >alternative would be to install net-snmp and ask it for the stats. I thought SNMP stood for "Simply Not My Problem"? :-) --Paul Hoffman