1

我有一个接受目录输入的 shell 脚本。我要处理的目录之一位于远程位置。我能够通过 ssh 连接到远程主机,但我希望能够以与 Windows 上的 UNC 路径类似的方式引用远程目录(在 Windows 中,您可以键入“\[远程主机][共享]”并引用该路径在批处理文件中)。有没有一种干净的方法可以在 Unix 上用 ssh 做类似的事情?当我调用 shell 脚本时,我希望能够输入如下内容:

./run_shell_script.sh ssh://<host>/<path>

而不是运行额外的命令来处理那个目录?这是在循环中的目录列表上完成的,所以我不想为远程目录提供特殊代码。

4

1 回答 1

1

一种可能的解决方案是像这样解析 URI:

_uri=ssh://host/path/to/file
_host=`echo $_uri | sed 's|^ssh://\([^/]*\)/.*$|\1|'`
_dir=`echo $_uri | sed "s|^ssh://$_host/\(.*\)\$|\1|"`

然后只是使用这些变量来 ssh:

scp $_host:$_dir $local_dir

此外,sshfs您可能会感兴趣:它允许将远程主机挂载到本地计算机上的目录中,而无需 NFS 管理负担,甚至没有 root 权限。

于 2013-02-27T20:13:10.447 回答