s="$(cat 2>/dev/null /dev/tcp/${target_ip}/${target_port} & WPID=$!; sleep 3 && kill $! >/dev/null 2>&1 & KPID=$!; wait $WPID && echo 1)" ; s="${s:-0}"; echo "${s}" | sed 's/0/2/;s/1/0/;s/2/1/'
Данная команда позволяет проверить доступность порта на удаленном хосте, используя только команды bash.
Краткое описание:
— Сначала создается переменная «s», в которую записывается результат выполнения следующей последовательности команд:
— Используется команда «cat» для чтения из /dev/null (пустого файла, не содержащего данных) и вывода его содержимого в «s».
— Файловые дескрипторы stderr и stdout перенаправляются в /dev/null (игнорируются).
— Создается сокет используя /dev/tcp/${target_ip}/${target_port}.
— Используется фоновый процесс для выполнения команды.
— Задержка в 3 секунды с помощью команды «sleep».
— Процесс, созданный ранее, убивается с помощью команды «kill».
— Задержка в 3 секунды до выполнения последующих команд.
— Выполнение команды «wait», ожидание завершения фонового процесса.
— Если фоновый процесс успешно завершился, в «s» записывается значение «1», иначе «0».
— Создается новая переменная «s» с помощью присваивания значения «s» по умолчанию, равного «0».
— Значение «s» передается в команду «echo» и затем обрабатывается с помощью команды «sed»:
— Символы «0» заменяются на «2».
— Символы «1» заменяются на «0».
— Символы «2» заменяются на «1».
Данная команда полезна при необходимости проверить доступность порта на удаленном хосте без использования сторонних инструментов. Возможной альтернативой является использование программных инструментов, таких как nmap.
Аргументы, передаваемые команде:
— ${target_ip} — IP-адрес удаленного хоста.
— ${target_port} — номер порта на удаленном хосте, который необходимо проверить на доступность.