Benutzer-Werkzeuge

Webseiten-Werkzeuge


freifunk:shell-befehle

Sammlung von Shell Befehlen

um euren Knoten zu konfigurieren oder diverse Dinge auszulesen haben wir hier Befehle gesammelt. Vorraussetzung ist das ihr erfolgreich auf der Shell des Routers seid.

Router Config ändern

am Gerät selbst: den Router nochmal im Konfig-Modus starten

Hierbei brauchst Du physikalischen Zugang zum Router, was ja in den allermeisten Fällen klappen sollte, und Du mußt ihn für kurze Zeit aus dem Freifunk-Mesh herrausnehmen. Deine Nutzer sind also solange offline. Dafür ist der Weg quasi genauso wie bei der Ersteinrichtung Deines Routers:

  • Den Router eingeschaltet lassen oder einschalten, falls er aus ist.
  • Reset-Knopf auf der Rückseite lokalisieren und diesen für 10 Sekunden gedrückt halten (bis alle Lampen vorne ausgehen). Das Gerät startet nun neu.
  • Der Router ist jetzt wieder über den Browser per http://192.168.1.1 zu erreichen.
  • Die Konfigurationsseite erscheint wieder und die bisherigen Daten werden angezeigt.
  • Nach Deinen gemachten Änderungen mußt Du wieder mit „Speichern & Neustarten“ abschließen.
  • Der VPN-Schlüssel sollte sich nicht verändert haben. Falls doch, muss er wieder an uns geschickt werden zum Eintragen am Gateway.

den Router-Konfig im laufenden Normal-Betrieb über Shell / Kommandozeile ändern

Auch über die Shell kann man einige Einstellungen vornehmen. Voraussetzung ist hier, dass Du Dich per SSH auf den Router verbinden kannst. Das klappt nur, wenn Du bei der Ersteinrichtung (oder irgendwann danach) entweder ein Paßwort im Router vergeben hast oder Deinen öffentlichen SSH-Schlüssel auf dem Router abgelegt hast. Ist das so, dann kannst Du über diesen Weg den Router auch aus der Ferne konfigurieren, muß ihn nicht außer Betrieb nehmen hierfür.

Beachte: Die gemachten Einstellungen werden nach dem „uci commit“ wirksam und einige Minuten später auch im Netz (z. B. auf der Karte) sichtbar. Je nach dem, was Du änderst; Deine eMail-Adresse wird dort natürlich nicht erscheinen.

Infos auslesen

ifconfig : zeigt euch alle Interfaces und die dazugehörigen IPv4 und IPv6 an, den Gesamttraffic etc.

ifstatus bat0 : leicht zu verabreitende json file mit Infos wie in ifconfig und uptime etc.pp.

uptime : zeigt euch die Zeit seit dem letzten Neustart

batctl o : erste Zeile zeigt euch die benutzte Batman-Adv Version an, weiteres unter Punkt batctl unten

crontab -e : damit könnt ihr neue Cronjobs anlegen, und so automatisiert Dinge tun, z.b. das Rebootskript im Falle des Internetverlustes automatisch ausführen, oder generell einen Reboot zu bestimmten Zeiten.

batctl tg |grep W |wc -l Anzahl aller WIFI Nutzer im gesamten Netzwerk

batctl tl |grep W |wc -l Anzahl localer Clients

batctl bat-hosts

#!/bin/sh
#
# get bat-hosts in /etc
echo "cd tmp"                                                        
echo "wget https://freiburg.freifunk.net/ffmap-backend/nodelist.json"                                                                                          
echo "cat nodelist.json |grep -o -E   \"id\":\ \".[^}]*|sed s/\"id\":\ \"// | sed s/\",\ \"name\":\ \"/\ / | sed s/\"// | sed 's/[a-h0-9][a-h0-9]/&:/5' | sed '
s/[a-h0-9][a-h0-9]/&:/4' | sed 's/[a-h0-9][a-h0-9]/&:/3' | sed 's/[a-h0-9][a-h0-9]/&:/2' | sed 's/[a-h0-9][a-h0-9]/&:/1'   > /etc/bat-hosts"
 
# annoying buggy if name is given twice like fffr or CCCfr or Marienbad .. the lines should be modified/deleted
# batctl gives plenty of warnings with each command-call
 

Router neu Konfigurieren

bei den Freifunkern Mainz und allg. Freifunk abgespickelt und aus dem gluon-git

IPv4 holen

sollte der router keine IPv4 (mehr) haben

 udhcpc -i br-client -q -S -n

Namen des Routers neu setzen

Wenn Du bspw. den Namen des Router ändern möchtest, geht dies wie folgt in der Shell (SSH):

uci set system.@system[0].hostname='freiburg-xxx-mein_neuername'
uci commit

fastD

fastD Key und anderes auslesen

uci show fastd.mesh_vpn

fastD Secret ändern

