【发布时间】:2015-08-18 02:16:39
【问题描述】:
我有一台以多用户模式运行的服务器,它连接到键盘和显示器。在另一台计算机上,我想通过 SSH 连接到服务器并运行一个程序,该程序从键盘捕获输入并将文本打印到显示器。键盘和显示器永远不会用于任何其他目的。
现在,当服务器启动时,显示器上会显示一个(文本)登录屏幕。我知道我可以写入相应的/dev/tty 设备。但是,键盘也会写入同一个地方。
如何在 Linux 上捕获键盘事件并将监视器用作文本显示器?
我可能缺少一些关于 Linux 上硬件接口的基础知识。我需要知道什么?
赏金时间不多了 - 如果有人想进一步充实这一点,我将相应奖励:
我执行了以下操作以防止任何登录程序启动:
systemctl mask serial-getty@ttyO0
systemctl mask systemd-logind
systemctl mask getty@tty1
然后我在需要时运行我的程序:
openvt -c 1 -f /path/to/my/program
这将是一个完全令人满意的解决方案,除了那个讨厌的 -f。 tty1 上正在运行什么?我能做些什么来阻止它吗?我应该阻止它吗?
值得注意的是,这个解决方案确实满足了我的所有需求——据我了解,我正在接管 tty,从而可以访问它的标准输入(从键盘接收输出)和标准输出(打印到监视器)。
【问题讨论】:
-
为什么不让 sshd 在登录时运行适当的程序?
-
你能详细说明一下吗?我看不出“如何启动程序”和“程序如何实现其目标”之间的联系。
-
哦,我明白了。您要连接的键盘和显示器已连接到 服务器。这就是
openvt的用途。 -
您可以替换显示登录提示并等待键盘输入的程序。这样,您的程序将控制控制台终端(您的程序写入其标准输出的内容将显示在控制台上,您在键盘上键入的内容将输入程序的标准输入)而不是原始程序在那里。
-
好的,因此在 systemd 系统上的起点是禁用 getty@tty1.service 并编辑
/etc/systemd/logind.conf以设置NAutoVTs=0和ReserveVT=0。现在没有登录提示将处于活动状态,我可以写信给/dev/tty0来打印我想要的内容。那么我怎样才能看到键盘连接到什么? (例如,Alt-F2 仍会尝试更改为 tty2)。
标签: linux keyboard hardware-interface