Estou tentando vincular um PTY virtual a um dispositivo remoto que aceita conexões TCP na porta 23. A abertura e o fechamento do soquete no dispositivo de destino é um evento significativo e parte da operação do dispositivo.
No momento, estou tentando usar socat
para fazer o trabalho, com:
socat pty,link=/dev/ttyACM99,raw tcp:192.168.0.15:23
Funciona, pois consigo abrir /dev/ttyACM99
e ler / gravar dados no dispositivo - no entanto, assim que o comando socat
é executado, a porta TCP é aberta e só fecha quando socat
é finalizado .
O que eu preciso é que a porta TCP não abra até que algum outro software (não importa o que) abra /dev/ttyACM99
. Quando /dev/ttyACM99
é fechado, a conexão TCP deve ser desconectada.
Não consigo encontrar nada nas páginas de manual socat
ou no googling (embora seja uma coisa muito complicada para o google) que diz que isso é possível com socat
, e eu realmente não quero ter para ir ao incômodo de escrever meu próprio programa de encanamento (embora eu pudesse, se eu realmente precisasse).
Atualização:
Eu encontrei o parâmetro wait-slave
para o pipe PTY, que faz o que eu quero - no entanto, ele agora termina socat
no fechamento do PTY, que está longe de ser ideal.
socat pty,link=/dev/ttyACM99,raw,wait-slave tcp:192.168.0.15:23
Existe uma opção como wait-slave
ou que pode ir com wait-slave
que apenas fechará o soquete de destino em vez de fechar todo o programa? No momento, estou executando em while 'true'
, o que parece funcionar por enquanto, mas não é o ideal.