#!/usr/bin/python
# Copyright (C) 2009  Glen Pitt-Pladdy
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
#
#
# See: http://www.pitt-pladdy.com/blog/_20100123-184109_0000_OpenWrt_with_native_IPv6_on_DG834_v2_using_AAISP_/
#


CACHETIME = 30
CACHEFILE = '/var/local/cacti/cache-openwrt-netdev-'


# get hostname (argument)
import os
import sys
try:
	HOST=sys.argv[1]
except:
	print os.path.basename(sys.argv[0])+": Requires hostname as argument"
	sys.exit ( 1 )
# extend CACHEFILE
CACHEFILE += HOST

# check for cache file newer CACHETIME seconds ago
import time
if os.path.isfile ( CACHEFILE ) \
	and ( time.time() - os.stat ( CACHEFILE )[8] ) < CACHETIME:
	# use cached data
	f = open ( CACHEFILE, 'r' )
	data = f.read()
	f.close()
else:
	# grab the status URL (fresh data)
	# need debian package python-urlgrabber
	from urlgrabber import urlread
	data = urlread ( 'http://'+HOST+'/cgi-bin/monitor/netdev',
					user_agent = 'OpenWRT Cacti Stats' )
	# write file
	f = open ( CACHEFILE+'.TMP.'+`os.getpid()`, 'w' )
	f.write ( data )
	f.close()
	os.rename ( CACHEFILE+'.TMP.'+`os.getpid()`, CACHEFILE )


# dice up the data
import re
params = {}
lines = data.splitlines()
lines.pop(0)
lines.pop(0)
for line in lines:
	linesplit = re.split ( '[\s:]+', line )
	params[linesplit[1]+'_rxbytes'] = linesplit[2]
	params[linesplit[1]+'_rxpackets'] = linesplit[3]
	params[linesplit[1]+'_txbytes'] = linesplit[10]
	params[linesplit[1]+'_txpackets'] = linesplit[11]



for param in params:
	print param+':'+params[param],




