我有一个接受目录输入的shell脚本。我想要处理的其中一个目录位于远程位置。我能够ssh到远程主机,但我希望能够以类似于Windows上的UNC路径的方式引用远程目录(在Windows中,您可以键入“\ [remote host] [share]”并引用该路径在批处理文件中)。有没有一种干净的方法在Unix上使用ssh做类似的事情?当我调用shell脚本时,我希望能够输入类似:
的内容./run_shell_script.sh ssh://<host>/<path>
而不是只运行额外的命令来处理那个目录?这是在循环中的目录列表上完成的,所以我不想为远程目录提供特殊代码。
答案 0 :(得分: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权限。