Linux Befehle für die Konsole
Diese Informationen sind nur für Leute die genau wissen, was sie tun.
Arbeiten auf der Kommandozeile von Routern
Die Kommandozeile ist ein Eingabebereich für die Steuerung des Routers das im Textmodus abläuft. Damit eröffnen sich für den WRT Möglichkeiten jenseits der Grenzen der Weboberfläche.
Auf der Kommandozeile
Hat man sich schließlich per SSH eingeloggt, lassen sich zahlreiche Befehle nutzen.
Informationen zum Freifunknetz
Die Funktion batctl
In der ersten Zeile Anzeige der B.A.T.M.A.N.-ADV Version
batctl o
Traceroute für B.A.T.M.A.N. advanced operates on layer 2.
batctl tr <MAC_address|bat-host_name|host_name|IP_address>
Ping für B.A.T.M.A.N. advanced operates on layer 2.
batctl p <MAC_address|bat-host_name|host_name|IP_address>
Übersetzung für B.A.T.M.A.N. advanced operates on layer 2.
batctl t <MAC_address|bat-host_name|host_name|IP_address>
Statistik für B.A.T.M.A.N. advanced operates on layer 2.
batctl s
Zeigt alle Gateways mit aktueller Bandbreite im Freifunknetz
batctl gwl
Auflisten aller Nutzer im Freifunknetz
batctl tg
Anzahl aller WIFI Nutzer im gesamten Netzwerk anzeigen
batctl tg |grep W |wc -l
Auflistung localer Nutzer
batctl tl
Anzahl localer Clients anzeigen
batctl tl |grep W |wc -l
Schlüssel für ssh
sind auf dem Freifunkrouter in /etc/dropbear/authorized_keys hinterleg.
mit cat kann man diese anzeigen und mit vi bearbeiten. Je Zeile ein Schlüssel.
cat /etc/dropbear/authorized_keys
vi /etc/dropbear/authorized_keys
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 suchen:
uci show|grep Suchwort
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 von vielen, aber nicht allen Communities im Freifunk-Umfeld benutzt wird.
Bitte beachte, dass diese deutschen Anleitungen veraltet sein können, die aktuelle Dokumentation (auf Englisch) findet sich im GitHub Wiki des Gluon-Projektes.
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
Falls die Daten sich nicht zeitnah aktualisieren, kann man das mit
/etc/init.d/alfred restart
anschieben.
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
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
grep radio1 /etc/config/wireless
if [ $? ]; then # disable auch das 5GHz radio
uci set wireless.wan_radio1.disabled=1
fi
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 set network.mesh_lan.auto=1
uci commit network
reboot
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
batctl if add eth0 # anpassen
Netzwerkport zu bat0 hinzufügen.
batctl if del eth0 # anpassen
Netzwerkport aus bat0 entfernen.
Abrufen an welchen Ports Kabel eingesteckt sind
am Freifunk-Router
swconfig dev switch0 show | grep 'link:'
am Linux PC
mit netstat -i ermitteln welche Netzwerkschnittstellen es gibt.
mit ethtool den Status der Schnittstelle anzeigen lassen.
ethtool <Netzwerkschnittstelle> | 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
vi /usr/lib/micron.d/wifioff
i (um den Schreibmodus zu aktivieren)
Für tägliche Abschaltung von 21 bis 7 Uhr:
0 21 * * * uci set wireless.ibss_radio0.disabled='1'; uci set wireless.mesh_radio0.disabled='1'; uci set wireless.client_radio0.disabled='1'; uci set wireless.wan_radio0.disabled='1';uci set wireless.ibss_radio1.disabled='1'; uci set wireless.mesh_radio1.disabled='1'; uci set wireless.client_radio1.disabled='1'; uci set wireless.wan_radio1.disabled='1';wifi
0 7 * * * uci set wireless.ibss_radio0.disabled='0'; uci set wireless.mesh_radio0.disabled='0'; uci set wireless.client_radio0.disabled='0'; uci set wireless.wan_radio0.disabled='0';uci set wireless.ibss_radio1.disabled='0'; uci set wireless.mesh_radio1.disabled='0'; uci set wireless.client_radio1.disabled='0'; uci set wireless.wan_radio1.disabled='0';wifi
ESC dann :wq
Erläutertung:
wireless.ibss - wird nur benötigt, wenn Mesh via IBSS aktiv ist
wireless.mesh - wird nur benötigt, wenn Mesh via 802.11s aktiv ist
wireless.client - schaltet das Client Netz ab
wireless.wan - wir benötigt, wenn eine private WLAN SSID ausgestrahlt wird
radio0 - 2,4GHz WLAN Modul
radio1 - 5GHz WLAN Modul
Fastd Uplink sofort für ein paar Stunden ausschalten
Manchmal braucht man die gesamte Bandbreite für eine Zeit für sich. In dem Fall braucht man nicht gleich den Stecker zu ziehen, sondern mit diesem Script kann man direkt von seinem Rechner aus auf der Konsole den Uplink für eine Zeit ausschalten:
SECONDS=3600 # one hour
ssh root@your:ipv6::addr:ess '(/etc/init.d/fastd stop && sleep '$SECONDS' && /etc/init.d/fastd start)&'
Statusseite partiell ausblenden - Privacy (2016.1.x) (-x blendet aus und +x machtes wieder sichtbar)
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
WAN auf allen Netzwerkports
uci set network.client.ifname=bat0
uci set network.wan.ifname='eth0 eth1'
uci commit network
Achtung! Je nach Router sind auch andere Befehle notwendig.
Zuerst sollte man mit
uci show network.client.ifname
uci show network.wan.ifname
sich den Altzustand anzeigen lassen und notieren. Der WDR4300 hat z.B. statt eth0 und eth1 die Interface eth0.1 und eth0.2. Zur Änderung werden folglich folgende Befehle benötigt.
uci del_list network.client.ifname=eth0.1
uci add_list network.wan.ifname=eth0.1
Danach die Änderung erneut prüfen. Und mit
uci commit
bestätigen.
ReBroadcast Mesh-on-WAN/LAN abschalten (Default on 2016.2.x)
With this option set incoming multicast payload frames on <iface> are not being rebroadcasted on <iface> again.
This option should be set on links which are known to be transitive and symmetric only, for instance point-to-point wifi longshots or wired links.
-- Linus Lüssing
uci set network.mesh_wan.mesh_no_rebroadcast='1'
uci set network.mesh_lan.mesh_no_rebroadcast='1'
uci commit network
reboot && exit
Weiterleitungs-Kosten des Mesh-Hop (Knoten) festlegen (2011.0.0 <= batman-adv < 2014.1.0)
A higher hop penalty will make it more unlikely that other nodes will choose this node as intermediate hop towards any given destination.
EX: Mobile nodes could choose a value of 255 (maximum value) to avoid being chosen as a router by other nodes.
1. Anzeigen (Default: 15)
cat /sys/class/net/bat0/mesh/hop_penalty
2. Temporär ändern, z.B. 100
echo 100 > /sys/class/net/bat0/mesh/hop_penalty
3. Persistent abspeichern, z.B. 100
uci set batman-adv.bat0.hop_penalty='100'
uci commit batman-adv
# reboot oder Schritt 2. zum Anwenden
Sendeleistung reduzieren
Mögliche Werte:
iwinfo phy0 txpower
Sendeleistung z.B. auf 12dBm reduzieren:
uci set wireless.radio0.txpower=12
uci commit
wifi
Hinweis: seit 2016.2.3 ist dort ein ungelöster Bug, weshalb das z.Z keine Wirkung hat. Workaround:
iw phy0 set txpower fixed 1200 # $wert mal 1000
POE Passthrough auf TP-Link CPE
Ab Gluon 2016.2:
uci set system.poe_passthrough=gpio_switch
uci set system.poe_passthrough.name='PoE Passthrough'
uci set system.poe_passthrough.gpio_pin='20'
uci set system.poe_passthrough.value='1'
uci commit system
http auf WAN Port verfügbar machen
uci set firewall.wan_http=rule
uci set firewall.wan_http.dest_port=80
uci set firewall.wan_http.src=wan
uci set firewall.wan_http.name=wan_http
uci set firewall.wan_http.target=ACCEPT
uci set firewall.wan_http.proto=tcp
uci commit
/etc/init.d/firewall reload
Nützliche Befehle für Freifunkfirmware und OpenWRT
Befehl
|
Beschreibung
|
ls
|
Verzeichnisinhalt listen
|
cd
|
Verzeichnis wechseln
|
cp
|
Kopieren
|
rm
|
Datei/Verknüpfung/Link löschen
|
vi
|
Textdateieditor (verlassen mit ESC,!,q,RETURN). Befehlsübersicht
|
date
|
Anzeigen und Einstellen des Datums und der Uhrzeit
|
uptime
|
zeigt die Gerätelaufzeit seit dem letzten Neustart an
|
df -h
|
Speicherauslastung der Dateisysteme anzeigen
|
free
|
Arbeitsspeicherauslastung anzeigen
|
top
|
Systemauslastung/Prozesse anzeigen (wird mit "q" wieder beendet). Manpage
|
logread
|
System-Logs anzeigen
|
ip
|
Das "Schweizer Messer" zur Netzwerkkonfiguration. Wesentliche Varianten: ip link show , ip address show , ip route show . Manpage
|
mtr
|
Paketverfolgung und Anzeige der Zwischenstationen. Eine Kombination aus ping und traceroute . Manpage
|
horst
|
Ein kleines Programm, welches u.a. die empfangenen WLAN-Netzwerkpakete mit der dazugehörigen Signalstärke anzeigt. Muss ggf. per opkg nachinstalliert werden.
|
opkg
|
Paketmanagement. Dokumentation
|
busybox
|
Kombi-Binary für alle wesentlichen Utilities. Die Manpage ist lesenswert; sollten Symlinks fehlen, per busybox cmd aufrufen.
|
nützliche One-Liner
Befehl
|
Beschreibung
|
arp | grep br-batman | wc -l
|
Gibt die der ARP-Tabelle bekannte Zahl an MAC-Adressen auf dem br-batman Device zurück.
|
arp | sort -n
|
ARP-Tabelle, erhöhte Lesbarkeit.
|
ip a | grep inet | sort
|
Filtert die ip a Ausgabe nach IP-Adressen.
|
Enter, dann ~ (Tilde), dann . (Punkt)
|
Remoteterminal hängt? Diese Sequenz bringt dich zurück.
|
ausführliche Beispiele
- Befehl um Verzeichnis zu wechseln
cd /VERZEICHNIS
- Befehl um eine Datei über http in das aktuelle Verzeichnis auf den Router zu laden
wget http://SERVER/VERZEICHNIS/DATEI
- Befehl um Dateien zu übertragen
scp datei1 datei2 user@server:/zielverzeichnis/
scp benutzerx@server1:datei1 datei2 benutzery@server2:
scp user@server:/verzeichnis/datei /lokales/zielverzeichnis/
- Befehle um auf FF-Router neue Firmware zu übertragen ( -n Konfiguration überschreiben; bitte beachten, das der FF-Router danach einen kalt Start braucht; also Strom aus und wieder an )
ssh root@ff-router
cd /tmp
wget <link zum image>
sysupgrade -nv <heruntergeladenes image>
oder
ssh root@ff-router
scp benutzerx@server1:datei.bin /tmp/
cd /tmp
sysupgrade -nv datei.bin
- Befehl zum entpacken von Tar-Archiven im aktuellen Verzeichnis
tar -xf *.tar oder tar -xzf *.tar.gz
- Befehl zum installieren vom patch im aktuellen Verzeichnis
./go
- Befehl zum installieren von Paketen aus dem aktuellen Verzeichnis
opkg install PAKET.ipk
- Befehl zum erzeugen eines Links
ln -s /verzeichnis/datei /verzeichnis/link
- Befehl zum anzeigen der eigenen IP-Adressen <Schnittstelle kann optional angegeben werden eth0 wlan0 ...>
ip addr show wlan0
- Welche Nachbarn hat der Router
wget -q -O - http://127.0.0.1:2006/neigh
- Welchen Weg nehmen Daten zum Ziel
traceroute www.freifunk.net
- Kombination aus ping und traceroute zum Beenden q drücken
mtr www.freifunk.net
- ändern des Standard-Editors auf „nano“
export EDITOR=/usr/bin/nano
- systemweit dauerhaftes Ändern des Standard-Editors auf „nano“ als root
echo 'export EDITOR=/usr/bin/nano' >> /etc/profile ;exit
- dauerhaftes Ändern des Standard-Editors auf „nano“ als user
echo 'export EDITOR=/usr/bin/nano' >> ~/.bashrc ; exit
- crontab als root bearbeiten
crontab -e
- Zwangs-Reboot des Routers zu einer bestimmten Zeit erzwingen
crontab als root bearbeiten und neue Zeile einfügen, zB. ( für täglich 4 Uhr):
0 4 * * * sync ; reboot
- Befehl um PID zu ermitteln
top
kill PID
- Befehl um Verzeichnis zu wechseln
cd /VERZEICHNIS
- Befehl um eine Datei über http in das aktuelle Verzeichnis auf den Router zu laden
wget http://SERVER/VERZEICHNIS/DATEI
- Befehl um Dateien zu übertragen
scp datei1 datei2 user@server:/zielverzeichnis/
scp benutzerx@server1:datei1 datei2 benutzery@server2:
scp user@server:/verzeichnis/datei /lokales/zielverzeichnis/
- Befehle um auf FF-Router neue Firmware zu übertragen ( -n Konfiguration überschreiben; bitte beachten, das der FF-Router danach einen kalt Start braucht; also Strom aus und wieder an )
ssh root@ff-router
cd /tmp
wget <link zum image>
sysupgrade -n <heruntergeladenes image>
oder
ssh root@ff-router
scp benutzerx@server1:datei.bin /tmp/
cd /tmp
sysupgrade -n datei.bin
- Befehl zum entpacken von Tar-Archiven im aktuellen Verzeichnis
tar -xf *.tar oder tar -xzf *.tar.gz
- Befehl zum installieren vom patch im aktuellen Verzeichnis
./go
- Befehl zum installieren von Paketen aus dem aktuellen Verzeichnis
opkg install PAKET.ipk
- Befehl zum erzeugen eines Links
ln -s /verzeichnis/datei /verzeichnis/link
- Befehl zum anzeigen der eigenen IP-Adressen <Schnittstelle kann optional angegeben werden eth0 wlan0 ...>
ip addr show wlan0
- Welche Nachbarn hat der Router
wget -q -O - http://127.0.0.1:2006/neigh
- Welchen Weg nehmen Daten zum Ziel
traceroute www.freifunk.net
- Kombination aus ping und traceroute zum Beenden q drücken
mtr www.freifunk.net
- ändern des Standard-Editors auf „nano“
export EDITOR=/usr/bin/nano
- systemweit dauerhaftes Ändern des Standard-Editors auf „nano“ als root
echo 'export EDITOR=/usr/bin/nano' >> /etc/profile ;exit
- dauerhaftes Ändern des Standard-Editors auf „nano“ als user
echo 'export EDITOR=/usr/bin/nano' >> ~/.bashrc ; exit
- crontab als root bearbeiten
crontab -e
- Zwangs-Reboot des Routers zu einer bestimmten Zeit erzwingen
crontab als root bearbeiten und neue Zeile einfügen, zB. ( für täglich 4 Uhr):
0 4 * * * sync ; reboot
batman Befehle für die Konsole
- batctl o #batman statistik
- batctl tr 10.62.x.y #traceroute über batman
Noch mehr Linux Befehle für die Konsole
nützliche One-Liner
Befehl
|
Beschreibung
|
arp | grep br-batman | wc -l
|
Gibt die der ARP-Tabelle bekannte Zahl an MAC-Adressen auf dem br-batman Device zurück.
|
arp | sort -n
|
ARP-Tabelle, erhöhte Lesbarkeit.
|
ip a | grep inet | sort
|
Filtert die ip a Ausgabe nach IP-Adressen.
|
Enter, dann ~ (Tilde), dann . (Punkt)
|
Remoteterminal hängt? Diese Sequenz bringt dich zurück.
|
Befehl
|
Beschreibung
|
clear
|
Konsole leeren
|
ls
|
Verzeichnisinhalt listen
|
cd
|
Verzeichnis wechseln
|
cp
|
Kopieren
|
rm
|
Datei/Verknüpfung/Link löschen
|
vi
|
Textdateieditor (verlassen mit ESC,!,q,RETURN). Befehlsübersicht
|
date
|
Anzeigen und Einstellen des Datums und der Uhrzeit
|
uptime
|
zeigt die Gerätelaufzeit seit dem letzten Neustart an
|
df -h
|
Speicherauslastung der Dateisysteme anzeigen
|
free
|
Arbeitsspeicherauslastung anzeigen
|
top
|
Systemauslastung/Prozesse anzeigen (wird mit "q" wieder beendet). Manpage
|
logread
|
System-Logs anzeigen
|
ip
|
Das "Schweizer Messer" zur Netzwerkkonfiguration. Wesentliche Varianten: ip link show , ip address show , ip route show . Manpage
|
mtr
|
Paketverfolgung und Anzeige der Zwischenstationen. Eine Kombination aus ping und traceroute . Manpage
|
iptraf
|
Ein kleines Programm welches den aktuellen Datenverkehr anzeigt. Läuft in der Konsole.
|
horst
|
Ein kleines Programm, welches u.a. die empfangenen WLAN-Netzwerkpakete mit der dazugehörigen Signalstärke anzeigt. Muss ggf. per opkg nachinstalliert werden.
|
opkg
|
Paketmanagement. Dokumentation
|
busybox
|
Kombi-Binary für alle wesentlichen Utilities. Die Manpage ist lesenswert; sollten Symlinks fehlen, per busybox cmd aufrufen.
|
Wichtige Linux Befehle
Benutzerverwaltung
Befehl
|
Beschreibung
|
adduser |
Hinzufügen eines Benutzers |
chsh |
Änderung der Standard-Shell des Benutzers ("change shell") |
deluser |
Löschung eines Benutzers ("delete user") |
groupadd |
Hinzufügen einer Gruppe ("add group") |
groupdel |
Löschung einer Gruppe ("add group") |
groupmod |
Bearbeitung einer Gruppe ("modify group") |
id |
Anzeige der Benutzer- und Gruppenkennung (ID) |
newgrp |
Änderung der Gruppe des aktuellen Benutzers ("new group") |
passwd |
Änderung des Passworts eines Benutzers ("password") |
usermod |
Bearbeitung eines Benutzerkontos ("modify user") |
chfn |
erweiterte Benutzerinformationen anpassen |
Grundkommandos
Befehl
|
Beschreibung
|
cat |
Verknüpfung von Dateien ("concatenate") |
cd |
Wechsel des Arbeitsverzeichnisses ("change directory") |
cp |
Kopie von Dateien oder Verzeichnissen ("copy") |
date |
Anzeige von Datum und Zeit |
echo |
Anzeige eines Textes |
exit |
Ende der Sitzung |
info |
Anzeige einer Hilfe-Datei |
ln |
Link zu einer Datei oder einem Verzeichnis ("link") |
ls |
Auflistung von Dateien ("list") |
man |
Ausgabe der Handbuchseite zu einem Befehl oder einer Anwendung ("manual") |
mkdir |
Erzeugung von Verzeichnissen ("make directory") |
mmv |
Multiple move (Datei-Mehrfachoperationen mit Hilfe von Wildcard-Mustern) |
mv |
Kopieren einer Datei und Löschen der Ursprungsdatei ("move"); mv im aktuellen Verzeichnis ausgeführt: Umbenennung einer Datei |
pwd |
Anzeige des aktuellen Verzeichnisses ("print working directory") |
rm |
Löschen von Dateien und Verzeichnisse ("remove") |
rmdir |
Löschen eines leeren Verzeichnisses ("remove directory") |
sudo |
Root-Rechte für den Benutzer ("substitute user do") |
touch |
Änderung der Zugriffs- und Änderungszeitstempel einer Datei oder eines Verzeichnisses (auch: Erstellen von Dateien) |
unlink |
Löschen einer Datei |
Netzwerk
Befehl
|
Beschreibung
|
dig |
Namensauflösung (DNS) |
ifconfig |
Anzeigen und Konfiguration von Netzwerkgeräten ("interface configuration") |
iwconfig |
Werkzeug für WLAN-Schnittstellen |
ip |
der Nachfolger von ifconfig |
iw |
der Nachfolger von iwconfig |
netstat |
Auflistung offener Ports und bestehender Netzwerkverbindungen ("network statistics") |
ping |
Prüfen der Erreichbarkeit anderer Rechner über ein Netzwerk |
route |
Anzeige und Änderung der Route (Routingtabelle) |
traceroute |
Routenverfolgung und Verbindungsanalyse |
Dateiwerkzeuge
Befehl
|
Beschreibung
|
basename |
Rückgabe des Dateinamens |
blkid |
Anzeige der UUID angeschlossener Laufwerke (siehe auch lsblk) |
comm |
Zeilenweiser Vergleich sortierter Dateien |
cut |
Spaltenweise Manipulation von Textdaten |
dd |
Bit-genaues Kopieren von Datenträgern |
diff |
Vergleich des Inhalts zweier Dateien (siehe auch patch für das Anwenden eines "Diffs") |
dirname |
Rückgabe des Pfades |
find |
Suche nach Dateien |
grep |
Durchsuchen von Dateien |
locate |
Suche nach Dateien mit Hilfe der Datenbank locatedb |
lsblk |
Anzeige von Informationen zu Speichermedien ("list block devices") |
lsof |
Anzeige offener Dateien ("list open files") |
md5sum |
Ermittlung und Überprüfung der MD5-Prüfsumme von Dateien |
mount |
Einhängen eines Dateisystems |
umount |
Aushängen eines Dateisystems |
rename |
Umbenennung von Dateien |
rsync |
Datensynchronisation |
shred |
Sicheres Löschen von Daten |
sort |
Sortieren von Dateien nach vorgegebenen Kriterien |
split |
Aufteilung großer Dateien in mehrere kleine |
tre-agrep |
Werkzeug zur "unscharfen" Suche mit regulären Ausdrücken |
tree |
Verzeichnishierarchie rekursiv als Baumstruktur anzeigen |
uniq |
Ausgabe einer sortierten Datei ohne doppelte Zeilen |
updatedb |
Aktualisierung der locate-Datenbank ("update database") |
Pager
Befehl
|
Beschreibung
|
head |
Ausgabe der ersten Zeilen einer Datei |
less |
Scrollfähige Anzeige einer Textdatei |
more |
Wie less, aber ohne die Fähigkeit, rückwärts zu scrollen |
tail |
Ausgabe der letzten Zeilen einer Datei |
Prozesssteuerung
Befehl
|
Beschreibung
|
nice |
Vorgabe der Priorität eines Prozesses |
nohup |
Lösung eines Prozesses aus der Sitzung, die ihn aufruft |
pgrep |
Anzeige der Prozessidentifikationsnummer(n) zu gegebenen Prozessnamen/regulärem Ausdruck |
pidof |
Anzeige der Prozessidentifikationsnummer(n) zu gegebenen Prozessnamen |
renice |
Änderung der Priorität eines Prozesses zur Laufzeit |
schedutils |
Befehle für die fortgeschrittene Prozesskontrolle |
Rechte
Befehl
|
Beschreibung
|
chattr |
Veränderung von Datei-Attributen und Rechten auf ext2- und ext3-Dateisystemen ("change attributes") |
chgrp |
Festlegung der Gruppenzugehörigkeit von Dateien ("change group") |
chmod |
Veränderung der Zugriffsrechte von Dateien ("change mode") |
chown |
Festlegung des Besitzers und der Gruppenzugehörigkeit von Dateien ("change ownership") |
Systemüberwachung
Befehl
|
Beschreibung
|
dmesg |
Kernelmeldungen auf den Bildschirm ausgeben lassen; nützlich bei der Fehlersuche |
at |
Einstellung von einmalig durchzuführenden zeitgesteuerten Skript-/Befehlsaufrufen |
crontab |
Einstellung von zeitgesteuerten Skript-/Befehlsaufrufen |
df |
Ausgabe des Speicherplatzes aller eingehängten Laufwerke ("disk free") |
du |
Ausgabe des Speicherverbrauchs von Verzeichnissen ("disk usage") |
free |
Ausgabe der Arbeitsspeicherauslastung |
kill |
Beendigung eines durch die Prozess-ID gekennzeichneten Prozesses |
killall |
Beendigung von nach dem Prozessnamen gekennzeichneten Prozessen |
pkill |
Beendigung eines nach seinem Namen/durch einen regulären Ausdruck gekennzeichneten Prozesses |
service |
service DIENSTNAME [OPTION] (start, stop, restart, status usw.) |
ps |
Ausgabe aller laufenden Prozesse ("process status") |
pstree |
Ausgabe aller laufenden Prozesse in Baumform |
script |
Terminalsitzungen mitschneiden (siehe auch scriptreplay) |
stat |
Zeitstempel von Dateien und Ordnern anzeigen |
top |
Ausgabe der Prozessorauslastung |
uptime |
Angabe der Laufzeit und Auslastung des Computers |
vmstat |
erste Analyse von Engpässen |
Nützliche Befehle ohne Kategorie
Befehl
|
Beschreibung
|
alias |
Vergabe von Kurznamen an Kommandos |
apropos |
Anzeige von Hilfe-Themen zu einem Stichwort |
chroot |
Ausführung eines Kommandos/einer interaktiven Shell in einem angegebenen Wurzelverzeichnis |
clear |
Löschen des momentanen Bildschirminhalts |
dircolors |
Anpassung der Farben von ls |
logger |
Einträge in /var/log/syslog erstellen |
lscpu |
Anzeige von Prozessor-Informationen ("list cpu") |
lshw |
Anzeige von Hardware-Informationen ("list hardware") |
lspci |
Anzeige von Informationen zur PCI-Hardware ("list pci") |
lsusb |
Anzeige von Informationen zur USB-Hardware ("list usb") |
pinfo |
Anzeige einer Hilfe-Datei an (ähnlich wie info) |
pv |
Ein Programm zum Betrachten des Fortschritt von Operationen durch Pipes |
reboot |
Rechner neu starten |
rtcwake |
Rechner automatisch Starten bzw. Herunterfahren |
sed |
Nicht-interaktiver Editor |
seq |
Sequenzen von Zahlen im Terminal erzeugen |
shutdown |
Herunterfahren des Systems |
sleep |
Pausieren von Prozessen |
tasksel |
Installationshilfe für die Kommandozeile |
tee |
Eingaben auf mehrere Ausgaben verteilen |
time |
Messung der Laufzeit von (Shell-)Befehlen |
tr |
Lesen, Umwandeln und Neuausgabe von Zeichenkombinationen ("translate"/"transliterate") |
uname |
Ausgabe von Systeminformationen ("unix name") |
wall |
Mitteilung an alle auf dem System eingeloggten Nutzer senden |
watch |
Periodischer Aufruf anderer Kommandos |
wc |
Zählung von Wörten, Zeilen und Zeichen in Textdateien ("word count") |
whatis |
Anzeige der Kurzbeschreibung eines Programms |
whereis |
Sucht das Binary (ausführbare Datei), den Quellcode und die man-Page eines Programms |
which |
Anzeige der Datei, die bei Eingabe eines Befehls ausgeführt wird |
who |
Anzeige von Informationen über angemeldete Benutzer |
whoami |
Anzeige des Benutzer, unter dem gerade gearbeitet wird |
xargs |
Anwendung eines Kommandos auf eine Liste von Dateien/Parametern, die von der Standardeingabe oder einer Datei kommen |
Unnütze Befehle
Befehl
|
Beschreibung
|
ddate |
Ausgabe des Datums im discordischen Format |
fortune |
Ausgabe kurzer Sinnsprüche |
sl |
Spaßprogramm (bei versehentlich verdreht eingegebenem ls) |
vi - der Standard-Editor unter Linux/Unix
Beschreibung
vi ist ein konsolenbasierter Texteditor. Er ist gut konfigurierbar und arbeitet sehr effektiv. Da seine Benutzbarkeit sich nicht intuitiv erschließt, ist es erforderlich, die wichtigsten Kommandos zu kennen.
Einige Vorteile von vi
- vi ermöglicht ein schnelles und effektives Editieren von Text-Dateien.
- Ein zeichengenaues Editieren ist möglich. Auch Sonderzeichen können dargestellt werden.
- vi ist als Standard-Editor auf jedem Unix/Linux-System vorhanden.
- Der Editor kann grundsätzlich beliebig große Text-Dateien bearbeiten.
- Für die Nutzung ist keine grafische Benutzeroberfläche notwendig.
Im vi sind die beiden Modi command und
insert zu unterscheiden. Im command-Modus können
Positionier-, Lösch-, Such- und viele andere Operationen vorgenommen
werden. Das Editieren von Text ist nur im insert-Modus möglich.
Das Umschalten vom insert- in den command-Modus erfolgt immer mit der
ESC-Taste.
Start der Anwendung
Der Editor wird durch die Eingabe des Kommandos vi dateiname entweder auf einem Konsolbildschirm oder in einem Kommandoeingabefenster aufgerufen.
Für dateiname sollte natürlich der gewünschte Dateiname gewählt werden.
Beispiel
vi brief
Aufgerufen in einem Eingabefenster würde nun folgendes Bild erscheinen.
Der Cursor befindet sich in der linken oberen Ecke, in der letzten Zeile stehen Statusinformationen wie Dateiname und Zeilen/Spaltennummer. Der Editor startet grundsätzlich immer im command-Modus. Will man nun Text schreiben, muss der vi in den insert-Modus umgeschaltet werden. Das Umschalten erfolgt immer durch Eingabe bestimmter Zeichen.
Umschalten in den insert-Modus
a | Einfügen nach dem Cursor |
i | Einfügen vor dem Cursor |
A | Einfügen am Zeilenende |
I | Einfügen am Zeilenanfang |
o | Einfügen einer neuen Zeile nach der aktuellen Zeile |
O | Einfügen einer neuen Zeile vor der aktuellen Zeile |
Erst nach Eingabe eines der obigen Kommandos wird der Editor in den insert-Modus geschaltet. Danach kann Text eingegeben werden. Um wieder auf den command-Modus zu kommen, muss die ESC-Taste gedrückt werden.
Positionieren des Cursors und Scrolling
h | Cursor ein Zeichen nach links |
l | Cursor ein Zeichen nach rechts |
j | Cursor eine Zeile nach unten |
k | Cursor eine Zeile nach oben |
w | Cursor zum nächsten Wort oder Sonderzeichen |
b | Cursor zum vorhergehenden Wort oder Sonderzeichen |
^ | Cursor zum Anfang der Zeile (erstes sichtbares Zeichen) |
$ | Cursor zum Ende der Zeile |
G | Cursor zum Ende der Datei |
1G | Cursor zum Anfang der Datei |
Strg f | Scrollen vorwärts |
Strg b | Scrollen rückwärts |
Suchen von Textstellen
/muster | Suche des Textmusters vorwärts |
?muster | Suche des Textmusters rückwärts |
n | Suche wiederholen |
N | Suche in umgekehrter Richtung wiederholen |
Kopieren und Einfügen
yw | Kopiert das Wort auf dem der Cursor steht |
yy | Kopiert die ganze Zeile in der der Cursor steht |
p | Fügt den zuvor kopierten Text nach der aktuellen Cursorposition ein |
P | Fügt den zuvor kopierten Text vor der aktuellen Cursorposition ein |
Löschen von Text
x | Löscht genau das Zeichen unter dem Cursor |
dh | Löscht das Zeichen links vom Cursor |
dl | Löscht das Zeichen rechts vom Cursor |
dw | Löscht das Wort auf dem der Cursor steht |
dd | Löscht die gesamte Zeile |
dG | Löscht von der Cursorposition bis zum Datei-Ende |
Speichern und Beenden
:w | Speichern des Textes in der Datei (Editor wird nicht verlassen) |
:wq | Speichern des Textes und Beenden des Editors |
:x | Speichern des Textes und Beenden des Editors |
:q | Beenden ohne Abspeichern (falls Text nicht geändert wurde) |
:q! | Beenden ohne Abspeichern |
Sonstige nützliche Kommandos
. | Wiederholung der letzten Aktion |
u | undo der letzten Änderung |
U | undo aller Änderungen in der aktuellen Zeile |
:r datei | Einfügen einer Datei an der Cursorposition |
Durch das Setzen diverser Parameter kann die Arbeitsweise des vi-Editors modifiziert werden. Diese Parameter können interaktiv während des Editierens eingegeben werden. Sollen die Parameter bei jedem Aufruf von vi zur Verfügung stehen, so sind sie in die Datei .exrc einzutragen.
Beispiele
:set number
Obiges Kommando veranlasst den Editor, die Zeilennummern anzuzeigen.
:set list
Durch dieses Kommando werden im Editor auch nicht sichtbare Zeichen angezeigt (z.B. wird ein Linefeed durch $ gekennzeichnet, ein Tabulatorzeichen mit ^I). Mit einem vorangestellten no werden diese Modifikationen wieder rückgängig gemacht (z.B. :set nolist)