В Bash есть одна замечательная особенность - умение обращаться к TCP (или UDP) сокетам как к файлам. Это позволяет выполнять простые сетевые проверки на открытый порт. Интересной особенностью такого подхода является очень быстрая скорость выполнения операции. Если привязаться к определенному порту, который присутствует в администрируемых вами системах, вы можете легко выделить их среди других систем в вашей сети.
Если мы сложим такие составляющие, как идентификация по порту, сверх быстрое выполниние проверки, параллельное сканирование, одновременное выполнение команд или скриптов с поддержкой управления количества потоков, то получим новую утилиту cl-remote, входящую в состав нового пакета app-admin/calculate-remote. Проект получился очень увлекательным и интересным! Постараюсь вас заинтересовать.
Особенности cl-remote
- Время сканирования сети с маской /24 составляет 1 секунду. Этого времени будет достаточно для выполнения простого действия, например вызов
uptime
. - Передавать команды можно не только параметрами, но и заготовленными скриптами, выполняя сложные действия.
- Утилита включает несколько полезных скриптов, например для отправки уведомления пользователям через notify, обновления систем из образа, проверки установленной версии системы, корректность настройки сетевого интерфейса.
- Действия выполняются как путем выбора заданной сети, так и указанием IP адреса или имени хоста системы.
Настала очередь примеров!
- Показать все ПК с незакрытыми root консолями:
Если вместо root указать логин пользователя и добавить параметр --net all, мы можем отыскать сотрудника в любом офисе.
-
Показать все системы с устаревшей версией ПО:
Можно отфильтровать найденные:
-
Вот такой незамысловатой командой можно поменять на всех ПК root пароль передав его хэш, который можно посмотреть в /etc/shadow:
-
Этой командой я запустил в 4 потока обновление систем:
Обновление ранее уже было установлено, но не все ПК были перезагружены. Скрипт ‘upgrade’ проверяет наличие пользователей в системе и перезагружает только в случае отсутствия пользователей. -
Еще довольно полезным оказался скрипт netspeed, отображающей поддерживаемую и реальную скорость сетевого интерфейса:
Удобно для выявления аномалий. Пример вызова с фильтром:
Есть работа для наших админов! -
Здесь я отобразил время работы всех ПК, на которых остались залогинены пользователи. После этого могу послать им сообщение:
Как видите возможности программы ограничены только вашей фантазией. Больше примеров вы найдете в справке cl-remote и в репозитории проекта: https://git.calculate-linux.org/calculate/calculate-remote
Успешной работы!