Я ищу быстрый и простой метод для правильного тестирования, открыт ли данный TCP-порт на удаленном сервере изнутри оболочки скрипт.
Мне удалось это сделать с помощью команды telnet, и она отлично работает, когда порт открыт, но, кажется, не истекает время ожидания, когда это не так, и просто зависает там ...
Вот образец:
l_TELNET=`echo "quit" | telnet $SERVER $PORT | grep "Escape character is"`
if [ "$?" -ne 0 ]; then
echo "Connection to $SERVER on port $PORT failed"
exit 1
else
echo "Connection to $SERVER on port $PORT succeeded"
exit 0
fi
Мне нужен либо лучший способ, либо способ заставить telnet тайм-аут, например, если он не подключается менее чем за 8 секунд, и вернуть то, что я могу поймать в Shell (код возврата или строка в stdout) .
Я знаю метод Perl, который использует модуль IO :: Socket :: INET и написал успешный сценарий, проверяющий порт, но предпочел бы избегать использования Perl, если это возможно.
Примечание. мой сервер работает (откуда мне нужно это запустить)
SunOS 5.10 Generic_139556-08 i86pc i386 i86pc