Scripte
Auf dieser Seite sollen nützliche, interessante und evtl. auch witzige Scripte für das Freifunknetz gesammelt werden.
Mac to Vendor
Mit diesem Script lässt sich ausgeben, von welchem Hersteller die Clients sind, die sich mit deinem Node verbunden haben.
Script
#!/usr/bin/env python # -*- coding: utf-8 -*- # by ZaB|SHC| @ freenode/#archlinux.de 2013 NODEMAC = '26:a4:3c:ad:f4:88' import urllib.request, json from time import sleep n = json.loads(urllib.request.urlopen('http://freifunk.in-kiel.de/ffmap/nodes.json').read().decode('utf-8')) for l in n['links']: if l['id'].startswith(NODEMAC + '-'): m = l['id'].split('-')[1] if m in (NODEMAC, NODEMAC): continue r = urllib.request.urlopen('http://www.macvendorlookup.com/api/EIHHxPB/{0:s}'.format(m)).read().decode('utf-8') if r != 'none': c = json.loads(r)[0]['company'] else: c = '' print('{0:s}\t{1:s}'.format(m, c))
Beispiel
#./ffkiVendors.py f4:f1:5a:XX:XX:XX Apple d0:ae:ec:XX:XX:XX Alpha Networks Inc. de:66:c8:XX:XX:XX f8:e0:79:XX:XX:XX f0:25:b7:XX:XX:XX 30:39:26:XX:XX:XX Sony Ericsson Mobile Communications AB a8:26:d9:XX:XX:XX HTC Corporation b8:5e:7b:XX:XX:XX Samsung Electronics Co.,Ltd 40:f3:08:XX:XX:XX Murata Manufactuaring Co.,Ltd. 90:b9:31:XX:XX:XX 90:18:7c:XX:XX:XX Samsung Electro Mechanics co., LTD. 38:aa:3c:XX:XX:XX SAMSUNG ELECTRO-MECHANICS 3c:e0:72:XX:XX:XX Apple bc:f5:ac:XX:XX:XX f6:58:32:XX:XX:XX 90:c1:15:XX:XX:XX Sony Ericsson Mobile Communications AB 78:d6:f0:XX:XX:XX Samsung Electro Mechanics
(Die MAC Adressen wurden in diesem Beispiel anonymisiert)
Anmerkungen
Wie mithilfe von MAC Adressen auf die Hersteller geschlossen werden kann, erklärt folgender Heise Link:
http://www.heise.de/netze/tools/mac/
Bei Laptop Clients ist das Script nicht all zu aussagekräftig, da der Hersteller des Wlan Chipsatzes nichts über den Hersteller des Laptops aussagt. Bei Smartphones Clients funktioniert diese Script aber hervorragend. Die großen Smartphone Hersteller verbauen fast alle ihre eigenen Wlan Chipsätze, so dass die Smartphone Hersteller gut über ihre MAC Adresse erkennbar sind.
Abgesehen davon ist es bei Smartphones oftmals alles andere als trivial seinen WLan Chip zu tauschen. Ganz anders als das bei Laptops der Fall ist.
Erstellen eines OpenWRT opkg Mirrors
Um auch innerhalb des Freifunk Netzes per opkg Software installieren zu können, bietet sich ein lokaler Mirror an.
Spiegeln des Paketservers
wget --mirror --no-parent --no-host-directories http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/ wget --mirror --no-parent --no-host-directories http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/
Per Cron den Paketserver regelmäßig spiegeln
Für ein regelmäßiges Update muss folgende Zeile in die Crontab eingefügt werden.
0 5 * * 3 cd /var/www/; wget --mirror --no-parent --no-host-directories http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/ > /dev/null 2>&1 0 5 * * 3 cd /opt/opkg-mirror/; wget --mirror --no-parent --no-host-directories http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/ > /dev/null 2>&1
Detaillierter Status auf der Konsole
Wenn man auf der Konsole eines Knotens eingeloggt ist, kann man sich mit diesem kleinen Script anzeigen lassen, wer gerade so mit dem Knoten kommuniziert.
Script
while true; do clear; date; echo; echo "Stations on mesh0 (backbone):"; iwinfo mesh0 assoclist; echo "Stations on ibss0 (backbone):"; iwinfo ibss0 assoclist; echo "Stations on client0 (users):"; iwinfo client0 assoclist; sleep 5; done
Jabber Benachrichtigung bei Verbindungsabriss
Der folgende Einzeiler pingt alle fünf Sekunden einen beliebigen Host/Server/Client/Node an. Falls es zum Verbindungsabriss kommen sollte, wird bei jedem fehlerhaften Ping eine Jabber Nachricht generiert. In Kombination mit einem Smartphone kann äußerst schnell und nervig (5sek Takt) die Aufmerksamkeit auf einen Node gezogen werden.
Voraussetzung ist ein fertig konfiguriertes sendxmpp.
ping6 -i 5 -D -O fe80::62e3:27ff:fe24:5cfs%eth0 | grep --line-buffered "no answer yet" | sendxmpp -t -i JID@SERVER
fe80::62e3:27ff:fe24:5cfs - Interne IPv6 des Nodes
eth0 - Interface zum ff Netz
JID@Server - Zu benachrichtigende Jabber ID
Node ausrichten
Zum schnellen ausrichten eines Richtfunknodes sollte folgender Einzeiler helfen.
while [ 1 ]; do sleep 1; clear; iwinfo mesh0 assoclist; done