You are here: Foswiki>Main Web>SshBefehle (01 Oct 2016, ArminLettenbauer)Edit Attach
Hier werden einige/wichtige SSH-Befehle aufgeführt, die hilfreich bei der Fernwartung eines Access-Points sein können.
Vorraussetzung ist natürlich eine SSH-Verbindung auf den Router.


Gleich mal im Vorraus, um das Kommando wirksam zu machen muss am Ende, bevor man den Router neu startet, ein "uci commit" eingeben, sonst werden die Änderungen nicht übernommen!
Hat man sich schließlich per SSH eingeloggt, lassen sich zahlreiche Befehle nutzen.

Grundlegende Befehle

ls
ist ein Befehl, mit dem ihr ein Verzeichnis anzeigen lassen könnt ( ähnlich dem dir unter Dos ), mit

ls -l
könnt ihr euch die kompletten Informationen der Dateien anzeigen lassen

cd
heiß soviel wie "Change Directory" oder auch "Wechsel das Verzeichnis". Damit könnt ihr in einen Ordner eurer Wahl springen. Mit

cd ..
kommt ihr in den übergeordneten Ordner, mit

cd /
in das Hauptverzeichnis

cat
gibt den Inhalt einer Datei in der Kommandozeile zurueck. Der vorteil ist das man nicht extra Vi starten muss.

vi

ist ein Kommandozeileneditor, mit dem ihr euch Dateien angucken und verändern könnt. Um damit umzugehen, sollte man bei einer Suchmaschine eures Vertrauens mal nach vi kommandos oder vi einführung suchen. kurz erwaehnt, ihr kommt mit :q! oder <esc> :q! immer aus diesen Programm wieder raus, weitere Infos entnehmt ihr bitte einer Anleitung des vi. Ein guter Einstieg ist der wikipedia Vi Artikel

top
ein Tool, mit dem ihr euch die Aktuelle Auslastung eures Systems anzeigen lassen könnt

rdate
verändert die Systemzeit

rm
loescht eine Datei

rm -d
löscht ein Verzeichniss

Anpassen der Einstellungen in OpenWrt

UCI ist das Kommandozeilentool, welches in OpenWRT genutzt wird, um Einstellungen auszulesen oder zu ändern. Über UCI lassen sich alle Einstellungen, die auch über die Konfigurationsoberfläche möglich sind, sowie einige weitere Einstellungen vornehmen.

Einstellungen anzeigen

Alle gesetzten Einstellungen auflisten:

uci show

Eine bestimmte Einstellung anzeigen:

uci show [Einstellung]

Beispiel:

uci show autoupdater.settings.enabled

Oder für eine Einstellungsgruppe:

uci show autoupdater.settings

Einstellungen setzen

uci set [Einstellung]=[Wert]

Beispiel:

uci set autoupdater.settings.enabled=1

Wichtig: Wenn du Einstellungen via UCI gesetzt hast, müssen diese via uci commit am Ende aktiviert werden!

Einstellungen sichern

Bevor man an Einstellungen herum fummelt kann es sinnvoll sein, diese zunächst zu sichern um sie problemlos wieder herzustellen. Dies lässt sich für alle Einstellungen via uci export oder auch nur für einen Abschnitt machen, wie im folgenden Beispiel:

uci export network > network.uci

Und der Import geht dann so:

cat network.uci | uci import

Einstellungen von Gluon ändern

Gluon ist eine OpenWrt-basierte Freifunk-Firmware, die recht häufig (aber nicht von allen Communities) im Freifunk-Umfeld benutzt wird.

Autoupdater Branch festlegen

Wenn der Router nach dem Reboot wieder oben ist könnt ihr den Branch für den Autoupdater noch festlegen:

uci set autoupdater.settings.enabled='1'
uci set autoupdater.settings.branch='stable'
uci commit autoupdater

Das Update kann man dann manuell anstoßen.

autoupdater -f 

Das stable Release ist immer die jüngste stabile Version der Firmware für Produktivsysteme. Seit der Version 0.5 ist der Autoupdater mit dem stable Branch automatisch bei Installation aktiviert, so dass die Router sich automatisch aktuell halten. Sollte dies nicht gewünscht sein, so muss dies explizit deaktiviert werden.

Neustart im Configmode

