Como escrever e ler do mesmo arquivo usando dois netcats?

1

Eu gostaria de usar um arquivo como um buffer temporário para conectar dois processos netcat. Eu preciso usar um buffer porque os dados são enviados e solicitados em cada extremidade em intervalos diferentes. Eu quero usar um arquivo em vez de um buffer mkfifo real porque os dados geralmente excedem 64 kb.

Isso é o que eu tenho, mas não funciona. O arquivo nunca é gravado ou, pelo menos, não é gravado de forma que o processo do editor possa lê-lo.

# receiver
while true; do nc -l 8000 > /tmp/my_file; done

# publisher
while true; do nc -l 9000 < /tmp/my_file; done

Eu envio um texto para o destinatário assim:

echo "hello, world" | nc localhost 8000

E eu tento ler do editor assim:

curl localhost:9000

Mas curl retorna um erro como "resposta vazia do servidor" porque "hello, world" nunca foi gravado.

Estou testando isso no Mac OS, mas eventualmente preciso fazer o mesmo no Linux (Alpine, provavelmente).

    
por skyler 11.01.2018 / 21:24

1 resposta

1

Em alguns sistemas, o comando "nc" requer que você especifique a opção "-p" antes do número da porta. Tente adicionar um "-p" antes de 8000 e 9000 da seguinte forma:

# receiver
while true; do nc -l -p 8000 > /tmp/my_file; done

# publisher
while true; do nc -l -p 9000 < /tmp/my_file; done
    
por 14.01.2018 / 00:43

Tags