2015-03-11 2 views
1

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

netstat -an 

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

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

+0

AJF: Вы пробовали ? – NeverGiveUp161

+0

@ user3560140 Да. Ваша команда просто показывает список параметров, и я попробовал несколько. Они показывают TCP-порты LISTENING, но я считаю, что они уже используются и не могут видеть свободный порт. Будет ли статус свободного порта «БЕСПЛАТНЫМ» или «ОТКРЫТО» или что? – AJF

+0

Добавьте -p к этому, он покажет процесс, который открыл порт: 'netstat -antup', все, что не используется БЕСПЛАТНО :) – NeverGiveUp161

ответ

1

В 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 

Для получения дополнительной информации, проверьте: Advanced Bash-Scripting Guide: Chapter 29. /dev and /proc

0

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

Start с портом семян и увеличить его до она годна к употреблению

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" 
Смежные вопросы