# CLI VyOS - операционный режим и конфигурация

> CLI VyOS - операционный режим, конфигурация, команды set/commit/save, управление версиями и откат для Yandex Cloud и VK Cloud

Source: https://opennix.org/docs/vyos/first-steps/vyos-cli/


VyOS предоставляет мощный интерфейс командной строки для управления системой. CLI состоит из двух основных режимов: операционного режима и режима конфигурации.

## Операционный режим

Операционный режим используется для выполнения системных задач, просмотра состояния системы и сервисов.

### Основные характеристики

- Позволяет выполнять системные задачи без изменения конфигурации
- Предоставляет встроенную систему помощи
- Поддерживает автодополнение команд

### Получение помощи

Используйте `?` для просмотра доступных команд:

```
vyos@vyos:~$ ?
Possible completions:
  clear      Clear system information
  configure  Enter configuration mode
  force      Force an operation
  monitor    Monitor system information
  ping       Send ICMP echo requests
  reset      Reset a service
  restart    Restart a service
  show       Show system information
  telnet     Telnet to a node
  traceroute Track network path to node
```

### Автодополнение

Используйте клавишу `TAB` для автодополнения команд:

```
vyos@vyos:~$ sh<TAB>
vyos@vyos:~$ show
```

### Семейства команд

#### clear

Неразрушающие действия, такие как сброс счетчиков или очистка логов:

```
vyos@vyos:~$ clear interfaces ethernet eth0 counters
```

#### reset

Локально разрушающие действия, такие как завершение сессий:

```
vyos@vyos:~$ reset vpn ipsec-peer 192.0.2.1
```

#### restart

Перезапуск подсистем:

```
vyos@vyos:~$ restart service ssh
```

#### force

Принудительное выполнение определенных системных действий:

```
vyos@vyos:~$ force arp-cache refresh
```

#### execute

Выполнение диагностических и вспомогательных задач:

```
vyos@vyos:~$ execute ping 8.8.8.8
```

#### show

Отображение системной информации:

```
vyos@vyos:~$ show interfaces
vyos@vyos:~$ show ip route
vyos@vyos:~$ show version
```

#### monitor

Непрерывный вывод информации (обновление в реальном времени):

```
vyos@vyos:~$ monitor interfaces ethernet eth0 traffic
vyos@vyos:~$ monitor log
```

Для выхода из режима мониторинга используйте `Ctrl+C`.

## Режим конфигурации

Режим конфигурации используется для внесения изменений в конфигурацию системы.

### Вход в режим конфигурации

```
vyos@vyos:~$ configure
[edit]
vyos@vyos#
```

Обратите внимание на изменение приглашения командной строки с `~$` на `#`.

### Основные команды конфигурации

#### set

Добавление или изменение элемента конфигурации:

```
vyos@vyos# set interfaces ethernet eth0 address 192.168.1.1/24
vyos@vyos# set interfaces ethernet eth0 description 'LAN Interface'
```

#### delete

Удаление элемента конфигурации:

```
vyos@vyos# delete interfaces ethernet eth0 address 192.168.1.1/24
```

#### commit

Применение изменений конфигурации:

```
vyos@vyos# commit
```

**Важно**: Изменения не вступят в силу до выполнения команды `commit`.

#### save

Сохранение конфигурации на постоянной основе:

```
vyos@vyos# save
Saving configuration to '/config/config.boot'...
Done
```

По умолчанию конфигурация сохраняется в `/config/config.boot`.

#### compare

Просмотр различий между текущей рабочей и активной конфигурацией:

```
vyos@vyos# compare
[edit interfaces ethernet eth0]
+address 192.168.1.1/24
+description "LAN Interface"
```

#### exit discard

Выход из режима конфигурации без сохранения изменений:

```
vyos@vyos# exit discard
vyos@vyos:~$
```

#### exit

Выход из режима конфигурации с сохранением изменений:

```
vyos@vyos# commit
vyos@vyos# exit
vyos@vyos:~$
```

### Навигация по иерархии конфигурации

Конфигурация VyOS организована в виде древовидной иерархии.

#### edit

Переход на определенный уровень конфигурации:

```
vyos@vyos# edit interfaces ethernet eth0
[edit interfaces ethernet eth0]
vyos@vyos#
```

Теперь все команды выполняются в контексте `interfaces ethernet eth0`:

```
[edit interfaces ethernet eth0]
vyos@vyos# set address 192.168.1.1/24
vyos@vyos# set description 'LAN Interface'
```

#### up

Переход на один уровень вверх:

```
[edit interfaces ethernet eth0]
vyos@vyos# up
[edit interfaces]
vyos@vyos#
```

#### top

Переход на корневой уровень конфигурации:

```
[edit interfaces ethernet eth0]
vyos@vyos# top
[edit]
vyos@vyos#
```

#### exit

Выход на один уровень вверх (аналогично `up`):

```
[edit interfaces ethernet eth0]
vyos@vyos# exit
[edit interfaces]
vyos@vyos#
```

## Управление конфигурацией

### История конфигурации

VyOS автоматически сохраняет историю конфигураций. Просмотр списка сохраненных версий:

