Назад | Перейти на главную страницу

ncat по протоколу UDP (RH 7)

Я возобновляю обсуждение "Проверьте, открыт ли удаленный хост / порт - невозможно использовать ни GNU Netcat, ни NMap - RHEL 7".
Я не могу получить правильный результат, потому что в моих версиях rh (5.6 и 7.1) нет пути / dev / tcp или / dev / udp.

Вот https://access.redhat.com/solutions/1214763 объясняется, что это можно решить с помощью

echo | nc -w1  $host $port >/dev/null 2>&1  ;echo $? 

и он работает только с протоколом TCP, но не с UDP:

echo | nc -w1 -u $host $port >/dev/null 2>&1  ;echo $? 

Действительно, при проверке несуществующей службы он заканчивается на 0. Использование того же IP-адреса и порта на RH 5.6 со старой опцией -z

nc -zu $host $port and it ends with 1, correctly.

Есть идея решить эту проблему?

Спасибо

нет пути / dev / tcp или / dev / udp

Это верно. Их нет в вашей файловой системе как каталоги, но когда вы включаете имя хоста / IP-адрес и номер порта И используете их в перенаправлении трепать сотворит чудеса. Как сказано в руководстве:

Bash обрабатывает несколько имен файлов специально, когда они используются в перенаправлениях, как описано в следующей таблице:

  • /dev/fd/fd
    Если fd является действительным целым числом, файловый дескриптор fd дублируется.
  • /dev/stdin
    Дескриптор файла 0 дублируется.
  • /dev/stdout
    Дескриптор файла 1 дублируется.
  • /dev/stderr
    Дескриптор файла 2 дублируется.
  • /dev/tcp/host/port
    Если host является действительным именем хоста или Интернет-адресом, и port - это целочисленный номер порта или имя службы, bash пытается открыть TCP-соединение с соответствующим сокетом.
  • /dev/udp/host/port
    Если host является действительным именем хоста или Интернет-адресом, и port - это целочисленный номер порта или имя службы, bash пытается открыть UDP-соединение с соответствующим сокетом.

Вместо, например:

$ ls -l /dev/tcp/serverfault.com/80  
ls: cannot access /dev/tcp/serverfault.com/80: No such file or directory

попробуйте перенаправление с > или <

$ echo "" > /dev/tcp/serverfault.com/80
$ echo " " > /dev/tcp/serverfault.com/81
-bash: connect: Connection refused