diff --git a/README b/README index 24ca6d4..5efb927 100644 --- a/README +++ b/README @@ -1 +1,6 @@ Achtung, Verwendung aller Programme auf eigene Gefahr! + +Vor Inbetriebnahme ist jedes Script daraufhin zu überprüfen, +ob noch Konfigurationseinstellungen vorgenommen werder müssen. +Z.B. muß bei ffgate-check die IP-Aresse des anzupingenden Hosts +eingetragen werden. diff --git a/alfred-announce.py b/alfred-announce.py index 28e0348..53e449b 100755 --- a/alfred-announce.py +++ b/alfred-announce.py @@ -104,12 +104,14 @@ def fn_node_net_mesh_ifaces(): for iface in map(lambda line: line.split(':')[0], call(['batctl', '-m', cfg['interface'], 'if']))] def fn_exitvpn_provider(): - # Wir arbeiten mit der Standardkonfigurationsdatei von OpenVPN. - # Dort ist immer unser aktuell verwendeter Exit-Tunnel eingetragen. - # Wenn OpenVPN konfiguriert ist, aber kein Tunnel verwendet wird, - # steht in der Konfiguration 'none'. Zur Unterscheidung wird im - # Fehlerfall 'n/a' zurückgeliefert. Das kommt z.B. vor, wenn - # gar kein OpenVPN installiert ist. + """ + Wir arbeiten mit der Standardkonfigurationsdatei von OpenVPN. + Dort ist immer unser aktuell verwendeter Exit-Tunnel eingetragen. + Wenn OpenVPN konfiguriert ist, aber kein Tunnel verwendet wird, + steht in der Konfiguration 'none'. Zur Unterscheidung wird im + Fehlerfall 'n/a' zurückgeliefert. Das kommt z.B. vor, wenn + gar kein OpenVPN installiert ist. + """ try: for line in open('/etc/default/openvpn'): if line.startswith('AUTOSTART='): @@ -124,6 +126,8 @@ def fn_exitvpn_country(): ISO 3166 Country Code """ provider = fn_exitvpn_provider() + if provider in ('none', 'n/a'): + return 'n/a' for line in open('/etc/openvpn/' + provider.lower() + '.conf'): if line.startswith('## ExitCountry = '): k, v = line.split(" = ") diff --git a/dhcpd-leases.py b/dhcpd-leases.py new file mode 100755 index 0000000..a0d8f5d --- /dev/null +++ b/dhcpd-leases.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python + +# Vergleiche +# dhcp-lease-list --lease /var/lib/dhcp/dhcpd.leases + +import re +import datetime + +def count_dhcp_leases(): + regex_leaseblock = re.compile(r"lease (?P\d+\.\d+\.\d+\.\d+) {(?P[\s\S]+?)\n}") + regex_properties = re.compile(r"\s+(?P\S+) (?P[\s\S]+?);") + leases = 0 + with open("/var/lib/dhcp/dhcpd.leases") as lease_file: + macs = set() + for match in regex_leaseblock.finditer(lease_file.read()): + block = match.groupdict() + properties = {key: value for (key, value) in regex_properties.findall(block['config'])} + if properties['binding'].split(' ')[1] == 'active' and properties['ends'] != 'never': + dt_ends = datetime.datetime.strptime(properties['ends'][2:], "%Y/%m/%d %H:%M:%S") + if dt_ends > datetime.datetime.utcnow() and properties['hardware'].startswith('ethernet'): + macs.add(properties['hardware'][9:]) + leases = len(macs) + return leases + +if __name__ == "__main__": + print "%d unique active leases" % count_dhcp_leases()