Как найти свободный порт TCP
Как мне найти абсолютно свободный порт TCP на сервере? Я пробовал командную строку;
netstat -an
но мне сказали, что те, которые имеют статус LISTENING, уже используются.
Я также попробовал инструмент под названием TCPView, но он снова показал, какие порты TCP используются. Я знаю, как подключиться к порту через telnet, но мне нужно найти бесплатный.
3 ответа
Решение
Вдохновленный 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