Пинг нескольких хостов одновременно под SSH-прокси

Пинг нескольких хостов под SSH-прокси Linux

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

Еще по теме: Виртуальный номер для приема СМС

Как пинговать несколько хостов одновременно

Для решения этой задачи потребуется:

  • cat — позволяет прочитать IP-адреса из CSV-файла.
  • xargs — для распараллеливания заданий ping.
  • bash — для создания сессии bash для каждого задания ping.
  • ssh — для выполнения ping через прокси.
  • echo — для вывода сообщений на экран.

Как на прямую пинговать несколько хостов

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

Создаем файл с именем server.csv и добавляем хосты, которые необходимо пингануть:

После чего выполняем команду:

Ожидаемый результат, если все хосты доступны, будет таким:

Если один или несколько хостов не пингуются:

Это работает следующим образом:

  • cat передает содержимое server.csv в xargs.
  • xargs запускает команду bash -c «», все, что находится между «», будет выполнено bash.
  • Параметр -I указывает xargs заменить {} каждой строкой из файла server.csv.
  • Параметр -P8 создает 8 параллельных процессов xargs.
  • Команда ping -c4 {} отправляет 4 пакета ICMP на имя хоста/ip, которые заменят {}
  • &> /dev/null это перенаправит все stdout и stderr из ping в /dev/null, чтобы скрыть любой вывод ping с экрана.
  • && echo {}:success || echo {}:fail, если ping удалось получить ответ ping от хоста, тогда он отобразит имя/ip хоста и добавит к нему success (успешное соединение), если ему не удастся, отобразит имя/ ip хоста и добавит к нему fail (соединение не удалось).

Как пинговать несколько хостов под SSH-прокси

В моем случае имя прокси-сервера ssh — proxy01. В таком случае нужно внести следующие изменения в предыдущую команду:

Я добавил в команду ssh proxy01 ''.  Команда подключится к серверу proxy01 и выполнит команды ping, как вы можете видеть, изменений немного, но в результате все команды теперь выполняются из proxy01, у которого есть доступ к хостам, которые я хочу пингануть.

Полезные заметки:

  • -P — изменение этого параметра изменяет количество параллельных заданий.
  • -c4 — изменение этого параметра изменит количество посылаемых на хост ICMP (пинг-пакетов).
  • ssh — может принимать множество различных параметров, которые я не использовал. Например, имя пользователя; если вы не используете ключи ssh. Он запросит у вас пароль, если вы не используете инструмент sshpass.

На этом все. Теперь вы знаете, как пинговать несколько хостов одновременно. Надеюсь, статья была интересной и полезной.

РЕКОМЕНДУЕМ:

ВКонтакте
OK
Telegram
WhatsApp
Viber

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

Ваш адрес email не будет опубликован.