Я возобновляю обсуждение "Проверьте, открыт ли удаленный хост / порт - невозможно использовать ни 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