通过 SSH 运行下载器,与通过远程代理运行本地下载器,会把下载放在不同的地方:

安排谁去获取网站?文件写到哪里
通过远程代理的本地下载器本地 HTTP 客户端持有请求,代理负责转发本地下载器的输出路径
通过 SSH 启动的下载器远程机器上的程序它自己的远程路径,除非数据被显式带回

有了获授权的 SSH 账号和远端已安装的 curl,你可以把产物带回标准输出:

ssh -T [email protected] 'curl --fail --silent --show-error https://downloads.example/file.bin' > file.part

替换示例账号和 URL。重定向位于被引号括起的远程命令之外,所以本地 shell 会打开 file.part。把它放进远程命令里,这个路径就属于远程环境了。

使用一个全新的临时路径:在远程操作成功之前,本地 shell 就可能创建或截断该文件。在给它最终名字之前,先检查 SSH 的退出结果和产物。

标准输出里必须只有产物的字节。问候语、进度横幅或包装消息都会破坏它;诊断信息应走标准错误。把结果存成自己文件名的远程命令可能根本不回传任何字节。无论经过什么包装,都要保留下载器的退出结果。

你也可以改为在远端保存,再用 SFTP 传输文件。如果 SSH 已经使用了代理辅助程序,就复用那条 SSH 主机条目来做传输。如果目标是本地代理工作流,就让下载器留在本地,并配置它支持的代理接口。

无论如何,必须到达你笔记本电脑的文件仍然要经过它的网络连接。这个选择改变的是面向网站的连接,以及执行下载的进程。

相关文章