Интерфейс управления системой ECSS-10 на базе командной строки (Command Line Interface — CLI) реализован подсистемой Cocon (Command console).
Cocon — представляет собой распределенную консоль управления, которая позволяет управлять подсистемами ECSS-10 из одного места (используя одно подключение).

Правила работы с командной строкой

По умолчанию командная консоль CoCon доступна по протоколу SSH версии 2 (порт 8023).

Команда для подключения к консоли:

ssh USER@HOST -p 8023

Если по умолчанию используется протокол SSH версии 1, то можно воспользоваться следующей командой:

ssh USER@HOST -2 -p 8023
Подключение может осуществляться к любому хосту, на котором запущена хотя бы одна нода ECSS-10. Через такое подключение будет обеспечен доступ до предоставляемого ECSS-10 функционала.

Команды управления системой ECSS-10 группируются в древовидную структуру, напоминающую файловую систему. Файлы — это команды, а каталоги — это логическая группировка команд (привязка их к определенной подсистеме).

Область видимости команд работает таким образом, что команды, которые объявлены в корневом каталоге, доступны в любом месте файловой системы (глобальные команды), все остальные команды работают в том каталоге, где они объявлены.

Выполнить команду можно двумя способами:

  1. Зайти в нужный каталог, используя команду cd, и выполнить команду в этом каталоге — это позволяет использовать менее объемные команды.
    Для обозначения текущего каталога, в котором находится пользователь, динамически изменяется строка приглашения системы.

    Для запуска команды из текущего каталога необходимо перед именем команды набрать ./ (точка-слеш).

    Пример:

    1. зайти в каталог /domain/eltex.local

    /ss: ssw@[mycelium@ecss3]:/#> cd domain/eltex.local
    /ss/ ssw@[mycelium@ecss3]:/domain/eltex.local/ss#>

    2. выполнить команду "info" в заданном каталоге:

    ssw@[mycelium@ecss3]:/domain/eltex.local/ss#> ./info
  2. Написать путь до команды (абсолютный или относительный путь):

    ssw@[mycelium@ecss3]:/#> domain/eltex.local/ss/info

    Глобальные команды выполняются без указания пути.

    Права доступа, определенные для пользователя, ограничивают возможности пользователя по выполнению команд. Команды, которые недоступны для выполнения определенному пользователю, не будут отображаться в соответствующих местах файловой системы, и у пользователя не будет возможности их выполнить.

    Для упрощения использования командной строки интерфейс поддерживает функцию автоматического дополнения команд. Эта функция активизируется при неполно набранной команде и вводе табуляции <Tab>. Другая функция <Tab> — просмотр команд, доступных для ввода в текущем каталоге.

    Получить справочную информацию о команде и ее параметрах на любом этапе ввода команды можно двумя способами:
    1. ввод команды man перед основной командой:

    > man shell-trace 

    2. ввод комбинации -h после команды:

    > shell-trace -h 

В финале вывода команды имеется информация о дате/времени, скорости выполнения команды, а также ноде и ее версии, на которой именно выполнена команда. Пример:

admin@mycelium1@ecss1:/$ restfs/list 
┌────────────┬──────────────────────────────┬─────────┐
│Cluster name│             Peer             │ Status  │
├────────────┼──────────────────────────────┼─────────┤
│default     │http://system.restfs.ecss:9990│connected│
└────────────┴──────────────────────────────┴─────────┘
Succesfull

[exec at: 12.01.2021 15:49:19, exec time: 35ms, nodes: core1@ecss1 v.3.14.7.427]

Авторизация по ключу

Для авторизации необходимо добавить свой public key (находится по пути ~/.ssh/*.pub) через интерфейс кокона:

admin@[mycelium1@ecss1]:/$ /shell-options public-key add ssh-rsa ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCw7sJZltBfbooyv2T3Bsz/l01SM53XfNkJzN9DxPKq8kH4FRKf8NJWRHpLAWmBElUmp5APxWLfR74ncTYGrRIUj+u8ygZav1YYbgOrTgNwyFaJUurg2LVymLd9+Q/wA7ORxomuhLMGaiSfaOUyoO1xE5opZU65IpZhuyVrNOGZLQ== test@gmail.com

Проверить список можно командой:

admin@[mycelium1@ecss1]:/$ ./shell-options public-key list 

Удалить можно командой:

admin@[mycelium1@ecss1]:/$ /shell-options public-key delete ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCw7sJZltBfbooyv2T3Bsz/l01SM53XfNkJzN9DxPKq8kH4FRKf8NJWRHpLAWmBElUmp5APxWLfR74ncTYGrRIUj+u8ygZav1YYbgOrTgNwyFaJUurg2LVymLd9+Q/wA7ORxomuhLMGaiSfaOUyoO1xE5opZU65IpZhuyVrNOGZLQ== test@gmail.com

Права доступа на команды

Ниже приведен список групп доступа к командам CoCon-а, и в каких группах должен состоять пользователь, чтобы выполнить необходимую команду:

  • -any- — любой пользователь может выполнить команду с данными правами;
  • -root- — только пользователь ecss-root может выполнить данную команду;
  • ecss-user — пользователь с правами ecss-user, ecss-admin может выполнить данную команду;
  • ecss-admin — пользователь с правами ecss-admin может выполнить данную команду;
  • ecss-<DOMAIN>-user — пользователь с правами ecss-<DOMAIN>-user, _ecss-<DOMAIN>-admin, ecss-user, ecss-admin может выполнить данную команду;
  • ecss-<DOMAIN>-admin — пользователь с правами ecss-<DOMAIN>-admin, ecss-admin может выполнить данную команду.

Принципы формирования виртуальной файловой системы в CLI

Командная строка CoCon выглядит следующим образом:

ssw@[mycelium@ecss3]:/cluster/core/core1$ ▋
└┬┘ └───┬───┘ └─┬─┘  └─────────┬───────┘ └┬┘
 │      │       │              │          └ приглашение для ввода команды
 │      │       │              │
 │      │       │              └─────────── текущий абсолютный путь
 │      │       │
 │      │       └────────────────────────── имя сервера, к которому подключена консоль
 │      │
 │      └────────────────────────────────── имя ноды, к которой подключена консоль
 │
 └───────────────────────────────────────── имя пользователя, в рамках которого осуществляется текущее подключение

Список или дерево доступных команд можно просмотреть по команде ls из любого каталога виртуальной файловой системы, см. описание:

admin@ds1@ecss1:/$ man ls
List directory content
    Usage: ls [-Flags] [Path]
        Flags: d - list directory entries
               f - list file entries
               a - show hidden entries
               t - tree, show files in all subdirectories of Path
               l - use a long listing format

                   Format:

                   ---------------------------------------------------
                   | name* | desctination* | is_executable* | group* |
                   ---------------------------------------------------
                   |       |               |                |        |

                      *name          - command name
                      *group         - user group that can execute command, 
                      *destination   - where the command is executed, could be node name or node group name
                      *is_executable - in case of command, asterisk means that current user could execute this command (command can be executed)
                                       in case if folder - folder contains "asterisked" commands

               Default: ls -fd .

Пример вывода дерева команд по пути /node/core1@ecss1/ . В последнем поле указаны группы пользователей, которым доступно выполнение данной команды:

admin@mycelium1@ecss1:/$ ls -lat node/core1@ecss1/             
|-*.exec                   core1@ecss1 -any-
|-*.garbage-collector      core1@ecss1 ecss-admin
|-*cocon-info              core1@ecss1 -any-
|-*date                    core1@ecss1 -any-
|- eshell                  core1@ecss1 -root-
|-*etop                    core1@ecss1 ecss-user,ecss-admin,ecss-subscriber-portal
|-*etop-snapshot           core1@ecss1 ecss-user,ecss-admin,ecss-subscriber-portal
|-*host-info               core1@ecss1 ecss-user,ecss-admin,ecss-subscriber-portal
|-*info                    core1@ecss1 ecss-user,ecss-admin,ecss-subscriber-portal
|-*process-info            core1@ecss1 ecss-user,ecss-admin,ecss-subscriber-portal
|-*restart                 core1@ecss1 ecss-admin
|-*service                 core1@ecss1 -any-
|-*show-cert               core1@ecss1 -any-
|-*shutdown                core1@ecss1 ecss-admin
|-*uptime                  core1@ecss1 -any-
|-/.profile                            
| |-*eep                   core1@ecss1 ecss-user,ecss-admin,ecss-subscriber-portal
|-/.recon                              
| |-*bin-leak              core1@ecss1 ecss-admin
| |-*inet-count            core1@ecss1 ecss-admin
| |-*node-stats            core1@ecss1 ecss-admin
| |-*port-info             core1@ecss1 ecss-admin
| |-*proc-count            core1@ecss1 ecss-admin
| |-*proc-info             core1@ecss1 ecss-admin
| |-*proc-state            core1@ecss1 ecss-admin
| |-*remote_load           core1@ecss1 ecss-admin
| |-*scheduler-usage       core1@ecss1 ecss-admin
| |-/allocator                         
|   |-*allocators          core1@ecss1 ecss-admin
|   |-*average-block-sizes core1@ecss1 ecss-admin
|   |-*cache-hit-rates     core1@ecss1 ecss-admin
|   |-*fragmentation       core1@ecss1 ecss-admin
|   |-*memory              core1@ecss1 ecss-admin
|   |-*snapshot            core1@ecss1 ecss-admin
|-/.tracer                             
| |-*declare               core1@ecss1 ecss-admin
|-/ets                                 
| |-*info                  core1@ecss1 ecss-admin
|-/host                                
| |-*.mtr                  core1@ecss1 ecss-admin
| |-*.ping                 core1@ecss1 ecss-admin
| |-*.shell                core1@ecss1 ecss-admin
| |-*.sngrep               core1@ecss1 ecss-admin
| |- module_reload         core1@ecss1 -root-
|-/log                                 
| |-*.dumps                core1@ecss1 ecss-admin
| |-*clear                 core1@ecss1 ecss-admin
| |-*dump                  core1@ecss1 ecss-admin
| |-*last-errors           core1@ecss1 ecss-user,ecss-admin,ecss-subscriber-portal
| |-/.flow                             
| | |-*add                 core1@ecss1 ecss-admin
| | |-*remove              core1@ecss1 ecss-admin
| | |-*show                core1@ecss1 ecss-admin
| |-/rule                              
|   |-*add                 core1@ecss1 ecss-admin
|   |-*off                 core1@ecss1 ecss-admin
|   |-*on                  core1@ecss1 ecss-admin
|   |-*rotate              core1@ecss1 ecss-admin
|   |-*show                core1@ecss1 ecss-admin
|-/mycelium_client                     
| |-*list                  core1@ecss1 ecss-admin
|-/rps                                 
  |-*alarms                core1@ecss1 ecss-admin
  |-*controls              core1@ecss1 ecss-admin
  |-*events                core1@ecss1 ecss-admin
  |-*logs                  core1@ecss1 ecss-admin
  |-*stats                 core1@ecss1 ecss-admin
  |-*status                core1@ecss1 ecss-user,ecss-admin,ecss-subscriber-portal
  |-/thresholds                        
    |-*add-disk-point      core1@ecss1 ecss-admin
    |-*delete-disk-point   core1@ecss1 ecss-admin
    |-*list                core1@ecss1 ecss-user,ecss-admin,ecss-subscriber-portal
    |-*sync                core1@ecss1 ecss-user,ecss-admin,ecss-subscriber-portal

Команды, начинающиеся с точки являются скрытыми. Предназначены для разработчиков и инженеров технической поддержки.

Команда man перед любой командой или ключ -h после нее выводит документацию по назначению и использованию команды.

Структура дерева команд:

/  (root)  - корневой каталог, содержит глобальные команды (alias, cd, exec, exit, locate, ls, man, pwd, shell, shell-options, sudo, whereami, whereis, who, whoami).
│
├─ aaa     - команда копирования AAA-параметров
│
├─ api     - команды настройки API CSTA
│
├─ audit   - каталог группирует в себе команды для просмотра истории вводимых команд и активных сессий
│
├─ bridge  - каталог группирует в себе команды управления bridge-интерфейсами
│
├─ cluster - каталог группирует в себе команды управления логической топологией ECSS - кластерами (доступен только администратору системы)
│           
├─ cocon   - каталог группирует в себе команды управления пользователями cocon- и web-конфигуратора ECSS-10
│
├─ domain  - каталог группирует в себе команды управления доменами - виртуальными АТС
│
├─ mlpp - каталог группирует в себе команды управления многоадресной приоритезацией вызовов (MLPP)
│ 
├─ gateway - каталог группирует в себе команды управления шлюзами
│
├─ node    - каталог группирует в себе команды управления активными нодами ECSS (доступен только администратору системы)
│
├─ sorm    - каталог группирует в себе команды управления системой СОРМ
│   
├─ statistics   - каталог группирует в себе команды настройки параметров базы данных MySQL для записи статистики ECSS-10
│
└─ system  - каталог группирует в себе команды управления глобальными настройками системы