Утилита nsgconfsync выполняет три функции, первая из которых необходима для двух других:
- Генерацию ключей для клиента SSH и передачу публичного ключа на указанный удалённый сервер SSH. Для этого используются стандартные утилиты ssh-keygen и ssh-copy-id. Таким образом, обеспечивается последующий доступ на удалённое устройство без ручного ввода пароля; это открывает путь для автоматизированного выполнения тех или иных операций на нём.
Данная функция выполняется вручную один раз (или периодически для регулярной смены ключей) и может использоваться как с целью последующего импорта конфигурации с удалённого устройства на локальное, так и для иных задач: трансляции событий на подключённых датчиках и контроллерах, и т.п. Удалённым хостом может быть как устройство NSG, так и любое другое устройство со стандартным для Linux назначением директорий SSH.
- Чтение дерева конфигурации с удалённого хоста по SSH и его слияние с текущей конфигурацией локального устройства по установленным правилам. Предполагается, что данная функция применяется к двум однотипным и функционально идентичным устройствам NSG, например, основному и резервному серверам VPN. В этом случае администратор вносит изменения только на основном сервере (например, добавляет новых пользователей), а на резервных серверах выполняет данную процедуру (вручную или по расписанию) и копирует на них требуемые элементы конфигурации с основного.
- Копирование заданных файлов и директорий с удалённого устройства на локальное.
В командных оболочках NSG эти операции выполняются в узле .system.confsync
. Для автоматического выполнения синхронизации из скриптов (по расписанию и т.п.) рекомендуется использовать данную утилиту напрямую, без обращения к nsgsh.
Формат командной строки:
nsgconfsync -k
nsgconfsync --keygen
nsgconfsync [username@hostname] [опции]
Опции для генерации и передачи ключа:
- -k, --keygen
- Сгенерировать пару ключей RSA путем вызова команды ssh-keygen -t rsa. На все последующие вопросы следует отвечать нажатием клавиши
Enter
.
- -a, --append
- Передать свой открытый ключ на указанный сервер. Для передачи ключа требуется ручной ввод пароля. Ключ помещается на сервере в директорию .ssh в стандарной домашней директории пользователя, указанного в строке вызова как username.
- --home=директория
- Домашняя директория пользователя на локальной машине. Из этой директории, а именно, из поддиректории .ssh в ней, берётся файл открытого ключа. Путь к директории указывается от корня её файловой системы. По умолчанию предполагается стандартная домашняя директория (~).
Опции для синхронизации конфигурации:
- -i, --import=узел
- Загрузить данный узел конфигурации с удалённого устройства. Допускается указание данной опции несколько раз.
- -e, --exclude=узел
- Исключить данный узел из загруженной конфигурации и восстановить его исходное состояние на локальном устройстве. Допускается указание данной опции несколько раз.
- -f, --file=файл
- Загрузить данный файл или директорию с удалённого устройства. Путь к файлу указывается от корня файловой системы. В последнем элементе пути (собственно имени файла или директории) допускается использование подстановочного символа *. Допускается указание данной опции несколько раз.
- --excludefile=файл
- Исключить файл или директорию из синхронизации. В последнем элементе пути (собственно имени файла или директории) допускается использование подстановочного символа *. Путь к файлу указывается от корня файловой системы. Допускается указание данной опции несколько раз.
ПРИМЕЧАНИЕ. Если на локальном устройстве существуют файлы с такими же путями/именами, как на мастер-устройстве, то они будут заменены. Если в локальных директориях есть файлы, которых нет на мастер-устройстве, то они останутся как есть и удалены не будут.
- -s, --sync
- Выполнить синхронизацию локальной конфигурации и узлов конфигурации, загруженных с мастер-устройства. Все расхождения изменяются в пользу конфигурации мастер-устройства.
- -w, --write
- Сохранить результирующую конфигурацию в энергонезависимой памяти устройства.
- --apply=узел
- Применить результирующую конфигурацию для данного узла. Допускается указание данной опции несколько раз.
- --applyall
- Применить результирующую конфигурацию для всех узлов, указанных в списках --import и --apply. (Если для какого-то узла не определена операция _apply, выдается предупреждение и продолжается работа далее по списку.) Поскольку операция _apply в некотором узле безусловно относится ко всем его внутренним узлам, то она будет выполнена, в том числе, и в узлах, которые включены в списки --exclude.
- --force
- Если в момент выполнения синхронизации на устройстве открыта сессия администратора, принудительно завершить её (возможна потеря несохранённых изменений) и перезапустить nsgconfsync с правами администратора, чтобы иметь возможность применять и сохранять новую конфигурацию. Рекомендуется при автоматическом вызове процедуры; при ручном выполнении синхронизации следует использовать опции --write и --apply в этой же строке вызова.
- --script=скрипт
- После завершения синхронизации выполнить указанный скрипт. Выполняется только при установленной опции --write и успешном завершении всех предыдущих операций.
- -o, --output=файл
- Путь/имя файла для вывода результатов.
- -q, --quiet
- Не выводить в журнал исходную локальную конфигурацию, принятую конфигурацию и результирующую конфигурацию. Сообщения о результате синхронизации и об ошибках выводятся в любом случае.
- --sesnum=SID
- Открыть для выполнения синхронизации существующую сессию с идентификатором SID на локальном устройстве. При ручном управлении и в пользовательских скриптах не используется.
- --user=имя
- Имя пользователя, с которым открывается локальная сессия администрирования устройства. По умолчанию, это имя пользователя, с которым была вызвана nsgconfsync из оболочки bash, т.е. root.
Общие опции:
-d, --daemon
Запустить nsgconfsync в режиме демона.
-h, --help
Вывод справки.