diff --git a/fritzbox__connection_uptime.py b/fritzbox__connection_uptime.py old mode 100755 new mode 100644 diff --git a/fritzbox__cpu_temperature.py b/fritzbox__cpu_temperature.py old mode 100755 new mode 100644 diff --git a/fritzbox__cpu_usage.py b/fritzbox__cpu_usage.py old mode 100755 new mode 100644 diff --git a/fritzbox__memory_usage.py b/fritzbox__memory_usage.py old mode 100755 new mode 100644 diff --git a/fritzbox__power_consumption.py b/fritzbox__power_consumption.py old mode 100755 new mode 100644 diff --git a/fritzbox__traffic.py b/fritzbox__traffic.py old mode 100755 new mode 100644 index 2c6c83a..0d2e041 --- a/fritzbox__traffic.py +++ b/fritzbox__traffic.py @@ -63,7 +63,7 @@ def print_config(): print("graph_category network") print("graph_order down up maxdown maxup") print("down.label received") - print("down.type DERIVE") + print("down.type GAUGE") print("down.graph no") #print("down.cdef down,8,*") print("down.min 0") @@ -71,7 +71,7 @@ def print_config(): #print("down.warning %.0f" % (max_traffic[1]*0.6)) #print("down.critical %.0f" % (max_traffic[1]*0.8)) print("up.label bps") - print("up.type DERIVE") + print("up.type GAUGE") print("up.draw AREA") #print("up.cdef up,8,*") print("up.min 0") diff --git a/fritzbox__traffic_down.py b/fritzbox__traffic_down.py new file mode 100644 index 0000000..2a48423 --- /dev/null +++ b/fritzbox__traffic_down.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python +""" + fritzbox_traffic - A munin plugin for Linux to monitor AVM Fritzbox WAN traffic + Copyright (C) 2015 Christian Stade-Schuldt + Author: Christian Stade-Schuldt + + Updated to fritzconnection library version 1.3.1 + Copyright (C) 2020 Oliver Edelamnn + Author: Oliver Edelmann + + 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 os +import sys + +from fritzconnection.lib.fritzstatus import FritzStatus + +hostname = os.path.basename(__file__).split('_')[1] + +def print_values(): + try: + conn = FritzStatus(address=hostname, password=os.environ['fritzbox_password']) + except Exception as e: + print(e) + sys.exit("Couldn't get WAN traffic") + + traffic = conn.transmission_rate + up = traffic[0]*8 + down = traffic[1]*8 + print('down.value %d' % down) + + print('up.value %d' % up) + + if not os.environ.get('traffic_remove_max') or "false" in os.environ.get('traffic_remove_max'): + max_traffic = conn.max_bit_rate + print('maxdown.value %d' % max_traffic[1]) + + print('maxup.value %d' % max_traffic[0]) + + +def print_config(): + try: + conn = FritzStatus(address=hostname, password=os.environ['fritzbox_password']) + except Exception as e: + print(e) + sys.exit("Couldn't get WAN traffic") + + max_traffic = conn.max_bit_rate + + print("host_name %s" % hostname) + print("graph_title AVM Fritz!Box WAN traffic") + print("graph_args --base 1000") + print("graph_vlabel bit up (-) / down (+) per ${graph_period}") + print("graph_category network") + print("graph_order down maxdown") + print("down.label bps") + print("down.type GAUGE") + print("down.draw AREA") + print("down.graph no") + print("down.min 0") + print("down.max %d" % max_traffic[1]) + print("down.warning %.0f" % (max_traffic[1]*0.6)) + print("down.critical %.0f" % (max_traffic[1]*0.8)) + print("down.info Traffic of the WAN interface.") + if not os.environ.get('traffic_remove_max') or "false" in os.environ.get('traffic_remove_max'): + print("maxdown.label received") + print("maxdown.type GAUGE") + print("maxdown.graph no") + print("maxdown.info Maximum down speed of the WAN interface.") + if os.environ.get('host_name'): + print("host_name " + os.environ['host_name']) + + +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 traffic") diff --git a/fritzbox__traffic_up.py b/fritzbox__traffic_up.py new file mode 100644 index 0000000..42fe5c4 --- /dev/null +++ b/fritzbox__traffic_up.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python +""" + fritzbox_traffic - A munin plugin for Linux to monitor AVM Fritzbox WAN traffic + Copyright (C) 2015 Christian Stade-Schuldt + Author: Christian Stade-Schuldt + + Updated to fritzconnection library version 1.3.1 + Copyright (C) 2020 Oliver Edelamnn + Author: Oliver Edelmann + + 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 os +import sys + +from fritzconnection.lib.fritzstatus import FritzStatus + +hostname = os.path.basename(__file__).split('_')[1] + +def print_values(): + try: + conn = FritzStatus(address=hostname, password=os.environ['fritzbox_password']) + except Exception as e: + print(e) + sys.exit("Couldn't get WAN traffic") + + traffic = conn.transmission_rate + up = traffic[0]*8 + down = traffic[1]*8 + print('down.value %d' % down) + + print('up.value %d' % up) + + if not os.environ.get('traffic_remove_max') or "false" in os.environ.get('traffic_remove_max'): + max_traffic = conn.max_bit_rate + print('maxdown.value %d' % max_traffic[1]) + + print('maxup.value %d' % max_traffic[0]) + + +def print_config(): + try: + conn = FritzStatus(address=hostname, password=os.environ['fritzbox_password']) + except Exception as e: + print(e) + sys.exit("Couldn't get WAN traffic") + + max_traffic = conn.max_bit_rate + + print("host_name %s" % hostname) + print("graph_title AVM Fritz!Box WAN traffic") + print("graph_args --base 1000") + print("graph_vlabel bit up per ${graph_period}") + print("graph_category network") + print("graph_order up maxup") + print("up.label bps") + print("up.type GAUGE") + print("up.draw AREA") + print("up.min 0") + print("up.max %d" % max_traffic[1]) + print("up.warning %.0f" % (max_traffic[1]*0.6)) + print("up.critical %.0f" % (max_traffic[1]*0.8)) + print("up.info Traffic of the WAN interface.") + if not os.environ.get('traffic_remove_max') or "false" in os.environ.get('traffic_remove_max'): + print("maxup.label MAX") + print("maxup.type GAUGE") + print("maxup.draw LINE1") + print("maxup.info Maximum up speed of the WAN interface.") + if os.environ.get('host_name'): + print("host_name " + os.environ['host_name']) + + +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 traffic") diff --git a/fritzbox__uptime.py b/fritzbox__uptime.py old mode 100755 new mode 100644 diff --git a/fritzbox__wifi_devices.py b/fritzbox__wifi_devices.py old mode 100755 new mode 100644 diff --git a/fritzbox_helper.py b/fritzbox_helper.py old mode 100755 new mode 100644