2013-02-27 54 views
1

我有一個接受目錄輸入的shell腳本。我想處理的一個目錄位於遠程位置。我能夠SSH入遠程主機,但我希望能夠以類似於Windows上的UNC路徑的方式引用遠程目錄(在Windows中,您可以鍵入「\ [remote host] [share]」並引用該路徑在批處理文件中)。有沒有一種乾淨的方式在Unix上用ssh做類似的事情?當我打電話的shell腳本,我希望能夠鍵入類似:在shell腳本中訪問遠程目錄

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

,而不是運行額外的命令只是爲了處理一個目錄?這是在一個循環中的目錄列表上完成的,所以我不想爲遠程目錄設置特殊的代碼。

+0

你的腳本是做什麼的? – martriay 2013-02-27 19:13:03

+0

實質上,它最終調用一個接受目錄輸入的Perl腳本。它解析日誌文件並生成關於它們的報告。 – user1040229 2013-02-27 19:15:06

+0

該目錄中有日誌文件嗎?即時通訊要求知道這是否是一件有效的事情,對我來說聽起來很奇怪,也許還有另一種解決方案 – martriay 2013-02-27 19:17:25

回答

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權限。