8. Command Line Interface

CLI – interfejs linii komend oferuje jednolity interfejs kontrolujący router i może być wykorzystany do pobrania/wysłania parametrów, wprowadzenia zmian, restartów serwisów albo do przeprowadzenia innych zadań systemowych. CLI powinno być uruchomione z komendy cli -i z shella systemowego albo kiedy zalogowany jest użytkownik root. Lista dostępnych komend może być wyświetlona przez wpisanie  cli –l. Lista komend pokaże się automatycznie w trybie interaktywnym kiedy zaloguje się użytkownik admin.

~ $ cli
Name:     
          cli (Command Line Utility)

Usage:    
          [-ilh] <command>
~ $ cli -i
MIDGE Command Line Interface (version 0.1)
(C) Copyright RACOM s.r.o, Czech Republic

Enter 'help' for a list of available commands
or hit the TAB key for auto-completion.

Ready to serve.

>

Listę komend CLI obsługuje dodatkowo klawisz TAB, jeśli wprowadzisz fragment słowa i nadusisz klawisz TAB system rozszerzy / wyświetli dodatkowe komendy powiązane z hasłem.

Każda sesja CLI automatycznie wyloguje się po pewnym czasie bezczynności, domyślnie 10 minut. Aby automatyczne wylogowanie wyłączyć wprowadź komendę no-autologout.

Z CLI wychodzimy komendą exit.

8.1 Użycie CLI

Podczas użycia CLI w trybie interaktywnym każda komend musi być potwierdzona klawiszem RETURN (enter). Możesz poruszać się klawiszem Left (lewo) i Right (prawo) aby przemieszczać się pomiędzy znakami, Up (góra) i Down (dół) aby przeglądać historię wybranych komend. Naduszenie CTRL-d dwa razy spowoduje zamknięcie CLI.

Oobsługiwane Klawisze

SekwencjaDziałanie
CTRL-a Przenosi się na początek bieżącej linii
CTRL-e Przenosi się na koniec bieżącej linii
CTRL-f Przenosi znak do przodu
CTRL-b Przenosi znak do tył
ALT-f Przenosi na koniec całe słowo
ALT-b Przenosi na początek całe słowo
CTRL-l Czyści ekran
CTRL-p Przywołanie poprzedniej komendy z historii
CTRL-n Przywołanie następnej komendy z historii
ALT-< Przesunięcie się do pierwszej linii z historii
ALT-> Przesunięcie się do ostatniej linii z historii
CTRL-r Szukanie wstecz od bieżącej linii i przesuwanie przez historię
CTRL-s Sesja zostanie zamrożona
CTRL-q Reaktywacja zamrożonej sesji
CTRL-d Usunięcie znaku przy kursorze albo wyjście z CLI na początku linii
CTRL-t Przesuwanie znaku przez kursor równocześnie przesuwając kursor do przodu. Jeśli kursor jest na końcu
linii, zostanie przeniesiony dwa znaki przed kursor
ALT-t Przeniesie słowo przed kursor. Jeśli kursor jest na końcu linii przenosi dwa ostatnie znaki przed kursor
CTRL-k Usuwa tekst od kursora do końca linii
CTRL-y Przesuwa usunięty tekst do bufora

8.2 Pomoc

Komenda help (pomoc) wyświetli listę dostępnych komend jeśli zostanie wywołana bez parametrów, z nazwą komendy wydrukuje opis komendy.

> help
Usage:
          help [<command>]

Available commands:

          get                  Get config parameters
          set                  Set config parameters
          status               Get status information
          send                 Send message or mail
          update               Update system facilities
          restart              Restart service
          reset                Reset system to factory defaults
          reboot               Reboot system
          shell                Run shell command
          help                 Print help for command
          no−autologout       Turn off auto−logout
          exit                 Exit

8.3 Pobieranie parametrów konfiguracji

Komenda Get (pobierz) jest używana do pobierania wartości konfiguracyjnych (nie wartości bieżących).

> get −h
Usage:
          get [−hsvlc] <parameter> [<parameter>..]

Options:
          −s      generate sourceable output
          −v      validate config parameter
          −l      use legacy syntax with '&' separator
          −c      show configuration sections (can match a pattern)

Oto przykład pobrania wartości DIO

> get dio.out1
dio.out1=on
> get dio.out2
dio.out2=on

8.4 Ustawianie parametrów konfiguracyjnych

Komenda set (ustaw) jest używana do ustawienia wartości konfiguracyjnych.

