Como posso enviar dados através de rede ou serial para a exibição de outra máquina linux?

4

Eu tenho um segundo monitor que gostaria de usar para um log e / ou console de depuração baseado em texto. Eu não quero tê-lo como parte do meu sistema GUI / "desktop" / main.

Eu tenho este monitor conectado a uma velha caixa linux que não tem muito poder de processamento. Quando ele é inicializado, ele fica pronto no prompt login: .

Ele está conectado à LAN para que eu possa conectá-lo ao SSH. Eu sei que posso escrever na tela executando algo como ssh root@ancient echo test \> /dev/tty0

Eu gosto de usar pipes nomeados para depuração, basicamente criando um pipe nomeado com mkfifo e, em seguida, usando tail -f nele enquanto escrevo dados para ele de outros comandos / scripts / etc.

Com base nessa explicação do que estou tentando fazer, o que é uma maneira "boa" / "certa" de fazer o que estou tentando fazer ("descarregar dados" para um pipe nomeado pela rede, de modo que a saída apareceria na tela deste terminal?)

Eu sei que tenho acesso a ssh , tail , netcat ( nc ) e redirecionamento por meio de coisas como /dev/tty0 - mas não consigo descobrir como colocá-los juntos de forma eloquente . Eu vi isso:

Parece hackish usar algo como ssh root@ancient echo test \> /dev/tty0 e criar uma nova conexão para cada item de log enviado.

Um bônus seria se os dados não fossem enviados pela rede como texto simples, mas suponho que o critério não seja obrigatório se tornar as coisas muito lentas ou criar muita sobrecarga ou complicação.

Além disso, haveria alguma vantagem em usar uma conexão serial entre as duas máquinas?

Já fiz isso no passado, mas pareceu-me que, mesmo com a taxa máxima de baud de 115,200 , quando algumas centenas de linhas de código eram enviadas, parecia "atrasado" em comparação ao envio de dados pela rede. Eu sei que 115k é a "tecnologia de modem" antiga, então eu só queria saber se essa experiência mais lenta que o esperado para esse tipo de conexão direta (embora serial) é normal.

    
por cwd 20.08.2014 / 05:50

3 respostas

2

netcat vem à mente; pode ser a escolha mais sensata (dada a não sobrecarga, nenhuma abordagem de compressão para comunicações de rede) em sua máquina receptora de baixa especificação.

Um bom exemplo de uso pode ser encontrado aqui: link

    
por 20.08.2014 / 06:17
0

Você pode usar tail -f como está acostumado e canalizar isso em uma conexão ssh com a outra máquina:

tail -f fifo | ssh root@ancient cat \> /dev/tty0

Você executa cat > /dev/tty0 no outro lado, o que fará com que sua entrada retorne para o terminal. ssh passará a saída de tail para a entrada padrão de cat na rede. Todos os dados são totalmente criptografados em trânsito

Uma conexão serial funcionaria, mas a menos que uma das máquinas seja muito fraca, a sobrecarga de ssh e o tráfego de rede serão insignificantes.

    
por 21.08.2014 / 22:57
0

deve ser suficiente usando

cat > /dev/udp/ancient/12345

em uma máquina e

nc -lu 12345

do outro. Se você quiser usar o TCP para confiabilidade, basta remover a opção -u de nc e substituir /udp/ por /tcp no redirecionamento

    
por 22.08.2014 / 00:52