AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 785312
Accepted
404 Name Not Found
404 Name Not Found
Asked: 2024-10-19 13:46:06 +0800 CST2024-10-19 13:46:06 +0800 CST 2024-10-19 13:46:06 +0800 CST

有没有办法可以在没有键盘的情况下安全地运行“交互式”程序?

  • 772

我的笔记本电脑仅通过 wifi 连接到互联网,但偶尔会断开连接。发生这种情况时,我无法ssh进入,必须亲自登录才能重新连接 wifi nmcli(我没有设置任何图形)。

不幸的是,一些键盘键没有反应,这些键是用户登录和输入 wifi 密码所必需的。

因此,我设置了一个用户帐户,其名称仅使用有效的键,其登录“shell”是一个用于重新连接 wifi 的脚本:

#!/usr/bin/bash

if /usr/bin/nmcli device wifi connect 'SSID' password 'PASSWORD'; then
    echo "Connected as $(ip -json -4 address show wlp2s0 | jq -r '.[0].addr_info[0].local')"
else
    echo 'Failed to connect to wifi'
fi

read -sN 1 -p 'Press any key to exit...'
wirec:x:970:969::/:/opt/wirec/wirec

这绝对不是一个很好的设置,但它在我等待新键盘到达时可以工作。我还发现它NetworkManager有一个自动重新连接功能,这确实是我想要的。但它确实让我思考:

在一般情况下,当程序需要敏感的交互式输入,并且没有网络连接,也没有键盘时,是否有可能将输入提供给程序?或者,当有网络运行时将其写下来是否是最好的选择?

security
  • 2 2 个回答
  • 110 Views

2 个回答

  • Voted
  1. Ole Tange
    2024-10-19T22:06:10+08:002024-10-19T22:06:10+08:00

    我使用script(https://linux.die.net/man/1/script)

    echo typed via pseudotty |
      script -q -f -c the-command-to-run
    

    但是对于您的特殊情况,我会使用rina并让其在tmux或中运行screen:

    ping 8.8.8.8 | rina /usr/bin/nmcli device wifi connect 'SSID' password 'PASSWORD'
    

    如果 10 秒内无法 ping 8.8.8.8,请运行该命令。

    将 8.8.8.8 替换为您的 ISP 的路由器。

    丽娜:https://git.data.coop/tange/tangetools/src/branch/master/rina

    • 3
  2. Best Answer
    telcoM
    2024-10-19T20:43:06+08:002024-10-19T20:43:06+08:00

    在一般情况下,当程序需要敏感的交互式输入,并且没有网络连接,也没有键盘时,是否有可能将输入提供给程序?

    嗯,这取决于程序愿意接受什么类型的输入设备。

    请注意,命令行程序等nmcli使用TTY 设备进行输入,而不是专门使用键盘。因此,任何可以表示为 TTY 设备的东西都可以工作:如果您的笔记本电脑有 RS-232 串行端口或 USB 转串行适配器,您可以轻松地将其用于命令行会话,但您需要一些硬件作为串行电缆另一端的终端。

    对于大多数 Linux 发行版,还需要进行一些最低限度的设置。例如,在使用 的现代发行版中systemd,通常只需要一个命令即可使系统持续接受/dev/ttyS0串行端口上的登录:。systemctl enable --now [email protected]

    如果您愿意编写自定义 TTY 设备驱动程序,那么基本上任何事情都可以:如果您能输入的只有一条数据线和一条地线,那么您可以制作一个接受摩尔斯电码输入的 TTY 设备。除非您已经精通摩尔斯电码,否则您可能仍然更喜欢可以在输出端直观显示字符的东西 :-)

    如果现有驱动程序已涵盖可用硬件,而您不想进行内核级编程,也可以在用户空间中进行编程。最简单的方法是使用桌面环境的功能将自定义按键操作分配给鼠标按钮事件等;然后您可以使用多按钮游戏鼠标代替数字键盘。

    screen或者,您可以获取或之类的实用程序的源代码tmux并重写它们的输入处理以读取可用的任何输入设备(甚至是一组原始的 GPIO 引脚);然后,该实用程序将处理设置伪 TTY(PTY)设备,该设备可用于使用您的自定义输入硬件运行任何基于 TTY 的交互式程序。

    • 2

相关问题

  • 将外部 IP 放入变量中 - grep 操作失败 [重复]

  • 简而言之,OpenBSD 的承诺是什么?

  • 加强 rhel6/7 服务器的安全性 [关闭]

  • 如果某人被授予 root 访问权限,是否可以劫持服务器作为人质?[关闭]

  • 是否有实现 RFC 5848“签名系统日志消息”的系统日志守护程序?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve