Kommandozeileninterpreter

Ein Kommandozeileninterpreter ist ein Computer Programm, welches gewöhnliche Texteingaben abfängt und sie im Kontext eines Betriebssystems einer Programmier- oder einer Skriptsprache interpretiert. Die Eingabe ist grundsätzlich Zeilen-basiert. Die Mensch-Maschine-Interaktion findet allein durch die Ein- und Ausgabe von "Kommandozeilen" statt. Häufig angetroffene Bezeichnungen sind Konsole oder Shell, auch wenn letzteres technisch nicht korrekt ist.

Die default unix shell in OpenWrt ist der Busybox-fork der Debian Implementation der Almquist shell (siehe → Übersicht).

Start

Gegen Ende des Boot Prozesses wird der init daemon gestartet, das könnte init oder systemd oder upstart sein, OpenWrt benutzt zur Zeit procd. Der Init-Daemon startet gemäß den Skripten im Verzeichnis /etc/rd.d alle dort verzeichneten Programme, unter anderem auch die gewählte Shell. Sobald die Shell gestartet ist, läuft sie im Hintergrund und wartet auf Eingaben über die Tastatur und gibt auch ein mehr oder weniger buntes Bild auf dem Monitor aus.

Aber die allermeiste Hardware, auf denen OpenWrt installiert ist, hat weder Tastatur noch Grafikkarte. Wir können die Shell also nur mit Hilfe eines PCs ansprechen. Diesen verbinden wir entweder lokal über die Serielle Schnittstelle oder über das Netz über einen Ethernet Port mit dem embedded Gerät.

Netz

Um über das Netz auf die Shell zuzugreifen benötigen wir offensichtlich zwei weiteres Programme: eines, welches auf dem PC läuft und die auf dem PC gemachten Eingaben, einem üblichen Netzwerkprotokoll gehorchend, über das Netzwerk schickt, und ein zweites, welches auf dem OpenWrt-Gerät läuft und die Daten vom ersten empfängt und sie an die Shell weiterleitet. Das erste Programm wird Klient genannt, das zweite Server oder auch Daemon.

Netzwerkprotokolle der Wahl sind telnet und SSH. Beide folgen dem server ↔ client Schema. Als Server werden telnetd für das Telnet Protokoll und dropbear für das SSH Protokoll eingesetzt. Als Klienten können Sie PuTTY einsetzen, aber WinSCP ist auch empfehlenswert! Letzterer funktioniert mit dropbear nicht ganz 100%ig, aber Konqueror mit fish:// tut wunderbar! Zum Nachlesen siehe FISH (Files transferred over shell protocol).

(OpenWrt beinhaltet auch einen SSH-client ssh und einen telnet-client telnet, für den Fall, dass man sich von OpenWrt aus, woanders einloggen möchte.)

Note: Bevor firstlogin durchgeführt worden ist, ist nur telnetd verfügbar, danach ausschließlich dropbear.

Im Fall eines erfolgreichen Logins, wird dropbear (LOGs generieren) und eine weitere Instanz der spezifizierten Shell aufrufen. Diese Shell gehört dem user und läuft mit seinen Rechten.

Konfiguration

In OpenWrt kann man z.B. in der Datei /etc/profile Umgebungsvariable and Aliase setzen. Man muss das natürlich nicht tun, denn OpenWrt kommt bereits fertig konfiguriert. Man könnte:

Kopieren & Einfügen

Wenn man sich mit PuTTY verbunden hat, wird mit der Maus markierter Text automatisch in die Zwischenablage kopiert, die bekannte Tastenkombination [Strg]+[C] ist also nicht notwendig und funktioniert denn auch nicht! Anschließend kann man Inhalte aus der Zwischenablage mit [Strg]+[V] wo einfügen, etwa in einem offenen Firefox. Umgekehrt würde man auf die gewöhnliche Art und Weise Text kopieren, etwa mit [Strg]+[C] und anschließend durch einmaliges drücken der [Rechten Maustaste] in PuTTY einfügen.

Numpad in PuTTY und Vi

Damit das gescheit läuft, muss man in PuTTY in "Terminal""Features" gehen und "Disable application keypad mode" anwählen.

Befehle eingeben

  • Für etwas Orientierung bezüglich der Verzeichnisstruktur, sollte der Artikel flash.layout sorgen.

Nach dem Login befindet man sich grundsätzlich in seinem $HOME Verzeichnis, das ist /root für den Benutzer root und wäre /home/tristan für Benutzer tristan, usw. Befehle:

Command Memorize Description
pwd print working directory Gibt das aktuelle Verzeichnis samt Pfad aus
cd change directory Wechselt in ein anderes Verzeichnis im Verzeichnisbaum cd .., cd /, cd /etc/init.d, cd /tmp
ls list Gibt eine Liste mit den Dateien im aktuellen Verzeichnis aus, ls -l /etc
cat concatenate Gibt den Inhalt einer Datei aus: cat /etc/config/network, cat /tmp/dhcp.leases
cp copy erstellt eine Kopie der angegebenen Datei, cp network network.bak
mv move erstellt eine Kopie der angegebenen Datei und löscht das Original, mv /tmp/opkg-lists/snapshots /mnt/sda1/opkg/packages
df disk free Zeigt den verfügbaren Speicher an. Um mit der Ausgabe etwas anfangen zu können, lesen flash.layout
free verfügbarer Arbeitsspeicher
uptime Vergangene Zeit seit dem letzten Reboot
dmesg Gibt den Inhalt des Kernel Ring Puffers aus
logread Gibt den Inhalt des Ringpuffers an, den syslogd benutzt
cat /proc/version
cat /proc/meminfo
detaillierte Arbeitsspeichernutzung
cat /proc/cpuinfo
Informationen über die CPU
cat /proc/mtd
cat /proc/partitions
cat /proc/net/nf_conntrack
cat /proc/cmdline
cat /proc/modules

Es gibt eine Unmenge an befehlszeilen Befehlen mit einer Vielfalt an Optionen. Auf einer "vollen" Linux Distribution würden Sie man befehl oder befehl –help eingeben, um die manpage zu dem Befehl angezeigt zu bekommen. OpenWrt ist jedoch minimalistisch und beinhaltet kein man. Im Bedarfsfall lesen Sie die man-Pages auf dem GNU/Linux host, auf dem Sie arbeiten, oder online: z.B. auf http://man.cx/. Man Pages befinden sich in einem steten Prozess in andere Sprachen übersetzt zu werden.

Tip Im Firefox, können Sie sich keywords einrichten, um die Benutzung zu vereinfachen. Erstellen Sie ein neues Bookmark und setzen Sie http://man.cx/?page=%s als Adresse sowie man als Schlüsselwort ein.

Dateien bearbeiten

Um eine Datei zu bearbeiten benötigen Sie einen Editor, für Text-Dateien eigenen sich Texteditoren am besten ;-)

Der beinhaltete Standard Texteditor ist vi. Bis man sich an vi gewöhnt, erscheint seine Bedienung weder intuitiv noch geschickt.

  • vi hat zwei Modi: Befehlsmodus und Einfügemodus.
  • um in den Befehlsmodus zu wechseln, drücken Sie einmal die [Esc] (Escape Taste)
  • um in den Einfügemodus zu wechseln, drücken Sie entweder die Taste [i] (für insert) oder die Taste [a] (für append)
  • vi startet im Befehlsmodus

Vi starten

Sie starten vi indem Sie vi oder vi /etc/config/network oder vi firewall.user eingeben.

Bearbeiten

Um die geladene Datei zu bearbeiten, müssen Sie im Einfügemodus sein. Drücken Sie [i] oder [a].

Vi beenden

Um vi zu beenden, müssen Sie im Befehlsmodus sein. Drücke Sie zuerst [Esc] und geben anschließend einen Befehl ein:

  • :w um die Datei aus dem Arbeitsspeicher auf den Flash zu schreiben, das würde die alte Datei überschreiben.
  • :q um vi zu beenden, ohne zu speichern
  • :wq! um das überschreiben der alten Datei zu erzwingen und anschließend Vi zu beenden
  • :%s/Muster1/Muster2/g um Muster1 durch Muster2 in der ganzen Datei zu ersetzen

Vi konfigurieren

Vi kann im Befehlsmodus konfiguriert werden, indem gewissen Variablen gesetzt werden, z.B.:

  • :set ai = automatische Zeileneinrückung EIN (default)
  • :set noai = automatische Zeileneinrückung AUS

Alternative Texteditoren

Wenn Sie mit vi nicht klarkommen, probieren Sie joe, mg, nano, vim, vim-full oder zile.

  • und es sind möglicherweise noch weitere Texteditoren in den OpenWrt repos verfügbar ;-)
  • wenn Sie sich über WinSCP/Konqueror einloggen, können Sie die Dateien natürlich von Editoren auf ihrem PC berarbeiten

Skriptsprache

Jeder Kommandozeileninterpreter versteht Skriptsprache.

Skripte ausführen

Um ein Skript auszuführen, machen Sie die Datei zuerst ausführbar: chmod 755 file-name und rufen sie entweder mit dem Interpreter auf sh Dateiname oder geben den ganzen Pfad ein /etc/firewall.user wenn es nicht ausreicht, nur den Dateinahmen einzugeben.

Datei Manager

Vielleicht mögen Sie sich mit mc oder mit deco anfreunden.

Back to top

de/doc/howto/user.beginner.cli.txt · Last modified: 2013/11/15 10:27 (external edit)