> set −h
Usage:
          set [−hvl] <parameter>=<value> [<parameter>=<value>..]

Options:
          −v      validate config parameter
          −l      use legacy syntax with '&' separator

Przykład użycia komendy

Obie wartości będą przestawione na „off” także będą przestawione/zapamiętane na „off” przy następnym uruchomieniu.

> set dio.out1=off
> set dio.out2=off

 

8.5 Pobieranie informacji statusowych

Komendą status pobieramy informacje o systemie

> status −h
Usage:
          status [−hs] <section>

Options:
          −s      generate sourceable output

Available sections:

          config             Current configuration
          summary            Short status summary
          system             System information
          license            License information
          wwan               WWAN module status
          wlan               WLAN module status
          gnss               GNSS (GPS) module status
          lan                LAN interface status
          wan                WAN interface status
          openvpn            OpenVPN connection status
          ipsec              IPsec connection status
          pptp               PPTP connection status
          dialin             Dial−In connection status
          dio                Digital IO status
          neigh              Neighborhood status
          location           Current Location

W przykładzie odczytujemy wartości DIO. Pamiętaj że bieżący stan nie odpowiada konfiguracji wartości set z komendy „set Dio.out”

> status dio
=== DIGITAL IO INFORMATION ===
IN1:                             off
IN2:                             on
OUT1:                            on
OUT2:                            off

 

8.6 Wysyłanie email lub SMS

Komenda send (wyślij) jest używana do wysyłania e-mail/sms na wybrany adres lub telefon

> send −h
Name:
          cli−send (Send message or mail)

Usage:
          send [−h] <type> <dest> <msg>

Options:
          <type>      type of message to be sent (mail or sms)
          <dest>      destination of message (mail−address or phone−number)
          <msg>       message to be sent

Przykład użycia

Aby wysłać SMS z linii komend, np. przez telent lub SSH:

send sms +48123456789 'hello world'

8.7 Aktualizacja systemu

Polecenie update (aktualizuj) jest wykorzystywane do przeprowadzania różnych aktualizacji systemu.

> update −h
Usage:
          update [−hr] <software|config|license|sshkeys> <URL>

Options:
          −r       reboot after update

Available actions:
          software           Perform software update
          config             Update configuration
          license            Update licenses
          sshkeys            Install SSH authorized keys

You may run 'update software latest' to install the latest version.

 

8.8 Restart usług

Komenda restart jest używana do restartu serwisów systemowych.

> restart −h
Usage:
          restart [−h] <service>

Available services:

          link−manager           WAN links
          wwan−manager           WWAN manager
          wlan WLAN              interfaces
          network                Networking
          dnsmasq                DNS/DHCP server
          configd                Configuration daemon
          firewall               Firewall and NAPT
          lighttpd               HTTP server
          openvpn                OpenVPN connections
          ipsec                  IPsec connections
          pptp                   PPTP connections
          snmpd                  SNMP daemon
          syslog                 Syslog daemon
          telnet                 Telnet server
          dropbear               SSH server
          vrrpd                  VRRP daemon
          usbipd                 USB/IP daemon
          surveyor               Supervision daemon
          voiced                 Voice daemon
          gpsd                   GPS daemon
          smsd                   SMS daemon

8.9 Resetowanie systemu

Komenda reset jest używana do resetu routera do ustawień fabrycznych.

> reset −h
Usage:

          reset [−h ]

8.10 Reboot systemu

Komenda reboot służy do ponownego uruchomienia routera.

> reboot −h
Usage:

          reboot [−h]

 

8.11 Uruchomianie komend w shell

Komenda shell uruchamia shell systemowy w celu uruchomienia dowolnej aplikacji.

> shell −h
Usage:

          shell [−h] [<cmd>]

 

8.12 CLI–PHP

CLI-PHP to interfejs http aplikacji CLI. Jest używany do konfiguracji i kontroli routera zdalnie. Jest uruchomiony w konfiguracji fabrycznej, może być używaniu do celów wdrożeniowych, ale jest wyłączany jak tylko konto admina zostanie stworzone. Serwis może być potem wyłączony/włączony przez ustawienie parametru cliphp.status:

> get cliphp.status
cliphp.status=0

>set cli.php.status=1
> get cliphp.status
cliphp.status=1
cliphp.status=0           Service is disabled
          cliphp.status=1           Service is enabled

Ta sekcja opisuje interfejs CLI-PHP w wersji 2, przykłady użycia:

