6

У меня Raspberry Pi работает под управлением Debian Linux, и к нему подключен RFID-ридер. Считыватель RFID ведет себя как клавиатура. Каждый раз, когда я сканирую тег, он набирает номер тега и затем возврат каретки.

Моя проблема в том, что я хочу перенаправить вывод считывателя RFID на мой сеанс SSH. Это означает, что все, что набрано на физической клавиатуре пи, должно отображаться в моем окне SSH.

Я пытался с: cat /dev/tty0 но он не будет работать, потому что пользователь не вошел в систему.

Есть ли способ отключить экран входа в систему после загрузки пи, а затем перенаправить весь ввод через SSH?

2 ответа2

1

У меня есть именно этот случай использования (распи с RFID-ридером, который эмулирует USB-клавиатуру).

Я решил проблему, создав новый модуль systemd для запуска моего скрипта на экране (чтобы я мог видеть, что происходит, путем зеркального отображения сессии через ssh).

1. Создайте /etc/systemd/system/my-tty1.service:

[Unit]
Description=my tty1-service
After=getty.target
Conflicts=getty@tty1.service

[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

Это запустит ваш скрипт (или программу) для обработки ввода в сеансе экрана с именем myTTY1.

2. Включите службу, чтобы она запускалась после загрузки:

systemctl enable my-tty1.service

3. Прекратите getty, начните свое обслуживание:

systemctl stop getty@tty1.service
systemctl start my-tty1.service

4. Теперь вы можете подключиться к экранной сессии с помощью screen -x myTTY1 через ssh. Отключите, отсоединив экран с помощью CTRL+A , а затем D

1

Одним из решений является изменение системы инициализации, поэтому процесс getty получает tty и вызывает ваш скрипт. Затем ваш скрипт может инициализировать именованный канал (он же fifo) и перенаправить на него стандартный ввод.

Затем вы можете войти через ssh и читать из этого канала.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .