Redirecionar entrada de teclado físico para SSH

6

Estou tendo um raspberry pi executando o debian linux e tenho um leitor de RFID conectado a ele. O leitor RFID se comporta como um teclado. Toda vez que eu digitalizo uma tag, ela digita o número da tag e depois o retorno.

Meu problema é que eu quero redirecionar a saída do leitor de RFID para minha sessão SSH. Isso significa que tudo o que é digitado no teclado físico do pi deve ser exibido na minha janela SSH.

Eu tentei com: cat /dev/tty0 , mas não funciona porque o usuário não está logado.

Existe uma maneira de desabilitar a tela de login após o boot pi e, em seguida, redirecionar todas as entradas através do SSH?

    
por Dimme 12.09.2012 / 22:28

2 respostas

1

Uma solução é mudar o sistema init, assim um processo getty recebe um tty e invoca seu script. Seu script pode então inicializar um pipe nomeado (aka fifo) e redirecionar o stdin para ele.

Então você pode fazer o login via ssh e ler a partir desse canal.

    
por 13.09.2012 / 12:05
1

Eu tenho esse caso de uso exato (raspi com leitor de RFID que emula um teclado USB).

Eu resolvi o problema criando uma nova unidade systemd para iniciar meu script em uma tela (para que eu possa ver o que está acontecendo, espelhando a sessão via ssh).

1. Crie /etc/systemd/system/my-tty1.service :

[Unit]
Description=my tty1-service
After=getty.target
[email protected]

[Service]
Type=simple
ExecStart=/usr/bin/screen -S myTTY1 /path/to/my/script
StandardInput=tty-force
StandardOutput=inherit
StandardError=inherit

[Install]
WantedBy=multi-user.target

Isso inicia seu script (ou programa) para manipular a entrada em uma sessão de tela chamada myTTY1.

2. Ative o serviço para que ele seja iniciado após a inicialização:

systemctl enable my-tty1.service

3. Pare o getty, inicie o seu serviço:

systemctl stop [email protected]
systemctl start my-tty1.service

4. Agora você pode se conectar à sua sessão de tela com screen -x myTTY1 via ssh. Desconecte separando a tela com CTRL+A , seguido por D .

    
por 02.03.2018 / 11:16