Запустить скрипт с именем SSH-сессии и датой и временем

Вопрос или проблема

Я сетевой инженер, и я пытаюсь перейти с использования программ вроде SecureCRT на полностью основанные на Linux решения. Однако самым большим препятствием для меня при миграции является необходимость ведения журнала вывода SSH в файлы.

Цель состоит в том, чтобы записывать все действия, которые я выполняю на сетевом оборудовании через CLI. В частности, если я устраняю неполадки или вношу изменения. Я могу вернуться и подтвердить, что я сделал или что я увидел.

Мне бы не хотелось начинать ведение журнала каждый раз, когда я подключаюсь по SSH к устройству, и я надеялся, что смогу использовать конфигурацию SSH для этого. В частности, я рассматривал возможность использования “Script” для ведения журнала в файл.

Я также смотрел на флаг OpenSSH LocalCommand, чтобы передать вывод в какую-то локальную команду. Но я не думаю, что это будет работать.

Я подумывал о создании новой функции в bash. Но я не хочу менять команду SSH в зависимости от хоста. Я хочу, чтобы sshconfig использовал localcommand для определенных мной хостов.

Другим требованием является то, что мне хотелось бы форматировать журнал с помощью <hostname/ip>-<date>_<month>_<year>.log. Это поможет мне поддерживать все в порядке.

Кто-нибудь делал это?

Спасибо.

Как было упомянуто в комментариях, существует несколько способов вести журнал SSH-сессии.

Вот несколько направлений для изучения:

  1. Войдите в ssh с: `ssh user@host “script -T -B session-name-$(date +%Y-%m-%d).log”`
    Это позволит вам войти и сразу же запустить скрипт, сохранив его в файле журнала в домашней директории вашего пользователя. Он сохраняет как ввод, так и вывод в одном файле.

  2. Используйте TMUX или Screen, пока сервер работает, у вас будет доступ к истории. Вы также можете сохранять буферы панелей TMUX в файл, вам нужно будет настроить максимальную прокрутку. Я рекомендую всегда использовать терминальный мультиплексор, но вариант №1 является лучшим.

  3. Используйте платформу оркестрации, такую как Jenkins или Rundeck. Это, вероятно, самое сложное решение, однако, если это для профессиональной среды, это, вероятно, лучшее решение. Это позволит вам взять ввод из файлов скриптов, созданных в решении №1, и автоматически повторно запускать команды. Эти платформы оркестрации ведут журнал вывода терминала в базу данных, и вы также можете сделать резервное копирование базы данных.

Ответ или решение

Для сетевых инженеров, стремящихся перейти на полностью Linux-ориентированные инструменты для ведения журнала SSH-сессий, наилучший подход заключается в использовании различных утилит, доступных в большинстве дистрибутивов Linux. Это поможет не только автоматизировать ведение журналов, но и организовать их в удобном формате. Рассмотрим некоторые возможные решения для автоматизации этого процесса.

1. Использование команды script

Одним из простых решений является использование команды script, которая позволяет записывать ввод и вывод всех действий в SSH-сессии. Вы можете запустить SSH-сессию с помощью следующей команды:

ssh user@host "script -T -B /путь/к/логу/$(hostname)-$(date +%Y-%m-%d).log"

Разбор команды:

  • user@host — укажите имя пользователя и хост.
  • script -T -B — запускает утилиту script, где -T отключает вывод меток времени, а -B включает режим "броуновского движения" для более точного отображения вывода.
  • $(hostname) — возвращает имя хоста, на котором выполняется команда.
  • $(date +%Y-%m-%d) — генерирует текущую дату в формате ГГГГ-ММ-ДД, что позволяет создавать уникальные и понятные названия файлов.

Этот метод запускается автоматически при каждой SSH-сессии и выводит всю информацию в файл журнала, который можно будет впоследствии просмотреть.

2. Использование терминальных мультиплексоров (TMUX или Screen)

TMUX и Screen — это мощные инструменты для управления несколькими консольными сессиями. Они позволяют сохранять историю команд, а также выводить и записывать сессии в различные файлы.

Для начала работы с TMUX:

  1. Установите TMUX, если он еще не установлен:
    sudo apt install tmux
  2. Запустите новую сессию TMUX:
    tmux new -s имя_сессии
  3. Внутри сессии TMUX вы можете выполнять свои команды, после чего вы можете сохранить вывод, нажав Ctrl-b затем [ для перехода в режим копирования, и Ctrl-b затем : чтобы ввести команду save-buffer путь_к_файлу.log.

3. Оркестрация с помощью платформ Jenkins или Rundeck

Если вы работаете в профессиональной среде, возможно, стоит рассмотреть более сложные решения. Платформы, такие как Jenkins или Rundeck, позволяют автоматически выполнять скрипты и записывать их вывод в базы данных. Это может оказаться полезным для более крупных проектов, где необходимо управлять большими объемами данных и многими задачами одновременно.

Заключение

Возможности автоматизации записи SSH-сессий в Linux обширны и многообразны. Используя команды script, TMUX или даже более сложные инструменты оркестрации, вы можете значительно упростить процесс записи и анализа своих действий на сетевом оборудовании. Это не только повысит продуктивность, но и обеспечит прозрачность ваших операций, позволяя легко отслеживать изменения и проводить анализ в будущем.

Оцените материал
Добавить комментарий

Капча загружается...