Manchmal ist es Notwendig in den Configmode zu starten. Dies beinhaltet die Weboberfläche des Systems zum ersten Einrichten eines Freifunk-Routers. Für gewöhnlich hält man ein paar Sekunden lang die Reset Taste gedrückt. Folgende Ausführung würde den gleichen Effekt erzielen:

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

Routernamen ändern

Wenn ihr bspw. den Namen des Router ändern möchtet geht dies wie folgt in der SSH Shell:

uci set system.@system[0].hostname='FF-OB-SAMPLE-01'  << Name anpassen
uci commit system

Danach ist ein Reboot erforderlich.

Kontaktdaten ändern

uci set gluon-node-info.@owner[0]='owner'
uci set gluon-node-info.@owner[0].contact='Mustermann muster@freifunk-ruhrgebiet.de 02453434434'  << Daten anpassen
uci commit gluon-node-info

Geodaten ändern

uci set gluon-node-info.@location[0]='location'
uci set gluon-node-info.@location[0].share_location='1'
uci set gluon-node-info.@location[0].latitude='51.484943'   << anpassen
uci set gluon-node-info.@location[0].longitude='6.880250'  << anpassen 
uci commit gluon-node-info

Bandbreitenbegrenzung ändern

Alt:

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 gluon-simple-tc

Neu:

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

Bandbreitenbegrenzung zeitgesteuert ändern

Folgende Cronjobs anlegen:

crontab -e

Für tägliche Limits von 07 bis 1700 Uhr:

0 7 * * * uci set gluon-simple-tc.mesh_vpn.enabled='1' && uci set gluon-simple-tc.mesh_vpn.limit_ingress='2000' && uci set gluon-simple-tc.mesh_vpn.limit_egress='500' && uci commit gluon-simple-tc
0 17 * * * uci set gluon-simple-tc.mesh_vpn.enabled='0' && uci commit gluon-simple-tc

Für werktägliche Limits von 07 bis 1700 Uhr (ungetestet):

0 7 * * 1-5 uci set gluon-simple-tc.mesh_vpn.enabled='1' && uci set gluon-simple-tc.mesh_vpn.limit_ingress='2000' && uci set gluon-simple-tc.mesh_vpn.limit_egress='500' && uci commit gluon-simple-tc
0 17 * * 1-5 uci set gluon-simple-tc.mesh_vpn.enabled='0' && uci commit gluon-simple-tc

Hier wird jeweils ein Limit von 2Mbits down und 0.5 MBits up gesetzt.

Achtung! Jeder Scriptaufruf führt ein commit und damit einen Schreibvorgang auf dem Rom aus. Dies kann sich negativ auf die Lebensdauer des Gerätes auswirken.

Mesh VPN aktivieren

Mesh VPN bezieht sich auf das Meshen mit anderen Routern über das Internet. Es ist auch Voraussetzung für die Internetfreigabe der Clients am eigenen Knoten.

uci set fastd.mesh_vpn.enabled=1
uci commit fastd
/etc/init.d/fastd start

Sofern noch kein Schlüssel generiert wurde, muss das ebenfalls geschehen:

/etc/init.d/fastd generate_key mesh_vpn
18fa75d1808692f04770bedf30c42dac24585d331560c545d70dd27f22a05648

Dieser Schlüssel muss dann in der jeweiligen Domäne angemeldet werden.

Meshing über WAN-Schnittstelle (Mesh on wan) aktivieren

Wenn du die WAN-Schnittstelle nicht nur für einen Internetzugang verwenden möchtest, sondern über diese auch das Meshing-Protokoll aktivieren willst, um z.B. andere, evtl. langsamere Freifunk-Router mit dem Freifunk-Netz zu versorgen, gehst du wie folgt vor:

uci set network.mesh_wan.auto=1
uci commit network
/etc/init.d/network restart

Meshing über WAN-Schnittstelle deaktivieren

uci set network.mesh_wan.auto=0
uci commit network
/etc/init.d/network restart

Private WLAN

Es ist möglich ein privates WLAN anzulegen, das mit dem WAN-Port gebridged und separat zum Mesh Netzwerk ist. Bitte beachte, dass Mesh on Wan nicht zeitgleich aktiviert werden sollte. Effekt: Dieses private WLAN ist nun Teil des am WAN-Port anliegenden Heimnetzes. Gibt man ihm die gleichen Zugangsdaten (SSID & Passwort) wie dem bestehenden Heim-WLAN, so wird dieses effektiv erweitert. Zeitgleich fungiert der Router als Freifunk-Router. Freifunk und privates Netz bleiben dabei voneinander getrennt.

