nc-l в фоне сразу закрывается (nc-l 1234 и)

Если у Вас есть BIOS (никакой UEFI) переустанавливают и гарантируют, что установщик не настраивает efi раздел. Если это не поражает личинку (Вы' не видите меню), проблема с передачей от встроенного микропрограммного обеспечения до загрузчика. установка личинки к диску, а не разделу может помочь с этим также.

У меня была подобная проблема с Centos на моей плате BIOS/UEFI при попытке установить раздел начальной загрузки EFI. Я закончил тем просто, что использовал загрузочную конфигурацию BIOS.

3
23.07.2015, 19:59
2 ответа

Предполагаемые команды, выполняемые в неинтерактивных оболочках с управлением задания отключены (как именно в случае в сценариях оболочки) получить их stdin , неявно перенаправлена ​​из / dev / null .

sh -c 'nc -l 12345 1>nc_out & lsof -p $!'

Из POSIX.1-2008 :

2. Командный язык Shell

[...]

асинхронные списки

Если команда прекращается оператором управления ('&'), Оболочка должна выполнять команду асинхронно в подпункте. Это означает что оболочка не должна ждать команды, чтобы закончить перед выполнением следующая команда.

Формат для запуска команды на заднем плане:

 Command1 & [Command2 & ...]
 

Стандартный вход для асинхронного списка, перед любым явным Выполняется перенаправления, считается присвоенным файлу Это имеет те же свойства, что и / dev / null . Если это интерактивный Оболочка, это не должно быть. Во всех случаях явное перенаправление стандарта Вход должен переопределять эту активность.

Когда клиент Client устанавливает свое подключение к localhost и уже запущено NC через порт 12345 , фон NC Команда, по-видимому, обнаруживает EOF на своем stdin и запускает процесс отключения, потому что он принудительно считывает от / dev / null. Возвращаемое значение нуля Zero чтения ( MAN 2 READ ) указывает на конец файла.

# strace output (from http://pastebin.com/YZHW31ef)
14:32:26 read(0, "", 2048)              = 0
14:32:26 shutdown(4, 1 /* send */)      = 0

Вот некоторые решения для сохранения Telnet , работающих и связывающиеся с : :

sh -c 'nc -l 12345 0<&0 1>nc_out &'
sh -c 'nc -l 12345 0<&- 1>nc_out &'
sh -c 'tail -f /dev/null | nc -l 12345 1>nc_out &'
sh -c 'rm -f fifo; mkfifo fifo; exec 3<>fifo; nc -l 12345 0<fifo 1>nc_out &'
5
27.01.2020, 21:16
nc -ld host port >> logfile &

-d Не пытайтесь читать со стандартного ввода.

Это будет выполнено ‘nc’ в фоновом режиме.
Поскольку при фоновом выполнении 'nc' он будет читать stdin stdout stderr.
Если чтение stdin не запрещено, оно прервется.

пример:

nc -ld 12345 > nc_out

nc 127.0.0.1 12345 
#enter something

Данные сохраняются в файле nc _out .

0
27.01.2020, 21:16

Теги

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