```
vyos@vyos# show system commit
0   2024-10-13 15:30:45 by vyos via cli
1   2024-10-13 14:15:22 by vyos via cli
2   2024-10-13 12:05:10 by vyos via cli
```

### Откат конфигурации

Откат к предыдущей версии конфигурации:

```
vyos@vyos# rollback 1
vyos@vyos# commit
```

Откат к последней сохраненной конфигурации:

```
vyos@vyos# rollback
vyos@vyos# commit
```

### Сравнение конфигураций

Сравнение текущей конфигурации с сохраненной версией:

```
vyos@vyos# compare 1
```

Сравнение двух сохраненных версий:

```
vyos@vyos# compare 1 2
```

### Комментарии к конфигурации

Добавление комментариев к элементам конфигурации для документирования:

```
vyos@vyos# comment interfaces ethernet eth0 address 192.168.1.1/24 "Primary LAN address"
```

Просмотр комментариев:

```
vyos@vyos# show interfaces ethernet eth0
/* Primary LAN address */
address 192.168.1.1/24
description "LAN Interface"
```

### Подтверждение изменений (Commit Confirm)

Для критических изменений можно использовать подтверждение с тайм-аутом. Если изменения не подтверждены в течение указанного времени, конфигурация автоматически откатывается:

```
vyos@vyos# commit-confirm 5
```

Подтверждение изменений в течение 5 минут:

```
vyos@vyos# confirm
```

Это полезно при изменении сетевых настроек удаленного маршрутизатора, чтобы избежать потери доступа.

## Просмотр конфигурации

### show

Просмотр текущей конфигурации:

```
vyos@vyos# show
```

Просмотр определенной части конфигурации:

```
vyos@vyos# show interfaces
vyos@vyos# show interfaces ethernet eth0
```

### show | commands

Отображение конфигурации в виде команд `set`:

```
vyos@vyos# show interfaces ethernet eth0 | commands
set interfaces ethernet eth0 address '192.168.1.1/24'
set interfaces ethernet eth0 description 'LAN Interface'
```

Это полезно для копирования конфигурации или создания скриптов.

### show | display-set

Альтернативный способ отображения в виде команд `set`:

```
vyos@vyos# show | display-set
```

## Загрузка конфигурации

### load

Загрузка конфигурации из файла:

```
vyos@vyos# load /config/backup-config.boot
```

Объединение конфигурации из файла с текущей:

```
vyos@vyos# merge /config/additional-config.boot
```

## Архивирование конфигурации

### Локальное архивирование

VyOS автоматически сохраняет каждую commit-версию конфигурации.

Настройка количества хранимых версий:

```
set system config-management commit-archive location '/config/archive'
set system config-management commit-revisions 50
```

### Удаленное архивирование

Настройка автоматической отправки конфигурации на удаленный сервер после каждого commit:

```
set system config-management commit-archive location 'scp://user@192.0.2.100/backup'
```

## Советы и рекомендации

### Горячие клавиши

- `TAB` - автодополнение команды
- `?` - показать доступные команды
- `Ctrl+A` - переход в начало строки
- `Ctrl+E` - переход в конец строки
- `Ctrl+U` - удалить все слева от курсора
- `Ctrl+K` - удалить все справа от курсора
- `Ctrl+W` - удалить слово слева от курсора
- `Ctrl+L` - очистить экран
- `Ctrl+C` - прервать команду

### История команд

- Стрелка вверх/вниз - навигация по истории команд
- `Ctrl+R` - поиск в истории команд

### Пайплайны

Команды можно передавать через пайплайны для фильтрации вывода:

```
vyos@vyos# show | grep address
vyos@vyos# show | match "192.168"
```

Доступные фильтры:
- `match` - показать строки, содержащие паттерн
- `except` - исключить строки, содержащие паттерн
- `commands` - показать в виде команд set

### Копирование и вставка

При работе с удаленной сессией используйте копирование/вставку конфигурации в виде команд `set`:

```
vyos@vyos# show interfaces ethernet eth0 | commands
```

Скопируйте вывод и вставьте в другую систему VyOS.

## Пример рабочего процесса

Типичный процесс изменения конфигурации:

```
# 1. Войти в режим конфигурации
vyos@vyos:~$ configure
[edit]

# 2. Внести изменения
vyos@vyos# set interfaces ethernet eth1 address 192.168.2.1/24
vyos@vyos# set interfaces ethernet eth1 description 'DMZ'

# 3. Просмотреть изменения
vyos@vyos# compare

# 4. Применить изменения
vyos@vyos# commit

# 5. Сохранить конфигурацию
vyos@vyos# save

# 6. Выйти из режима конфигурации
vyos@vyos# exit
vyos@vyos:~$
```

## Следующие шаги

После знакомства с CLI продолжите изучение:

- [Обзор конфигурации](/docs/vyos/first-steps/vyos-config-overview/) - понимание структуры конфигурации
- [Конфигурация](/docs/vyos/) - детальное руководство по настройке компонентов
- [Операционный режим](/docs/vyos/admin-guide/vyos-operation-mode/) - расширенные операционные команды