Das private WLAN kann im Config-Modus aktiviert werden, alternativ auch über die Konsole wie folgt:

uci set wireless.wan_radio0=wifi-iface
uci set wireless.wan_radio0.device=radio0
uci set wireless.wan_radio0.network=wan
uci set wireless.wan_radio0.mode=ap
uci set wireless.wan_radio0.encryption=psk2
uci set wireless.wan_radio0.ssid="$SSID"
uci set wireless.wan_radio0.key="$KEY"
uci set wireless.wan_radio0.disabled=0
uci commit wireless
wifi

Bitte ersetze $SSID mit dem Namen deines Heimnetzwerks und $KEY mit deinem bisher üblichen Key (der vom privaten Router). Bei einem Dualband-Gerät (das 2.4 und 5 Ghz für WLAN verwendet), gibt es neben radio0 auch radio1; letzteres sollte genauso konfiguriert werden.

Zum deaktivieren des Ganzen wie folgt vorgehen:

uci set wireless.wan_radio0.disabled=1
uci commit wireless
wifi

Meshing on LAN

Eigentlich wird nur der WAN Anschluss zum Betreiben eines Freifunk Routers benötigt. Die anderen Ports jedoch bleiben ungenutzt. Das Meshing ist über diese (meist gelben) LAN Ports abgeschaltet. Diese sind für Clients, neben WLAN, eine zusätzliche Verbindungsmethode. Man kann diese Ports jedoch auch dafür benutzen um mit weiteren Routern zu "meshen":

uci set network.client.ifname='bat0'
uci set network.mesh_lan=interface
uci set network.mesh_lan.ifname="$(cat /lib/gluon/core/sysconfig/lan_ifname)"
uci set network.mesh_lan.mesh=bat0
uci set network.mesh_lan.proto=batadv
uci commit network
/etc/init.d/network restart

Anmerkung: fehlt da evtl. "uci set network.mesh_lan.auto=1" ? -- kann sein smile


Nur 2015.1.x:

# activate
uci set network.client.ifname="bat0"
uci set network.mesh_lan.auto=1
uci commit network
/etc/init.d/network restart
# deactivate
uci set network.client.ifname="bat0 $(cat /lib/gluon/core/sysconfig/lan_ifname)"
uci set network.mesh_lan.auto=0
uci commit network
/etc/init.d/network restart


Testen (funktioniert nur, wenn auch ein Kabel eingesteckt ist):

batctl if

sollte nun u.A. eth1: active anzeigen

ubus call network.interface.mesh_lan status

Sollte "up": true anzeigen

Abrufen an welchen Ports Kabel eingesteckt sind

swconfig dev switch0 show | grep 'link:'

Gateways im Router an-/abschalten

uci set fastd.mesh_vpn_backbone_peer_<<COMMUNITY-NAME>>_vpn<<NR-DES-GATEWAYS>>.enabled=0/1
uci commit
/etc/init.d/fastd restart

<<COMMUNITY-NAME>> muss durch das Kürzel eurer Community ersetzt werden, z.B. ffnord

<<NR-DES-GATEWAYS>> wird durch die Zahl des Gateways ersetzt (i.d.R. 0-3)

Clientnetz zeitgesteuert an-/abschalten

Dieser Crontab schaltet das Clientnetz um 21 Uhr aus und um 7 Uhr wieder ein. Das MESH Netz bleibt dabei aktiv.

crontab -e
i (um den Schreibmodus zu aktivieren)
0 21 * * *  uci set wireless.client_radio0.disabled=1;uci set wireless.client_radio1.disabled=1;wifi
0  7 * * *   uci set wireless.client_radio0.disabled=0;uci set wireless.client_radio1.disabled=0;wifi
ESC dann :wq

Statusseite partiell ausblenden - Privacy (2016.1.x)

Nachbarknoten (alles)

chmod -x /lib/gluon/status-page/www/cgi-bin/interfaces

Nachbarknoten (dBm)

chmod -x /lib/gluon/status-page/www/cgi-bin/dyn/stations

Statistik (alles)

chmod -x /lib/gluon/status-page/www/cgi-bin/dyn/statistics

-- ArminLettenbauer - 09 Apr 2016
Topic revision: r6 - 01 Oct 2016, ArminLettenbauer
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback