Я использую socat
для быстрого захвата баннера telnet, например:
for ip in $list
do
socat -T 1 - tcp:$ip:23 &
done
Он перебирает список указанных IP-адресов и для каждого из них вызывает socat
, который связывает TCP socket
на порту 23 с stdin
(-) и отключается через одну секунду, работая в фоновом режиме. Проблема в том, что все фоновые процессы используют один и тот же stdin
, поэтому все они будут зависать. Я пробовал вариант readline
, а также подавлял stdin
с помощью </dev/null
, но безрезультатно. Например, netcat
ведет себя точно так же, если только -d
не указано для игнорирования ввода.
Строка socat
, которую я указал, является частью скрипта, который используется для других целей, поэтому было бы неплохо, если бы проблему можно было решить, не прибегая к masscan
, nmap
или netcat
. Спасибо.
-
заменой процесса, которая ничего не делает? это:socat -T 1 <(:) tcp:$ip:23 &
. - person gniourf_gniourf   schedule 04.10.2015< /dev/null
перед&
, верно? - person that other guy   schedule 04.10.2015socat
должно быть разрешено время ожидания через одну секунду. Еслиecho -n |
или</dev/null
предоставляются с одного конца конвейера или с другого, он ничего не отправляет и немедленно завершает сеанс, иногда даже до отображения баннера. При наличии<(:)
socat
жалуется на то, что /dev/fd/.. является файловой системой только для чтения. - person Ulrik   schedule 04.10.2015