Встречайте, новая утилита cl-remote для быстрого и параллельного выполнения команд на удаленных рабочих станциях

В Bash есть одна замечательная особенность - умение обращаться к TCP (или UDP) сокетам как к файлам. Это позволяет выполнять простые сетевые проверки на открытый порт. Интересной особенностью такого подхода является очень быстрая скорость выполнения операции. Если привязаться к определенному порту, который присутствует в администрируемых вами системах, вы можете легко выделить их среди других систем в вашей сети.

Если мы сложим такие составляющие, как идентификация по порту, сверх быстрое выполниние проверки, параллельное сканирование, одновременное выполнение команд или скриптов с поддержкой управления количества потоков, то получим новую утилиту cl-remote, входящую в состав нового пакета app-admin/calculate-remote. Проект получился очень увлекательным и интересным! Постараюсь вас заинтересовать.

Особенности cl-remote

  • Время сканирования сети с маской /24 составляет 1 секунду. Этого времени будет достаточно для выполнения простого действия, например вызов uptime.
  • Передавать команды можно не только параметрами, но и заготовленными скриптами, выполняя сложные действия.
  • Утилита включает несколько полезных скриптов, например для отправки уведомления пользователям через notify, обновления систем из образа, проверки установленной версии системы, корректность настройки сетевого интерфейса.
  • Действия выполняются как путем выбора заданной сети, так и указанием IP адреса или имени хоста системы.

Настала очередь примеров!

  1. Показать все ПК с незакрытыми root консолями:

Если вместо root указать логин пользователя и добавить параметр --net all, мы можем отыскать сотрудника в любом офисе.

  1. Показать все системы с устаревшей версией ПО:


    Можно отфильтровать найденные:

  2. Вот такой незамысловатой командой можно поменять на всех ПК root пароль передав его хэш, который можно посмотреть в /etc/shadow:

  3. Этой командой я запустил в 4 потока обновление систем:


    Обновление ранее уже было установлено, но не все ПК были перезагружены. Скрипт ‘upgrade’ проверяет наличие пользователей в системе и перезагружает только в случае отсутствия пользователей.

  4. Еще довольно полезным оказался скрипт netspeed, отображающей поддерживаемую и реальную скорость сетевого интерфейса:


    Удобно для выявления аномалий. Пример вызова с фильтром:

    Есть работа для наших админов!

  5. Здесь я отобразил время работы всех ПК, на которых остались залогинены пользователи. После этого могу послать им сообщение:

Как видите возможности программы ограничены только вашей фантазией. Больше примеров вы найдете в справке cl-remote и в репозитории проекта: https://git.calculate-linux.org/calculate/calculate-remote

Успешной работы!

3 Likes

Вещь! Ансибл на минималках.

1 Like