Иногда сервис работает, но приложение всё равно не может подключиться. Одна из частых причин - порт недоступен между серверами: firewall, security group, routing или сервис слушает только localhost
Проверить это можно прямо из shell.
▪️ Самый простой способ - nc (netcat)
nc -zv db-server 5432
-z - проверить порт без передачи данных-v - показать результатПример вывода:
Connection to db-server 5432 port [tcp/postgresql] succeeded!
Или:
Connection refused
▪️ Проверка нескольких портов
for port in 80 443 8080; do
nc -z host "$port" && echo "open: $port"
done
▪️ Чистый bash без утилит - /dev/tcp. Мало кто знает, но bash умеет открывать TCP-соединения:
echo > /dev/tcp/db-server/5432
Если порт открыт - команда завершится без ошибки.
Можно сделать проверку:
if timeout 2 bash -c "</dev/tcp/db-server/5432"; then
echo "Порт открыт"
else
echo "Порт закрыт"
fi
▪️ Проверка списка серверов. Простой скрипт:
servers="app1 app2 app3"
port=6379
for host in $servers; do
if nc -z "$host" "$port" 2>/dev/null; then
echo "$host OK"
else
echo "$host FAIL"
fi
done
BashTex 📱 #bash #network