返回

无需 HDMI 显示器:使用键盘控制 Bash 脚本的指南

Linux

如何在没有 HDMI 显示器的情况下为 Bash 脚本提供键盘输入

引言

在某些情况下,我们可能希望在没有连接 HDMI 显示器的情况下使用键盘控制 Bash 脚本。这对于自动化任务或创建远程控制的应用程序非常有用。本文将探讨如何在不同的操作系统和场景中实现此目标。

使用 evdev 工具

evdev 是一个命令行工具,用于读取和解释来自输入设备(如键盘和鼠标)的事件。我们可以使用它来监听键盘事件,即使没有连接显示器。

sudo apt install evdev  # 安装 evdev 工具
ls /dev/input | grep -i keyboard  # 查找键盘设备
evtest /dev/input/eventXX  # 监听键盘事件(eventXX 是键盘设备的名称)

在 Bash 脚本中,我们可以使用以下代码读取键盘事件:

#!/bin/bash

while true; do
  read -s -n 1 key
  case $key in
    "a")
      echo "你按下了 'a' 键"
      ;;
    "b")
      echo "你按下了 'b' 键"
      ;;
    "q")
      exit 0
      ;;
  esac
done

使用 expect 脚本

expect 是一种用于自动化交互式程序的脚本语言。它可以连接到远程计算机并模拟键盘输入。

#!/usr/bin/expect

spawn ssh pi@raspberrypi.local  # 连接到远程计算机
send "bash /path/to/script.sh\n"  # 发送命令以启动 Bash 脚本
expect_background -key {keypress %K}  # 监听键盘事件

使用 VNC

VNC(虚拟网络计算)是一种远程显示协议,允许我们从远程计算机控制另一台计算机的桌面。通过 VNC,我们可以查看计算机的桌面,即使没有连接显示器。

  • 在远程计算机上安装 VNC 服务器(例如 TightVNC)
  • 启动 VNC 服务器
  • 在本地计算机上安装 VNC 客户端(例如 RealVNC)
  • 使用 VNC 客户端连接到远程计算机
  • 使用键盘和鼠标控制远程计算机的桌面

最佳实践

在使用键盘控制 Bash 脚本时,有一些最佳实践需要遵循:

  • 处理用户输入时使用适当的错误处理和验证。
  • 提供清晰的指示和提示,以指导用户使用脚本。
  • 考虑使用非阻塞输入方法,以避免脚本阻塞等待键盘输入。
  • 记录脚本以提高可维护性和可理解性。

结论

本文探讨了在没有连接 HDMI 显示器的情况下使用键盘控制 Bash 脚本的不同方法。这些方法包括 evdev 工具、expect 脚本和 VNC。通过实施这些方法,我们可以在各种场景中实现远程控制和脚本自动化。

常见问题解答

  • Q:是否可以使用 SSH 通过命令行控制 Bash 脚本?
    A:是的,可以使用 SSH 通过命令行连接到远程计算机并启动 Bash 脚本。

  • Q:如何处理脚本中的非字母数字输入?
    A:使用 evdev 工具时,你可以使用 evtest 命令查看事件类型并相应地处理它们。

  • Q:expect 脚本是否可以与任何远程计算机一起使用?
    A:是的,expect 脚本可以与任何支持 SSH 连接的远程计算机一起使用。

  • Q:VNC 连接是否安全?
    A:VNC 连接可以通过使用强密码和启用 TLS 加密来保护。

  • Q:这些方法是否适用于所有操作系统?
    A:evdev 工具主要用于 Linux 系统,而 expect 脚本和 VNC 可以跨多个操作系统使用。