Das ist NICHT! der Key den ihr an keys@freiburg.freifunk.net geschickt habt.

uci set fastd.mesh_vpn.secret=488d4ff...usw.
uci commit

fastD public anzeigen

# /etc/init.d/fastd show_key mesh_vpn
18fa75d1.......usw.

Enabling fastd

# uci set fastd.mesh_vpn.enabled=1
# uci commit fastd
# /etc/init.d/fastd generate_key mesh_vpn
18fa75d1808692f04770........usw.

Disable fastd

# uci set fastd.mesh_vpn.enabled=0
# uci commit fastd
# /etc/init.d/fastd stop

Kontaktdaten ändern

Deine Kontaktdaten kannst Du wie folgt ändern:

uci set gluon-node-info.@owner[0]='owner'                                                << Diese Zeile genau so übernehmen!
uci set gluon-node-info.@owner[0].contact='alfred__neumann@irgendwo.de 01234 12345'  << Hier Deine Daten eintragen!
uci commit

Dadurch wird der Konfigurationsdatei /etc/config/gluon-node-info ein Abschnitt 'owner' hinzugefügt und in diesem dann der Eintrag 'contact'. Die Befehle müssen daher auch in der obigen Reihenfolge ausgeführt werden.

config owner
         option contact 'alfred__neumann@irgendwo.de 01234 12345'

Geodaten ändern / nachtragen

Geodaten lassen sich wie folgt ändern:

uci set gluon-node-info.@location[0]='location'               << Diese Zeile genau so übernehmen! 'location' NICHT ersetzen.
uci set gluon-node-info.@location[0].share_location='1'       << Diese Zeile genau so übernehmen!
uci set gluon-node-info.@location[0].latitude='48.01234236523128'   << Hier deinen Breitengrad eintragen!
uci set gluon-node-info.@location[0].longitude='7.779462933540343'   << Hier deinen Längengrad eintragen! 
uci commit

Damit wird in der Konfig-Datei /etc/config/gluon-node-info ein Abschnitt 'location' angelegt. Diesem Abschnitt werden dann die 3 Optionen hinzugefügt. Die Befehle müssen daher auch in der o.g. Reihenfolge ausgeführt werden.

In der Datei sieht das dann so aus (kann man also auch manuell machen):

config location
        option share_location '1'
        option latitude '48.01234236523128'
        option longitude '7.779462933540343'

Hier noch ein kleines Skript um mittels ./geochange.sh <ipv4/6> <lat> <lon> <on/off>(Bsp: ./geochange.sh fdf0:9bb:7814:a630:12fe:edff:feac:2c7a 48.010967.81787) die Geodaten anzupassen. Vorraussetzung SSH Zugriff.

#!/bin/bash
#
# use this script to change geoip
#
# usage : command IP lat lon <on|off>
#
# lat is ca 49 
# lon is ca 7.9
# advanced : make osm links possible also
# http://www.openstreetmap.org/#map=19/48.00123/7.82461
 
lat=$2
lon=$3
share=1
 
# check if @2 is http ...
if [[ $(echo -n $2) == 'http*' ]] ;
	then echo "sorry this http translate feature is not yet implementet" 	# some magic stripping of
fi
 
# for some reason deactivate sharing
if [[ $3 == "off" ]] ;
	then share=0;
fi
 
# secret mode : if any of the first 3 arguments is on or off do write share= 1 or 0
if [[ $4 == "on" ]] ;
	then share=1;
fi
 
# make ssh connection with direct commands
ssh -lroot $1 "uci set gluon-node-info.@location[0].latitude=$lat ; uci set gluon-node-info.@location[0].longitude=$lon ; uci set gluon-node-info.@location[0].share_location=$share ; uci commit gluon-node-info" 
 
# check if everything is fine
if [[ $? == 0 ]];
	then echo "happily changed geo on $1 to $2 and $3 and make enable=$share"
fi
 
# notes 
# uci set gluon-node-info.@location[0].latitude=53.834470
# uci set gluon-node-info.@location[0].longitude=10.702518
# uci set gluon-node-info.@location[0].share_location=1

Bandbreitenbegrenzung einstellen

bei den einfachen Routern in der Regel nicht Notwendig, oder besser über die oft vorhandene Fritzbox einzustellen. Bandbreitenbegrenzung lässt sich wie folgt ändern:

uci set gluon-simple-tc.mesh_vpn='interface'
uci set gluon-simple-tc.mesh_vpn.ifname='mesh-vpn'
uci set gluon-simple-tc.mesh_vpn.enabled='1'
uci set gluon-simple-tc.mesh_vpn.limit_ingress='50000'  << download anpassen
uci set gluon-simple-tc.mesh_vpn.limit_egress='10000'   << upload anpassen
uci commit

Number of local connected clients

grep -Eo "\[.*\]+" /sys/kernel/debug/batman_adv/bat0/transtable_local|grep W|wc -l
oder
batctl tl |grep W|wc -l

