Оболочка логическое НЕ

Очевидно TCP-соединения могут использоваться в качестве файловых дескрипторов на Linux из bash / zsh. Следующая функция использует эту технику и должна быть быстрее, чем вызов netcat / telnet.

function EPHEMERAL_PORT() {
    LOW_BOUND=49152
    RANGE=16384
    while true; do
        CANDIDATE=$[$LOW_BOUND + ($RANDOM % $RANGE)]
        (echo "" >/dev/tcp/127.0.0.1/${CANDIDATE}) >/dev/null 2>&1
        if [ $? -ne 0 ]; then
            echo $CANDIDATE
            break
        fi
    done
}

Инструкции по использованию: привяжите вывод к переменной и используйте в скриптах. Проверено на Ubuntu 16.04

root@ubuntu:~> EPHEMERAL_PORT
59453
root@ubuntu:~> PORT=$(EPHEMERAL_PORT)

8
09.10.2016, 02:49
0 ответов

Теги

Похожие вопросы