IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

Parcourrir des dossiers partagés (Windows Share/Samba)


Sujet :

Programmation et administration système Perl

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Parcourrir des dossiers partagés (Windows Share/Samba)
    Bonjour,
    comme le titre l'indique, je cherche à parcourrir des dossiers partagés.
    j'ai vu qu'il y avait le package Win32::NetResource qui permettait de lister les dossiers partagés de chaque machine.
    J'ai ensuite trouvé le package SmbClientParser qui était composé de pas mal toutes les commandes de smbClient.

    je n'arrive pas à l'installer le 2e (je n'ai jamais installer de package outre que dans ppm)
    j'ai pourtant exécuté "perl makefile.pl" .. "make" ..puis j'ai l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Do you want make smbclient tests ?
    (you will be prompted for server / worgroup / share / user / password
    to make read write access. [no] make
    Unable to find a perl 5 (by these names: C:\Program Files\EasyPHP1-8\Perl\bin\perl.exe perl.exe perl5.exe perl
    5.8.8.exe miniperl.exe, in these dirs: . C:\Program Files\EasyPHP1-8\Perl\bin\ C:\Oracle\DevSuite10gR2\bin C:\
    Oracle\DevSuite10gR2\jre\1.4.2\bin\client C:\Oracle\DevSuite10gR2\jre\1.4.2\bin C:\Oracle\DevSuiteHome1\jdk\jr
    e\bin\classic C:\Oracle\DevSuiteHome1\jdk\jre\bin C:\Oracle\DevSuiteHome1\jdk\jre\bin\client C:\Oracle\DevSuit
    eHome1\jlib C:\Oracle\DevSuiteHome1\bin C:\Oracle\DevSuiteHome1\jre\1.4.2\bin\client C:\Oracle\DevSuiteHome1\j
    re\1.4.2\bin C:\WINDOWS\system32 C:\WINDOWS C:\WINDOWS\System32\Wbem c:\Program Files\Intel\DMIX c:\Program Fi
    les\Microsoft SQL Server\90\Tools\binn\ C:\Program Files\Microsoft SQL Server\80\Tools\Binn\ C:\Program Files\
    Microsoft SQL Server\90\DTS\Binn\ C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\ C:\
    Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\ C:\Program Files\EasyPHP1-8\Perl\bin)
    Writing Makefile for Filesys::SmbClientParser

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Alternative trouvée
    j'ai trouvé une alternative soit de me faire moi même un parser qui utilise smbclient.exe

    pour faire fonctionner le tout assurez-vous d'avoir smbclient.exe et les dlls associés dans \windows\system32\

    http://www.leenux.org.uk/lpackham/smbclient/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    use strict;
    use Win32::NetResource qw(:DEFAULT GetSharedResources);
     
    if (GetSharedResources(my $resources, RESOURCETYPE_ANY))
    {
         my $partage = "//serveur/partage";
     
         my @liste = `smbclient $partage -N -c \"recurse;ls\"`;
         print "\n";
     
         my $dossierCourant='';
         for(my $noLigne=3;$noLigne<@liste;$noLigne++)
         {
         	next if($liste[$noLigne]=~m/\s\s\./); #passe les . et ..
    	#Dossier
    	if($liste[$noLigne]=~m/\\\w+/)
    	{
    	   my $dossier = $liste[$noLigne];
     
    	   chomp $dossier;
    	   $dossier =~ s/\\/\//g; #Remplace les \ pour des /
     
    	   $dossierCourant=$dossier;
     
    	   my @dossiers = split(/\//,$dossier); # extrait tout les noms de dossiers parmi les /
     
    	   print "Dossier: ".$partage.$dossier."/\n";
     
    	   #Insertion dans la bd
    	   insertionbd(($partage.$dossier."/"),($dossiers[@dossiers-1])."/",'0');
            }
            #Fichier
    	if($liste[$noLigne]=~m/\s\s.*\d$/)
    	{
    	   my $fichier = $liste[$noLigne];
    	   my $taille = 0;
     
    	   chomp $fichier;
    	   if($fichier =~ /\s\s(.*)\s{6}[DA]\s+(\d+)/)
    	   {
    	   	$fichier = $1;
    	   	$taille = $2;
               }
    	   $fichier =~ s/\s+$//;
     
    	   if($taille!=0)
    	   {
    	   	print "Fichier: ".$partage.$dossierCourant."/".$fichier."\n";
     
    	   	#Insertion dans la bd
    insertionbd(($partage.$dossierCourant."/".$fichier),$fichier,$taille);
    	   }
            }
         }
    }
    la fonction insertionbd est pas très importante .. simplement que je stock tous les infos dans une bd

Discussions similaires

  1. Réponses: 12
    Dernier message: 06/06/2015, 12h42
  2. Envoyer un fichier vers un dossier partagé Windows
    Par elfiestador dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 03/01/2007, 18h08
  3. Réponses: 1
    Dernier message: 16/08/2006, 13h30
  4. Enregistrer sous dans des dossiers partagés
    Par pc306 dans le forum Windows XP
    Réponses: 7
    Dernier message: 04/01/2006, 20h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo