(首先,我只想说我是这个主题的初学者。其次,我花了几天时间寻找解决方案和其他相关问题,但没有结果,然后才在这个论坛上发布这个问题。我找不到任何适合我的代码。)
所以我有两个 Raspberry Pi,里面都有 ubuntu。他们在最终的申请中将没有互联网连接。我需要从 #2nd Pi 访问 #1st Pi 来运行一些 Python 程序。我发现通过 SSH 是可行的。
我现在面临的问题是 #2nd Pi 连接了一些按钮。我想要的是按下 #2nd Pi 中的外部按钮会反映在 #1st Pi 终端上。(我希望我的屏幕上有两个终端:一个来自第二个 Pi(主桌面),另一个来自 #1st Pi 的 ssh 终端)
在没有互联网连接的情况下,是否真的可以做到这一点?我发现一些使用 echo 的命令和一些使用“tty”系统的 post 命令,但由于没有任何先验知识,我不知道它们是否符合我的需求。
我希望在这里能找到一些建议。非常感谢所有回复的人。
答案1
SSH 仅在本地和远程计算机之间传输键盘输入和屏幕输出。没有其他的。
如何让 Pi#2 上的按钮影响 Pi#1 取决于这些按钮的功能。
如果这些按钮只是在键盘上输入一些内容,那么,当您通过 ssh 从 Pi#2 连接到 Pi#1(并在按下按钮时让该连接的终端处于活动状态)时,它们实际上会在 Pi#1 上“输入”。
如果按下按钮会在 Pi#2 上运行某些命令(假设按下按钮会导致/home/user/myscript.py
运行),那么,如果您在 Pi#1 上有相同的脚本并且也想运行它,您需要重新配置按钮以便它运行两个命令而不是一个:
/home/user/myscript.py
ssh pi_1 /home/user/myscript.py
第一个命令将在您的本地计算机(即 Pi#2)上运行脚本,第二个命令将通过 ssh 连接到 Pi#1 并告诉它在那里运行脚本。要使其正常工作,您必须在 Pi#2 和 Pi#1 之间配置基于密钥的 ssh 身份验证,以便 ssh 不会要求输入密码。
如果某个应用程序直接响应按下按钮,那么你必须重写该应用程序,以便它使用类似RPC直接与另一台 Pi 上运行的应用程序通信并在那里调用适当的过程/函数。这与 ssh 无关。
至于 Internet 连接,如果您只想在两台机器之间进行通信,则不需要 Internet 连接。但是,您必须为两台机器正确分配 IP 地址,建议将它们的主机名和 IP 地址放入/etc/hosts
文件中,以避免由于 DNS 查找失败而导致建立连接时出现长时间延迟(或者您可以完全禁用 DNS 查找)。