Usage:
    http (s)://cli.php?<key1>=<value1>&<key2>=<value2>..<keyN>=<
    valueN>
Available keys:
output             Output format ( html, plain )
usr                Username to be used for authentication
pwd                Password to be used for authentication
commandV           Command to be executed
arg0..arg31        Arguments passed to commands
Notes:
    The commands correspond to CLI commands as seen by 'cli −l', the 
    arguments
   (arg0..arg31) will be directly passed to the cli application 

    Thus, an URL containing the following sequence:

      command=get&arg0=admin.password&arg1=admin.debug&arg2=admin.access

   will lead to cli being called as:

    $ cli get "admin.password" "admin.debug" "admin.access"

    It supports whitespaces but please be aware that any special
    characters in the URL
    must be specified according to RFC1738 (which usually done by
    common clients such
    as wget, lynx, curl).

Response:
    The returned response will always contain a status line in the
    format:

    <return>: <msg>

    with return values of OK if succeeded and ERROR if failed. Any
    output
    from the commands will be appended

Examples:

    OK: status command successful
    ERROR: authentication failed

Status - wyświetlanie informacji statusowych

Key usage:
        command=status[&arg0=<section>]
Notes:
        Available sections can be retrieved by running command=
        status&arg0=−h.
        System status can be displayed without authentication.

Examples:

http://192.168.1.1/cli.php?version=2&output=html&usr=admin&pwd=

admin01&command=status&arg0=−h

http://192.168.1.1/cli.php?version=2&output=html&usr=admin&pwd=

admin01&command=status&arg0=summary
http://192.168.1.1/cli.php?version=2&output=html&command=status

Get – parametry konfiguracyjne funkcji Get (pobierz)

Key usage:

        command=get&arg0=<config−key>[&arg1=<config−key>..]

Examples:

http://192.168.1.1/cli.php?version=2&output=html&usr=admin&pwd=

admin01&command=get&arg0=config.version

http://192.168.1.1/cli.php?version=2&output=html&usr=admin&pwd=

admin01&command=get&arg0=openvpn.status&arg1=snmp.status&arg2=ipsec.status

Set – parametry konfiguracyjne funkcji set (ustaw)

Key usage:
     command=set&arg0=<config−key>&arg1=<config−value>[&arg2=<config
     −key>&arg3=<config−value>..]
Notes :
     In contrast to the other commands, this command requires a set
     of tuples because of the reserved '=' char, i.e.
     [arg0=key0, arg1=val0], [arg2=key1, arg3=val1], [arg4=key2, arg5=val2], etc

Examples:

http://192.168.1.1/cli.php?version=2&output=html&usr=admin&pwd=

admin01&command=set&arg0=snmp.status&arg1=1

http://192.168.1.1/cli.php?version=2&output=html&usr=admin&pwd=

admin01&command=set&arg0=snmp.status&arg1=0&arg2=openvpn.status&arg3=1

Restart – restart serwisów systemowych

Key usage:
     command=restart&arg0=<service>
Notes:
     Available services can be retrieved by running 'command=restart&arg0=−h'

Examples:

http://192.168.1.1/cli.php?version=2&output=html&usr=admin&pwd=

admin01&command=restart&arg0=−h

http://192.168.1.1/cli.php?version=2&output=html&usr=admin&pwd=

admin01&command=restart&arg0=link−manager

Reboot – wyzwalanie rebootu systemu

Key usage :
     command=reboot

Examples :

http://192.168.1.1/cli.php?version=2&output=html&usr=admin&pwd=

admin01&command=reboot

Reset – uruchamia reset fabryczny

Key usage :
     command=reset

Examples :

http://192.168.1.1/cli.php?version=2&output=html&usr=admin&pwd=

admin01&command=reset

Update – aktualizacja systemu

Key usage :
     command=update&arg0=<facility>&arg1=<URL>
Notes :
     Available facilities can be retrieved by running 'command=update
&arg0=−h'

Examples:

http://192.168.1.1/cli.php?version=2&output=html&usr=admin&pwd=127

admin01&command=update&arg0=software&arg1=tftp://192.168.1.254/latest

http://192.168.1.1/cli.php?version=2&output=html&usr=admin&pwd=

admin01&command=update&arg0=config&arg1=tftp://192.168.1.254/user−
config.zip

http://192.168.1.1/cli.php?version=2&output=html&usr=admin&pwd=

admin01&command=update&arg0=license&arg1=http://192.168.1.254/xxx.lic