Number of all WIFI participiants in Network

batctl tg|grep W|wc -l

Reboot to configmode

uci set "gluon-setup-mode.@setup_mode[0].enabled=1"
uci commit
reboot

autoupdater einstellen

Den Branch für den Autoupdater kannst Du so festlegen bzw. nachträglich ändern:

uci set autoupdater.settings.enabled='1'
uci set autoupdater.settings.branch='stable'
uci commit
# wenn gewünscht von hand ausführen
autoupdater -f

Firmware über Console

in der /etc/sysupgrade.conf alles Eintragen was ein Sysupdate überleben soll. (Bspw. /etc/crontabs/root /etc/profile ….)

Upload der Firmware von eurem Rechner

hier im configmode beispiel (192.168.1.1)

scp whatever-sysupgrade.bin root@192.168.1.1:/tmp

Download wget

# IPv4 holen (hier auf dem 841N)
udhcpc -i br-client -q -S -n
# Datei holen ... 
wget http://irgendwo/sysupgrade/laberlaber.bin -O /tmp/firmware.bin
# jetzt das sysupgrade selbst 
sysupgrade -v /tmp/[specified firmware].bin 

bei Speichermangel über Netcat

reboot, firstboot

den Router könnt ihr Neustarten mir reboot .. wen ihr den quasi factory resetten wollt (Achtung neuer VPN fastd Key) geht das mit firstboot

alfred

im wesentlichen wid von Freifunk Gluon Firmware über alfred identifier 158 - 160 Informationen der Router untereinander ausgetauscht. Das bildet u.a. die Basis für die Daten der Freifunk Map auf der Homepage. Alfred Daten senden (0-255 möglich, 1-64 belegt)

cat irgendwas|  alfred -s 123
echo "was anderes"|alfred -s 124

Alfred Daten aus dem Netz empfangen

alfred -r 123

Die von Freifunk Gluon gesendeten Daten werden unschön durch gzip nochmal komprimiert, die wieder zu entschlüssen ist Tricky - haben wir aber nach ein paar Tagen auch rausgefunden.

alfred -r 158
alfred -r 159
alfred -r 160
# Bsp. um gezipptes wieder ins lesbare json Format zu bekommen
# alfred -r 159 | grep -o -E '\\x1f\\x8b\\x08.+\\x00\\x00'| sed -e 's/\\"/"/g' -e 's/\\/\\\\/g' | while read a; do echo -e $a|gzip -d ;done

batctl

hauseigene Batman-adv Tool rund um das meshende Netz installation batctl

Dazu unbedingt die MAN Pages lesen, bzw die sehr gute Befehlseigene Hilfe

batctl             # gibt usage/help
batctl gw client 1 # stellt die prio fürs gw auf linkquality und anounced speed, sonst nur quality
batctl dc          # Teil der distr. ARP Table, hier sieht man ob fremde netze (versehentlich) im netz sind
batctl tl          # an diesem Knoten angeschlossene clients
batctl if add eth0 # auf eth0 batman sprechen
batctl if del eth0 # batman schweigt auf eth0

DSL Router , Kontakt ins eigene Netz

über Freifunk ins Fremde Netz gelangen … sprich aus der Ferne seine Fritzbox oder andere Geräte erreichen. Root auf deinem Freifunkknoten vorrausgesetzt. ACHTUNG: eignet sich nicht für große Datentransfers … da solltet man einen direkteren Weg finden, als durch einen Freifunkknoten und quer durch das gesammte Freifunk Netz

# login auf router
ssh -lroot <myfreifunkrouter>
# wir brauchen ein Protforwarding auf den Knoten
# daher auch einen knoteneigenen key
dropbearkey -t rsa -f /etc/dropbear/mykey
# den schreiben wir in die authorized keys
dropbearkey -t rsa -f /etc/dropbear/mykey -y |grep ssh-rsa >> /etc/dropbear/authorized_keys
#
# damit kann der router nun auf sich "selbst" einloggen
#
# folgende Zeile leitet den http[80] von der Adresse 192.168.0.1 wie sie der dein Freifunkrouter sieht 
# (weil er zum Beispiel an einer Fritzbox DSL hängt) auf den Port [8080] deines FreifunkRouters um.
# bedeuted: FreifunkRouterIP:8080 kannst du im Browser nun aufrufen und erreichst damit 192.168.0.1:80
ssh -i /etc/dropbear/mykey -y localhost -o StrictHostKeyChecking=no -L 8080:192.168.0.1:80 -g

du erreichst nun dein Netz über deinen Freifunkknoten : in diesem Beispiel über die FreifunkRouterIP:8080 im Browser die angeschlossene Fritzbox von intern aus 192.168.0.1:80

freifunk/shell-befehle.txt · Zuletzt geändert: 2016/03/16 01:15 von viisauksena