Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/07/2011, à 11:57

MrGrims

Comment vérifier l'existence d'un répertoire distant

Bonjour,

Tout est dans le sujet smile
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 hmm
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

Shyne a écrit :
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. neutral

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

frafa a écrit :

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 big_smile

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 sad

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é hmm
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