Existe uma maneira de um computador poder compartilhar um dispositivo no /dev/
diretório com outro computador e o outro computador interagir com ele se for local? Algo análogo a um túnel SSH?
Uma câmera por exemplo, ou uma conexão serial com um arduino, ou até mesmo a do computador /dev/random
?
Não, isso não é possível via
ssh
- você precisaria montar o dispositivo no servidor, então pode usarsshfs
para montar o local remoto em um local.Sim, enviar e receber dados é possível usando
ssh
comandos remotos:lhe dará a saída do
random
dispositivo do servidor. Da mesma forma que você pode enviar dados:Isso é "como local" - não. mas dependendo de seus planos pode ser suficiente.
Em suma, não. As maneiras como você interage com os nós do dispositivo são "mais ricas" do que o que você pode fazer com arquivos reais, e sem o kernel na máquina remota ter acesso à sua memória de processo local (o que não acontece na rede), isso não é possível.
Para não mencionar muitas coisas com as quais você gostaria de trabalhar simplesmente têm requisitos de largura de banda excessivamente altos (por exemplo, uma câmera de alta qualidade em modo bruto), requisitos de baixa latência (qualquer dispositivo USB em massa que espera que algo aconteça no lado do computador dentro de um tempo especificado) ou outros aspectos funcionais que impossibilitam a operação na rede em um nível de dispositivo bruto.
Por isso, para algumas classes de dispositivos, onde é possível dividir o que deve ser feito próximo ao dispositivo e o que pode ser feito remotamente, existem outras abordagens: Por exemplo, impressoras podem ser compartilhadas muito bem via rede usando CUPS, dispositivos usando pipewire, jackd ou outros daemons, dispositivos de vídeo usando VLC, dispositivos de armazenamento como sistemas de arquivos usando NFS, CIFS, … ou como dispositivos de bloco (por exemplo, no Ceph).
Sua porta serial seria bastante fácil de abstrair - você faz a configuração (principalmente: abertura, configuração da taxa de transmissão) na máquina em que ela está e, em seguida, basta usar um daemon de rede mínimo que lê e grava nela.
Na verdade, esse é um padrão bastante comum, ter uma porta UART de alguma forma endereçável pela rede, na automação do setor. No Linux, o
socat
programa pode fazer coisas assim.