Kommandozeilenschnittstelle (CLI)Der Router verfügt über eine Kommandozeilen-Schnittstelle (CLI, Command Line Interface) zur Konfiguration aus dem lokalen Netz oder aus der Ferne mit Telnet oder SSH. Über die CLI wird zeilenweise ein Parameter nach dem anderen eingegeben und im geöffneten Profil gespeichert. Die Änderungen am Profil werden damit im laufenden Profil noch nicht wirksam. Das Profil muss noch aktiviert, d.h. zum laufenden Profil werden, damit die Änderungen der Konfiguration wirksam werden. Aktivieren der CLIBevor ein Zugriff auf den Router mit Telnet oder SSH möglich ist, muss dies im Menü Administration auf der Seite CLI entsprechend konfiguriert werden. Dazu muss der Zugang über Telnet oder SSH aktiviert werden und bei aktiver Firewall eine entsprechende Ausnahmeregel vorhanden und aktiv sein. Eine geeignete Firewall-Regel ist im Menü Netzfilter auf der Seite IP-Filter mit der Beschreibung Local access to command line via SSH vorbereitet und muss nur noch auf aktiv gesetzt werden. AuthentifizierungDie Authentifizierung erfolgt über eine Benutzername/Passwort-Kombination, die im Menü Administration auf der Seite Benutzer verwaltet wird. SyntaxDie Syntax eines Parameters setzt sich aus den Sektionen sowie dem Parameter, jeweils getrennt durch einen Punkt zusammen. Die Sektionen entsprechen der Menüstruktur im Web-Interface. Der Parameter Kommandozeile via SSH aktivieren im Menü Administration auf der Seite CLI hat beispielsweise folgende Syntax: Die verfügbaren Sektionen und Parameter hängen vom jeweiligen Gerät und den installierten Einsteckkarten ab. Mit Hilfe der Autovervollständigung durch die Tabulator-Taste können diese bequem angezeigt werden. Ein Druck auf die Tabulator-Taste zeigt alle verfügbaren Sektionen der ersten Ebene an (entspricht den Menüs im Web-Interface). Die Eingabe des/der ersten Anfangsbuchstaben einer Sektion gefolgt von der Tabulator-Taste vervollständigt die Sektion und ein weiterer Druck auf die Tabulator-Taste zeigt alle verfügbaren Sektionen der nächsten Ebene an (entspricht den Seiten dieses Menüs im Web-Interface). Ein weiterer Druck auf die Tabulator-Taste zeigt mögliche weitere Sektionen oder die verfügbaren Parameter an. Bei Listen wird automatisch die geöffnete eckige Klammer ([) ausgegeben. Wenn diese durch einen Punkt ersetzt wird, gibt ein weiterer Druck auf die Tabulator-Taste die verfügbaren Listen-Funktionen aus. Zeilen, die mit einer Raute # beginnen, werden ignoriert und können als Kommentare verwendet werden. Siehe dazu auch die Seite Befehlsreferenz. Aktivieren eines ProfilsWird ein Profil mit der CLI wie im Folgenden beschrieben verändert, werden die Änderungen erst wirksam, wenn das Profil aktiviert wird, d.h. zum laufenden Profil wird. Auslesen von WertenDer aktuelle Wert eines Parameters wird durch Eingabe des Parameters gefolgt von der Eingabe-Taste angezeigt. Wird nur die übergeordnete Sektion angegeben, so werden alle darunterliegenden Parameter ausgegeben. Beispiel: Eingeben von WertenEin neuer Wert wird einem Parameter durch Eingabe des Parameters gefolgt von einem Gleichheitszeichen und dem neuen Wert übergeben. Beispiel: Umbenennen von EinträgenEin Eintrag, wie der Name eines Profils oder Containers, kann durch Eingabe des alten Namens und des neuen Namens, getrennt durch ein Leerzeichen, umbenannt werden.
Beispiel für das Umbenennen des Profils "quick_start_profile" in "new_profile": Bearbeiten von ListenNeben festen Parametern verfügt der Router auch über endlos erweiterbare Listen, wie beispielsweise die der angelegten Benutzer. Die einzelnen Einträge einer Liste werden der Reihe nach durchnummeriert und sind über diese Positionsnummer ansprechbar. Beispielsweise wird der Benutzername des zweiten Eintrags der Benutzer-Liste ausgegeben durch den Befehl: Ausgabe der ListengrößeMit dem Parameter size wird die Anzahl der Listeneinträge ausgegeben. Beispiel für die Anzahl der Benutzer: Hinzufügen eines ListeneintragsMit dem Parameter add wird einer Liste ein Eintrag am Ende hinzugefügt. Ab Version 2.6 können durch die Angabe einer Anzahl auch mehrere Listeneinträge mit einem Befehl hinzugefügt werden. Beispiel für das Hinzufügen eines weiteren Benutzers: Löschen eines ListeneintragsMit dem Parameter delete=[x] wird der Eintrag mit der Nummer [x] in der Liste gelöscht.
Mit delete=all werden alle Einträge in der Liste gelöscht.
Mit delete=last wird der letzte Eintrag gelöscht.
Beispiel für das Löschen des Eintrags Nr. 3 in der Liste der Benutzer: Verschieben eines Listeneintrags nach obenMit dem Parameter sort_up=[x] wird der Eintrag mit der Nummer [x] in der Liste um eine Position nach oben (auf die Position [x-1]) geschoben. Beispiel für das Verschieben des Eintrags Nr. 3 in der Liste der Benutzer nach oben: Verschieben eines Listeneintrags nach untenMit dem Parameter sort_down=[x] wird der Eintrag mit der Nummer [x] in der Liste um eine Position nach unten (auf die Position [x+1]) geschoben. Beispiel für das Verschieben des Eintrags Nr. 3 in der Liste der Benutzer nach unten: Kopieren eines ListeneintragsMit dem Parameter copy=[x] wird der Eintrag mit der Nummer [x] in der Liste kopiert.
Dabei wird ein identischer Listeneintrag ans Ende der Liste angehängt.
Beispiel für das Kopieren des Eintrags Nr. 3 in der Liste der Benutzer: Listen innerhalb von ListenManche Funktionen des Routers erfordern Listen innerhalb von Listen. Die Bearbeitung erfolgt analog zu den übergeordneten Listen auf der entsprechenden untergeordneten Sektionsebene. Beispiel für die Abfrage des Verbindungs-Check-Intervalls vom Interface auf Position 2 der WAN-Kette auf Position 1: Multiline-WerteEs besteht auch die Möglichkeit, mehrzeilige Werte innerhalb der CLI einzugeben. Dies ist beispielsweise erforderlich, um Zertifikate, Schlüssel oder Texte für E-Mails und SMS hochzuladen. Diese Werte müssen dann mit -----BEGIN[ID]----- beginnen und mit -----END[ID]----- enden. [ID] kann beliebig gewählt werden, muss aber für BEGIN und END gleich sein. Beispiel für den Text der Meldung 1: Anzeigen von Status-InformationenDie im Menü Status des Web-Interface angezeigten Informationen können auch über die CLI ausgelesen werden. Status-Informationen können auch in Meldungen als Aktualwerte eingefügt werden. Beispiel für die Anzeige der Spannung an Eingang 1 der LTE-Karte in Slot 2: Anzeigen von Log-DateienBei der Anzeige der Log-Dateien werden die anzuzeigenden Logs durch Kommata getrennt als Indices der Endlosliste view übergeben. Werden keine Log-Dateien angegeben, werden alle Log-Dateien ausgegeben. Es werden jeweils die letzten 10 Zeilen der ausgewählten Log-Dateien ausgegeben. Beispiel: Filtern der Log-Datei-AusgabeZur Filterung der ausgegebenen Log-Dateien steht das Programm grep zur Verfügung. Die in grep verfügbaren Parameter werden durch den Parameter -h angezeigt. Sie können auch kombiniert werden. Anzeigen der Ereignis-abhängigen InformationenIn einer interaktiven CLI-Sitzung können alle verfügbaren Parameter zu den Ereignis-abhängigen Informationen durch die Autovervollständigung (mit der Tabulator-Taste, siehe Syntax oben) angezeigt werden: DebuggingManuelles Auslösen einer AktionDas manuelle Auslösen einer Aktion dient zum Testen ihrer Wirkung ohne erst abwarten zu müssen, bis das konfigurierte Ereignis eintritt. Je nach Aktion müssen zuerst gewisse Parameter gesetzt werden, mit denen dann die Aktion ausgeführt wird. Beispiel für das Schließen von Ausgang 1 der Karte in Slot 3: Analyse der NetzwerkverbindungenDie zum Debugging verfügbaren Befehle werden dem Parameter tool als Wert übergeben. Dafür stehen die sechs Programme ping, ping6, traceroute, traceroute6, nslookup und tcpdump zur Verfügung. Dahinter wiederum werden die eigenen Parameter des Debugging-Werkzeugs übergeben. Die Syntax des Debugging-Werkzeugs wird durch den Parameter -h angezeigt. Die Ergebnisse werden sofort angezeigt. Die Ausführung der Befehle kann mit Esc oder Strg + C sofort abgebrochen werden. Beispiel für das Versenden von 3 Pings hintereinander an die Adresse 192.168.1.111: Ausführen eines AT-BefehlsDer zum Ausführen von AT-Befehlen erforderliche Befehl at_command wird dem Parameter tool als Wert übergeben. Dahinter folgt das verwendete Modem und dahinter wiederum wird der AT-Befehl übergeben. Die Ergebnisse werden sofort angezeigt. Beispiel für das Identifizieren des Modem-Chipsatzes in Slot 2: AbkürzungenZur Reduzierung des Eingabeaufwands stehen zusätzlich zur Autovervollständigung Abkürzungen für eine (teilweise) Wiederholung des letzten Befehls zur Verfügung. Mit dem : (Doppelpunkt) werden alle Sektionen des letzten Befehls bis zum letzten Punkt ersetzt. Mit dem . (Punkt) wird je eine Sektion des letzten Befehls an der Stelle des Punkts ersetzt. Beispiele: Lua-ModusZum Ausführen von Lua-Skripten auf dem Router können diese in ASCII-Konfigurationsdateien oder im CLI übergeben werden.
Neben dem üblichen Funktionsumfang (siehe Lua 5.3 Reference Manual) stehen im Lua-Modus folgende Befehle zur Verfügung: cli, cli_log, lua_log, netmask_to_cidr, cidr_to_netmask, ip_in_net, sleep Der Lua-Modus wird mit -----LUA----- betreten und verlassen. Der Lua-Modus ermöglicht die Ausführung komplexer Lua-Skripte. Die Lua-Funktion "require" ermöglicht es, innerhalb eines Lua-Skripts weitere Lua Bibliotheken zu laden und auszuführen. Diese Dateien können wie eine reguläre ASCII-Konfigurationsdatei auf den Router geladen werden, müssen jedoch die Dateiendung ".lua" haben. Außerdem muss zu Beginn der Datei der Lua-Modus mit -----LUA----- betreten werden. Beim Aufruf von "require" wird nur der Dateiname ohne die Dateiendung übergeben. Mit dem Befehl cli werden innerhalb von Lua Befehle an das CLI übergeben.
Beispielsweise setzt folgender Befehl den Standort auf "Regensburg": Mit dem Befehl cli_log erfolgt ein Eintrag in das CLI-Log.
Beispielsweise wird mit folgendem Befehl die Zeichenfolge "abc" in das CLI-Log geschrieben: Mit dem Befehl lua_log erfolgt ein Eintrag in das Lua-Log.
Das Lua-Log wird erst erzeugt, wenn Einträge durch diesen Befehl erfolgen.
Der Router selbst schreibt keine Einträge in dieses Log.
Beispielsweise wird mit folgendem Befehl die Zeichenfolge "xyz" in das Lua-Log geschrieben: Mit dem Befehl ip_in_net kann abgefragt werden, ob sich eine bestimmte IP-Adresse in einem Netzwerk befindet. Beispielsweise kann man mit folgendem Befehl prüfen, ob sich die IP-Adresse 192.168.1.13 im Netzwerk 192.168.1.0 befindet (die Angabe des Netzwerks kann im CIDR-Format oder mit Netzmaske erfolgen): Mit dem Befehl cidr_to_netmask erfolgt die Umrechnung einer CIDR-Notation in eine Netzmaske. Beispiel: Mit dem Befehl netmask_to_cidr erfolgt die Umrechnung einer Netzmaske in CIDR-Notation. Beispiel: Mit dem Befehl sleep lässt sich die Ausführung des Lua-Skripts um die im Argument angegebene Anzahl von Sekunden anhalten. Beispielsweise kann man mit folgendem Befehl die Ausführung um 0,7 Sekunden verzögern: In den Configuration Guide für den Router finden Sie praktische Beispiel für die Arbeit mit Lua. Beenden der CLI-SitzungDie CLI-Sitzung wird beendet durch die Eingabe von exit gefolgt von der Eingabe-Taste. |