通过串行线路传输文件

通过串行线路传输文件

我有两台 Linux 计算机,它们之间有一条串行线,其中一台只能通过带有 shell 的串行线访问。我如何在两台计算机之间传输文件?

我听说可以用一些 rz/sz 魔法来实现......

我可以使用伪终端而不是其他计算机来执行同样的操作吗?

答案1

您需要一个像 minicom 这样的终端应用程序。然后连接两台计算机,在一台计算机上启动 minicom,连接到另一台计算机(您可以登录的计算机),然后使用深圳命令发送文件。Minicom 将自动检测文件传输。请注意,您可能需要sz在登录机器上安装该命令,具体安装方法取决于您的发行版。

答案2

复印txwikinger 的答案是,我会用科米特,文件传输程序的鼻祖。我们在 80 年代就用过它,那时 Linux 还没有出现。维基百科表明它可能比 zmodem (sz) 更好。

另一种方法是使用 SLIP 或 PPP,正如 Axel 所建议的那样。但这如何PPP 已经有 15 年历史了。

答案3

我遇到了同样的问题,我得到的只是一个提示,但没有加载网络模块,没有 rz/sz 二进制文件,也没有目标系统中我可以用来传输文件的任何其他东西。

但是我已经echo找到了解决方案,其中需要的一切都是 - 是的 - echo

我碰到塞里奥,一个非常简单、聪明且开源的 Python 脚本(可在此处获取:https://github.com/devttys0/serio)。这个小工具所做的就是将源文件中的每个字节回显到目标的 shell 上,echo然后使用它将输出重定向到目标文件。

因此,首先我需要在目标上提供一个 shell(我使用来完成minicom),然后离开minicom并从主机发出类似这样的命令:

./serio.py \
-s /path/to/input/file/in/host.bin \
-d /path/to/destination/on/target.bin \
-p /dev/ttyUSB0

就像声明的那样在项目页面中

对嵌入式系统唯一的要求是它在串行端口上提供一个交互式shell,并且该shell的echo命令支持-n和-e选项。

当然,传输过程非常慢,但希望它能解决我的问题。

致谢:我找到了这个解决方案这里。它指向另一个存储库(这个:https://code.google.com/archive/p/serio/source/default/source),而我的代码是直接从 github 上获取的,与该博客中发布的代码略有不同。选择最适合您需求的那个。:)

答案4

我通过串行连接传输 file.bin 的方式是使用 openSSL 工具,因为我没有其他选项来执行 base64 编码和返回:

openssl enc -base64 <file.bin > file.b64

解码:

openssl enc -base64 -d <file.b64 > file.bin

相关内容