Socat não está limpando limpa depois de si mesmo via ssh

0

Estou tentando falar com uma máquina que está conectada à minha máquina local, usando o ssh, o socat e outro utilitário que eu fiz.

Na máquina de origem que estou fazendo:

ssh root@localhost -p 2004 'socat -u TCP-LISTEN:5000 OPEN:foo.test,creat'

(Os 4000 mapas para o 5000 usando meu utilitário que está atualmente em execução, não é relevante para o problema) então fazendo:

socat -d -d TCP:localhost:4000 ./some_file

E a transferência de arquivos ocorre corretamente, o problema é que eu preciso fazer esses tipos de operações em sucessão rápida e a configuração inicial do servidor socat TCP-LISTEN não sai de forma limpa, eu acho, porque preciso esperar até que a porta seja limpa , senão recebo erros de:

2016/05/14 11:56:01 socat[655] E bind(3, {LEN=0 AF=2 0.0.0.0:5000}, 16): Address already in use

Existe uma opção de socat que eu estou perdendo que limpa de forma limpa em qualquer tipo de saída? Eu basicamente preciso disso para uma transferência de arquivos, só preciso que o socat na máquina remota seja desligado uma vez.

EDIT: Eu estou propositadamente ter que usar ssh porque o caminho do arquivo para OPEN é diferente a cada vez e isso terá que ser feito rapidamente, um após o outro.

    
por Edgar Aroutiounian 14.05.2016 / 21:02

1 resposta

1

Você pode alterar o TCP-LISTEN:5000 para TCP-LISTEN:5000,reuseaddr , mas o problema pode ser simplesmente que, por exemplo, durante o teste você está interrompendo o ssh com Control-C e isso não está parando o socat no controle remoto.

Note que você pode evitar ter que executar o socat repetidamente para fazer a mesma coisa novamente, simplesmente pedindo a fork e escutando uma nova conexão novamente:

socat -u TCP-LISTEN:5000,reuseaddr,fork OPEN:foo.test,creat
    
por 14.05.2016 / 22:01

Tags