двунаправленная функциональность socat с nc

6940
Ben

Этот вопрос как-то связан с https://superuser.com/questions/270698/how-is-it-called-when-listeningconnecting-two-sockets-and-exchangeing-data-betw

В тестовой настройке у меня открыто три окна терминала, в которые я запускаю

Term1: "nc -l 55545" Term2: "nc -l 55546" Term3: "socat tcp:localhost:55545 tcp:localhost:55546" 

Вход в Term1 теперь появляется в Term2, а вход в Term2 появляется в Term1.

Это желаемое поведение. Как я могу добиться такого поведения, используя только nc?

Когда я бегу в

Term3: "nc localhost 55545 | nc localhost 55546" 

затем ввод в Term1 появляется в Term2, а ввод в Term2 появляется в Term3. Как я могу сделать трубу двунаправленной? По возможности без временных файлов.

3

1 ответ на вопрос

11
larsks

Это прямо со страницы Википедии на Netcat . В Term3 вы бы запустили:

mkfifo backpipe nc localhost 55545 0<backpipe | nc localhost 55546 1>backpipe 

Это делает именно то, что вы хотите. Он использует FIFO, чтобы получить вывод с левой стороны обратно в правую. Строго говоря, это не временный файл - FIFO - это именованный канал между двумя процессами.

или я что то не так? Похоже, вам нужно ссылаться на переменную со знаком $, и вы можете оставить дескрипторы файлов 0 и 1? Alexander Mills 6 лет назад 0
Конечно, вы всегда можете использовать неявные файловые дескрипторы. Я просто был откровенен, когда писал это * 7 лет назад *. Я не уверен, на какую переменную вы ссылаетесь; в моем ответе нет переменных. larsks 6 лет назад 1
хорошо, что работает, я следую Alexander Mills 6 лет назад 0