socat fornece “Recurso temporariamente indisponível” no OS X High Sierra

0

Estou tentando criar uma porta local virtual que encaminha tudo para um computador remoto via TCP com este comando:

sudo socat GOPEN:/dev/ptyp0,ignoreeof TCP:192.168.254.106:8080
2018/09/08 21:48:51 socat[10860] E open("/dev/ptyp0", 012, 0666): Resource temporarily unavailable

Este é um OS X High Sierra recém-instalado, então duvido que eu esteja sem recursos.

sudo lsof /dev/ptyp0

Não mostra nada ... e eu obtenho o mesmo resultado mesmo se eu tentar ptyp1, ptyp2 etc.

    
por Daniele Testa 08.09.2018 / 15:52

1 resposta

1

Você não pode simplesmente abrir um arquivo aleatório e esperar que ele funcione. (Na verdade, você deve abrir cada um deles, até encontrar um que seja gratuito). Em vez disso, use a sintaxe socat adequada para ele:

socat PTY,link=/tmp/mytty TCP:192.168.254.106:8080

Isso abrirá o lado mestre de um pseudo-terminal disponível, criará um link simbólico em /tmp/mytty (modifique conforme apropriado) para o lado escravo e encaminhará entre o lado mestre e sua porta TCP remota.

Agora você pode usar /tmp/mytty (ou o slave-pty vinculado a ele) como um tty normal. ("Virtual local comport" soa suspeitamente como um termo do Windows).

BTW, isso funcionará em todas as plataformas que suportam pseudo-terminais, porque socat usa o método adequado à plataforma.

Editar

O que você vê como uma opção no programa Java que você executa depende inteiramente do programa Java que você executa, sobre o qual eu não sei nada (e você não nos disse nada sobre). É perfeitamente possível que o programa Java tenha opções adicionais para informá-lo sobre outros programas. Também é possível que não tenha essas opções.

Os arquivos em /dev fazem parte de um sistema de arquivos especial chamado devfs , que mostra os dispositivos disponíveis para o kernel. Aparentemente você não tem permissão para criar links simbólicos.

Portanto, se todo o seu programa Java fizer a varredura de arquivos /dev/cu.* , você estará sem sorte.

Você sempre pode tentar encontrar o código-fonte do seu programa Java e alterá-lo. Ou até mesmo corrigir o binário (substitua a string /dev/cu por outra coisa).

    
por 08.09.2018 / 20:31