我有一个接受目录输入的Shell脚本。我要处理的目录之一是在远程位置。我可以通过SSH进入远程主机,但是我希望能够以类似于Windows上UNC路径的方式引用远程目录(在Windows中,您可以键入“\ [远程主机] [共享]”并引用该路径在批处理文件中)。有没有一种干净的方法可以在Unix上使用ssh做类似的事情?当我调用shell脚本时,我希望能够键入以下内容:
./run_shell_script.sh ssh://<host>/<path>
而不是运行额外的命令只是为了处理该目录?这是在循环中的目录列表上完成的,因此,我不需要远程目录的特殊代码。
最佳答案
一种可能的解决方案是像这样解析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特权。
关于shell - 在Shell脚本中访问远程目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15120338/