![通过串行线路传输文件](https://linux22.com/image/1274499/%E9%80%9A%E8%BF%87%E4%B8%B2%E8%A1%8C%E7%BA%BF%E8%B7%AF%E4%BC%A0%E8%BE%93%E6%96%87%E4%BB%B6.png)
我有两台 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