Как найти свободный порт TCP

Как мне найти абсолютно свободный порт TCP на сервере? Я пробовал командную строку;

netstat -an

но мне сказали, что те, которые имеют статус LISTENING, уже используются.

Я также попробовал инструмент под названием TCPView, но он снова показал, какие порты TCP используются. Я знаю, как подключиться к порту через telnet, но мне нужно найти бесплатный.

3 ответа

Решение

netstat -lntu

Это решит вашу цель.

Вдохновленный https://gist.github.com/lusentis/8453523

Начните с начального порта и увеличивайте его, пока он не станет полезным

BASE_PORT=16998
INCREMENT=1

port=$BASE_PORT
isfree=$(netstat -taln | grep $port)

while [[ -n "$isfree" ]]; do
    port=$[port+INCREMENT]
    isfree=$(netstat -taln | grep $port)
done

echo "Usable Port: $port"

В Bash вы можете написать просто for цикл, чтобы проверить, какие порты TCP свободны, например

$ for i in {1..1024}; do (exec 2>&-; echo > /dev/tcp/localhost/$i && echo $i is open); done
22 is open
25 is open
111 is open
587 is open
631 is open
841 is open
847 is open
1017 is open
1021 is open

Для получения дополнительной информации проверьте: Расширенное руководство по написанию сценариев Bash: Глава 29. /dev а также /proc

Другие вопросы по тегам