2010-06-09 113 views
-2
HOSTNAME=$1 

#missing files will be created by chk_dir 
for i in `cat filesordirectorieslist_of_remoteserver` 
do 

isdir=remsh $HOSTNAME "if [ -d $i ]; then echo dir; else echo file; fi" 

if [ $isdir -eq "dir" ] 
then 

remsh $HOSTNAME "ls -d $i | cpio -o" | cpio -id 
else 

remsh $HOSTNAME "ls | cpio -o" | cpio -id 
fi 
done 

我需要簡單的解決方案來檢查遠程文件是目錄還是文件? 感謝測試遠程文件如果目錄

+0

「遠程文件」是什麼意思? – 2010-06-09 13:29:03

+0

你知道,用「ls -d」列出文件是安全的。所以,假設你不想讓你的第二個ls離開$ i | cpio命令,你不需要爲目錄打擾測試 - 每次只需要ls -d $ i。 – pra 2010-06-09 18:38:57

回答

0

您需要添加第一remsh各地的反引號:

isdir=`remsh $HOSTNAME "if [ -d $i ]; then echo dir; else echo file; fi"` 
0

這爲我工作在慶典(Fedora的):

ssh $REMOTEHOST [ -d /path/to/some/directory ] 

ssh $REMOTEHOST [ -f /path/to/some/file ] 

的退出狀態0或1將反映目錄的存在/不存在狀態遠程主機上的ectory /文件。

我使用密鑰交換來避免每次都需要提供證書,因此可以很容易地編寫腳本。我在做一個多重Subversion版本庫同步之前在一個循環中使用它來知道是否需要初始化一個新的版本庫。

相關問題