2010-06-09 7 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 

J'ai besoin de solution simple pour vérifier le fichier distant est le répertoire ou le fichier? grâcetest fichier distant si le répertoire

+0

Que voulez-vous dire par "fichier distant"? –

+0

Vous savez, il est prudent de lister un fichier avec "ls -d". Donc, en supposant que vous n'ayez pas l'intention de laisser le $ i hors de votre seconde ls | Commande cpio, vous n'avez pas besoin de tester les répertoires - juste ls -d $ i à chaque fois. – pra

Répondre

0

Vous devez ajouter des accents graves autour de la première remsh:

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

Cela a fonctionné pour moi bash (Fedora):

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

ou

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

Le le statut de sortie de 0 ou 1 reflète le statut existant/inexistant du répertoire ectoire/fichier sur l'hôte distant.

J'utilise l'échange de clés pour éviter d'avoir à fournir des informations d'identification à chaque fois, ce qui peut facilement être scripté. J'utilise ceci dans une boucle avant de faire une synchronisation de dépôt subversion multiple, pour savoir si un nouveau dépôt doit être initialisé.

Questions connexes