这是一个奇怪的问题,但是有没有什么方法可以让我把远程资源作为 UNIX 文件进行操作?
例如,我正在寻找某种方法来完成以下任务:
head ssh://hostname:/path/to/file.txt
cat http://domain.com/file.html > local-file
我强烈怀疑答案是否定的。任何尝试此类事情的暗示也受到鼓励
答案1
本质上,SSH 没有这样的功能。
不过,你也可以用SSH文件系统,它允许您挂载远程的、可通过 SSH 访问的文件系统,然后像对待本地资源一样在本地对其进行操作。
您还可以建立 SSH 隧道来代理其他网络共享方法,例如 NFS、SMB 或 CIFS,这将再次实现类似的最终结果。
答案2
对于 SSH,您可以执行的是在远程系统上以非交互方式运行命令:
ssh hostname "head /path/to/file"
这允许您将输出重定向到本地机器上的进程:
ssh hostname "cat /path/to/file" | head
此处head
在本地计算机上执行。您还可以获取本地输出并将其重定向到 SSH 会话:
cat /local/file | ssh hostname "head > /remote/file"
这将获取本地文件的内容,通过 SSH 连接将其传送到远程运行的 head,并将 head 的输出写入服务器上的文件中。
要访问 HTTP(和 HTTPS)文件并进一步在本地处理它们,选择的工具通常是curl
:
curl http://domain.com/file.html > local-file
这里curl
在本地运行并获取 HTML 文件供您使用。但它不允许您更改远程文件,因为这不是 HTTP 协议的功能。