#1 Le 07/07/2011, à 11:57
- MrGrims
Comment vérifier l'existence d'un répertoire distant
Bonjour,
Tout est dans le sujet
J'aimerai depuis mon Linux vérifier l’existence d'un dossier situé sur un Windows Server dans un script Bash.
J'ai pensé à la commande test, j'ai pas réussi. J'ai essayé avec curl, j'ai pas réussi non plus
Une idée ?
Hors ligne
#2 Le 07/07/2011, à 12:24
- Shyne
Re : Comment vérifier l'existence d'un répertoire distant
Salut,
Un script python:
#!/usr/bin/env python
import os
dir = '/mnt/partage/le_repertoire'
if os.path.exists(dir):
print('exist')
else:
print('not exist')
Hors ligne
#3 Le 07/07/2011, à 13:49
- MrGrims
Re : Comment vérifier l'existence d'un répertoire distant
dir = '/mnt/partage/le_repertoire'
Hum..cela sous-entend qu'un partage doit être monté vers le serveur ? Ou bien je me trompe ?
J'aimerai le faire justement sans point de montage entre les 2 postes.
J'aurais préféré une solution du style :
dir = 'adresseIPserveur\DossierPartagé\DossierAVérifier'
Cela est possible ?
Dernière modification par MrGrims (Le 07/07/2011, à 13:52)
Hors ligne
#4 Le 07/07/2011, à 14:59
- frafa
Re : Comment vérifier l'existence d'un répertoire distant
Bonjour,
Ce genre de code devrait le faire ...
vartest="$(curl -iL http://serveur.com/dossier/ -o /tmp/curltest && awk 'NR>1{exit};1' /tmp/curltest)"
if [ "$(grep ' 200 OK'<<<"${vartest}")" ]; then
echo ok existe
else
echo ko n\'exite pas
fi
Dernière modification par frafa (Le 07/07/2011, à 15:00)
Hors ligne
#5 Le 07/07/2011, à 15:15
- MrGrims
Re : Comment vérifier l'existence d'un répertoire distant
Bonjour,
Ce genre de code devrait le faire ...vartest="$(curl -iL http://serveur.com/dossier/ -o /tmp/curltest && awk 'NR>1{exit};1' /tmp/curltest)" if [ "$(grep ' 200 OK'<<<"${vartest}")" ]; then echo ok existe else echo ko n\'exite pas fi
Whaou, ton code me fait mal à la tête frafra ^^.
Je ne suis pas un expert en Linux et j'aimerai bien que tu m'explique succinctement ce que font les 2 premières lignes s'il te plait
Hors ligne
#6 Le 07/07/2011, à 15:32
- frafa
Re : Comment vérifier l'existence d'un répertoire distant
non ce n'est pas bien compliqué...
verif avec curl on liste le dossier en question ==> http://serveur.com/dossier/
curl -iL http://serveur.com/dossier/ -o /tmp/curltest
puis on affiche juste la première ligne du fichier /tmp/curltest avec commande awk équivalent à head -1
awk 'NR>1{exit};1' /tmp/curltest
recherche le texte ' 200 OK' dans la variable vartest c'est ce que répond un serveur qui autorise à lister un dossier
grep ' 200 OK'<<<"${vartest}"
EDIT: une version un peu plus simple ...
if [ "$(grep ' 200 OK'<<<"$(curl -iL http://serveur.com/dossier/ 2>stdout | head -1)")" ]; then
echo ok existe
else
echo ko n\'exite pas
fi
Dernière modification par frafa (Le 07/07/2011, à 16:08)
Hors ligne
#7 Le 07/07/2011, à 16:12
- MrGrims
Re : Comment vérifier l'existence d'un répertoire distant
Malheureusement ca ne marche pas
Voici le code :
#!/bin/bash
echo -n Taper le nom d\'utilisateur :
read login
vartest="$(curl -iL http://192.168.254.146/D$/sauv_profil$/DSIT/$login -o /tmp/curltest && awk 'NR>1{exit};1' /tmp/curltest)"
if [ "$(grep ' 200 OK'<<<"${vartest}")" ]; then
echo ok existe
else
echo ko n\'existe pas
fi
Et voici le résultat :
[root@localhost test]# /mnt/ftp/test
Taper le nom d'utilisateur :test
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1256 100 1256 0 0 123k 0 --:--:-- --:--:-- --:--:-- 0
ko n'existe pas
Alors qure le répertoire existe bel et bien.
Hors ligne
#8 Le 07/07/2011, à 16:18
- frafa
Re : Comment vérifier l'existence d'un répertoire distant
il faut que le serveur autorise à lister un dossier,
Exemple chez moi test sur le dossier /tmp qui existe et est autorisé à lister, ca répond ok
curl -iL http://liveusb.info/tmp/ 2>stdout | head -1
Hors ligne
#9 Le 07/07/2011, à 16:31
- MrGrims
Re : Comment vérifier l'existence d'un répertoire distant
J'ai modifier les autorisations du dossier à vérifier pour qu'il puisse être autoriser à lister. Cependant ça ne marche toujours pas.
Le soucis c'est que je dois traverser une multitude de dossier pour parvenir à mon dossier de destination.
Est-ce qu'il faut que tous les dossiers aient le droit de lister ? Ça par contre ça peut soulever un problème de sécurité
En tout cas merci frafa pour ton aide.
Hors ligne
#10 Le 07/07/2011, à 16:40
- frafa
Re : Comment vérifier l'existence d'un répertoire distant
ben... tu n'aurais pas possibilité de mettre un fichier type dans ce dossier ?,
et comme ça tu teste la présence du fichier pour ne pas être obligé des mettre tous les sous-dossiers en listage ...
Hors ligne
#11 Le 07/07/2011, à 16:53
- frafa
Re : Comment vérifier l'existence d'un répertoire distant
Pour tester tester la présence d'un fichier genre (suis pas un pro de curl, doit y avoir plus simple):
if [ "$(grep ' 200 OK'<<<"$(curl -sfI "http://liveusb.info/favicon.ico" 2>stdout | head -1)")" ]; then
echo ok existe
else
echo ko n\'exite pas
fi
Hors ligne
#12 Le 08/07/2011, à 10:05
- MrGrims
Re : Comment vérifier l'existence d'un répertoire distant
J'ai testé la vérification de l'existence d'un fichier, mais ça ne marche pas.
J'ai essayé de le mettre au plus court comme tu peux le voir dans le chemin http :
if [ "$(grep ' 200 OK'<<<"$(curl -sfI "http://192.168.254.146/D$/Thumbs" 2>stdout | head -1)")" ]; then
echo ok existe
else
echo ko n\'exite pas
fi
Mais comme je passe par le protocole http, je me demande s'il n'y a pas quelque chose à faire sur mon serveur pour que ça marche.
Hors ligne
#13 Le 08/07/2011, à 15:58
- frafa
Re : Comment vérifier l'existence d'un répertoire distant
Pour tester simplifie-toi le test,
il doit renvoyer "... 200 ok" si le fichier existe,
exemple chez moi sur test de la présence du fichier /favicon.ico:
curl -sfI "http://liveusb.info/favicon.ico" 2>stdout | head -1
ca répond: HTTP 1.1 200 OK
Hors ligne