From 00d6b89fe5cb983e726729db95dce34d76eb7c67 Mon Sep 17 00:00:00 2001 From: Christian Stade-Schuldt Date: Wed, 3 Jun 2015 00:40:54 +0200 Subject: [PATCH] add fritzbox connection uptime plugin --- fritzbox_uptime.py | 47 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100755 fritzbox_uptime.py diff --git a/fritzbox_uptime.py b/fritzbox_uptime.py new file mode 100755 index 0000000..7ef53c4 --- /dev/null +++ b/fritzbox_uptime.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +""" + fritzbox_uptime - A munin plugin for Linux to monitor AVM Fritzbox connection uptime + Copyright (C) 2015 Christian Stade-Schuldt + Author: Christian Stade-Schuldt + Like Munin, this plugin is licensed under the GNU GPL v2 license + http://www.opensource.org/licenses/GPL-2.0 + Like Munin, this plugin is licensed under the GNU GPL v2 license + http://www.opensource.org/licenses/GPL-2.0 + This plugin requires the fritzconnection plugin. To install it using pip: + pip install fritzconnection + This plugin supports the following munin configuration parameters: + #%# family=auto contrib + #%# capabilities=autoconf +""" + +import sys, os +from fritzconnection import FritzConnection + +def print_values(): + try: + connection = FritzConnection() + except Exception as e: + sys.exit("Couldn't get connection uptime") + + uptime = connection.call_action('WANIPConnection', 'GetStatusInfo')['NewUptime'] + print ('uptime.value %.2f' % (int(uptime)/86400.0)) + +def print_config(): + print "graph_title AVM Fritz!Box Connection Uptime" + print "graph_args graph_args --base 1000 -l 0" + print 'graph_vlabel uptime in days' + print "graph_scale no'" + print "graph_category network" + print "uptime.label uptime" + print "uptime.draw AREA" + +if __name__ == "__main__": + if len(sys.argv) == 2 and sys.argv[1] == 'config': + print_config() + elif len(sys.argv) == 2 and sys.argv[1] == 'autoconf': + print "yes" # Some docs say it'll be called with fetch, some say no arg at all + elif len(sys.argv) == 1 or (len(sys.argv) == 2 and sys.argv[1] == 'fetch'): + try: + print_values() + except: + sys.exit("Couldn't retrieve fritzbox connection uptime") \ No newline at end of file