Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1283 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs

  script samba client - besoin d'aide

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

script samba client - besoin d'aide

n°362298
dam1330
...
Posté le 20-11-2003 à 19:52:55  profilanswer
 

Bonjour,  
 
Je suis dans un reseau d'environ 50pc, chaque pc partage plusieurs dossiers, je ne connais pas precisement l'adresse ip de chaque pc, mais j'ai un ordre d'idée ( 192.168.x.y). je ne connais pas le nom des dossiers mis en partages. Les pc sont soient sous windows, soit sous linux.  
 
Je voudrais faire un script qui scanne toutes les ip du lan, et qui si elles existent, on essaye de lister les dossiers mis en partage sur le PC. A partir de la lorsque l'on connait l'adresse ip et les dossiers partagés on fait des listes de tout  ce qui est partagé.
 
mon principal probleme reside que je n'arrive pas à mettre en relation le nom des dossiers mis en partges d'un pc et aller recuperer le contenu de ces dossiers.

Code :
  1. shuttle:~# smbclient -L //192.168.0.1 -N
  2.         Sharename      Type      Comment
  3.         ---------      ----      -------
  4.         musique        Disk
  5.         IPC$           IPC       IPC distant
  6.         ftp            Disk
  7.         dossier2       Disk
  8.         tom            Disk
  9.         BOB            Disk
  10.         ADMIN$         Disk      Administration à distance
  11.         dossier1       Disk
  12.         Server               Comment
  13.         ---------            -------
  14.         Workgroup            Master


 
voila ce que j'ai avec la commande smbclient -L //192.168.0.1 -N
Il faut que j'arrive à recuperer "musique" , "BOB", "tom" , "dossier1", "musique" et " ftp" et les mettre dans une variable afin de les utiliser dans une nouvelle commande qui lira le contenu de ces dossiers. Le  -L signifie lister les dossiers et -N = pas de mot de passe.
 
Ensuite je fais un
 
    smbclient  //192.168.0.1/tom -N
 
Je ne sais pas comment faire ca

mood
Publicité
Posté le 20-11-2003 à 19:52:55  profilanswer
 

n°362394
dam1330
...
Posté le 20-11-2003 à 22:04:33  profilanswer
 

j'ai avancé un peu, mais je ne sais pas si c'est la bonne voie
 

Code :
  1. smbclient -L //192.168.0.1 -N > salut
  2. cat salut | grep "Disk" >salut
  3. cat salut | grep "Disk" | cut -f1 -d" " >salut
  4. cat salut


 
je fais donc ca, et j'obtiens le fichier suivant.
 

Code :
  1. musique
  2.         ftp
  3.         dossier2
  4.         tom
  5.         BOB
  6.         ADMIN$
  7.         dossier1


 
il faut que je vire les lignes avec des " $ " et les espaces en trop


Message édité par dam1330 le 20-11-2003 à 22:08:27
n°362404
dam1330
...
Posté le 20-11-2003 à 22:24:10  profilanswer
 

j'ai viré les les lignes contenant un $ avec
 cat salut | grep -v $\$ >salut

n°362408
void_ppc
Posté le 20-11-2003 à 22:26:30  profilanswer
 

encore 15 minutes et tu aura tout fait tout seul comme un grand :D

n°362423
dam1330
...
Posté le 20-11-2003 à 22:30:47  profilanswer
 

c'est ce que je commence a croire, mais je suis en train de faire une methode de porc, si quelq'un a une autre idee.....

n°362639
grosminet
42.
Posté le 21-11-2003 à 09:59:08  profilanswer
 

ça va pas vraiment t'aider, mais cat salut >salut c pas toujours une bonne idée suivant ton shell...

n°362649
bobuse
Posté le 21-11-2003 à 10:15:43  profilanswer
 

pkoi une méthode de porc ??
'fin c'est vrai que tu pourrai tout traiter directement dans awk, mais bon, si ça fait ce que tu veux ...
 
note que le protocole lan:/ intégré à konqueror te permet de faire tout ça : il te scanne le réseau, t'affiche tous les postes, et pour chaque poste, t'affiche tout les protocoles dispos (smb, ftp, ssh) et te permet de naviguer dedans ... :)
mais bon, c'est moins drole :)

n°362657
Mjules
Modérateur
Parle dans le vide
Posté le 21-11-2003 à 10:26:55  profilanswer
 

pour ma part, je doute que tu parviennes à lire le contenu des dossiers avec une commande smbclient (à tester néanmoins) ; un smbmount suivi d'un ls et d'un smbumount me parait plus approprié

n°362670
bobuse
Posté le 21-11-2003 à 10:50:24  profilanswer
 

si c'est possible : man smbclient ...
 
EDIT : mais bon, ca reste moins pratique qu'un smbmount ;)


Message édité par bobuse le 21-11-2003 à 10:50:46
n°363072
dam1330
...
Posté le 21-11-2003 à 18:22:48  profilanswer
 

mais ca c'est ok, c'est pas trop le probleme. ce que je n'arrive pas a faire c'est de me resservir des dossiers que j'ai trouvé.  
Les noms des repertoires sont dans un fichier. j'aimerai que pour chaque repertoire il execute une commande.  
je n'arrive pas a faire la liaison entre les repertoires trouvés et la nouvelle commande.

mood
Publicité
Posté le 21-11-2003 à 18:22:48  profilanswer
 

n°363390
dam1330
...
Posté le 22-11-2003 à 13:17:50  profilanswer
 

personne pour m'aider ?

n°364448
bobuse
Posté le 24-11-2003 à 09:55:55  profilanswer
 

si un nom de dossier par ligne :
for f in `cat fichier`; do ta_commande $f; done
 
http://www.tldp.org/LDP/abs/html/

n°365911
dam1330
...
Posté le 26-11-2003 à 22:51:45  profilanswer
 

merci, je vais voir ce que je peux en faire

n°366691
dam1330
...
Posté le 28-11-2003 à 22:22:45  profilanswer
 

Code :
  1. #!/bin/sh
  2. ip=$@
  3. ping -c 1 $@ &> /dev/null
  4.         if [ $? != 0 ]; then
  5.         echo "Cette adresse n'existe pas sur le reseau"
  6.         else
  7.         echo "Cette adresse existe"
  8.         for ip in $@
  9.          do
  10.         echo "L'IP $@ partage les dossiers suivants:"
  11.         smbclient -L //$ip -N > /tmp/liste_des_repertoires
  12.         cat /tmp/liste_des_repertoires | grep "Disk" > /tmp/liste_des_repertoires
  13.         cat /tmp/liste_des_repertoires | grep "Disk" | cut -f1 -d" " > /tmp/liste_des_repertoires
  14.         cat /tmp/liste_des_repertoires | grep -v $\$ > /tmp/liste_des_repertoires
  15.         cat /tmp/liste_des_repertoires
  16.                 #Creation des dossiers si necessaire
  17.                 echo "Les partages seront montés dans /mnt/lan/"
  18.                 cd /mnt/
  19.                 #Afin d'eviter tous conflits, on supprime /mnt/lan
  20.                 if test -d lan;
  21.                 then
  22.                 umount -a > /dev/null
  23.                 rm -R lan
  24.                 fi
  25.                 mkdir lan
  26.                 cd /mnt/lan
  27.                 mkdir $ip
  28.                 for touslesrepertoires in `cat /tmp/liste_des_repertoires`;
  29.                 do
  30.                 cd /mnt/lan
  31.                 mkdir /mnt/lan/$ip/$touslesrepertoires
  32.                 mount -t smbfs //192.168.0.1/$touslesrepertoires /mnt/lan/$ip/$touslesrepertoires -o password=;
  33.                 done
  34.         done
  35.         fi
  36. echo "Les partages ont été montés correctement !!!!"


 
Voila, j'ai bien progressé, par contre il faut mettre qu'une ip. et j'ai du mal lorsque j'execute une 2 fois le script. cette version supprime le dossier créé. j'en ai fai une autre
 

Code :
  1. #!/bin/sh
  2. ip=$@
  3. ping -c 1 $@ &> /dev/null
  4.         if [ $? != 0 ]; then
  5.         echo "Cette adresse n'existe pas sur le reseau"
  6.         else
  7.         echo "Cette adresse existe"
  8.         for ip in $@
  9.          do
  10.         echo "L'IP $@ partage les dossiers suivants:"
  11.         smbclient -L //$ip -N > /tmp/liste_des_repertoires
  12.         cat /tmp/liste_des_repertoires | grep "Disk" > /tmp/liste_des_repertoires
  13.         cat /tmp/liste_des_repertoires | grep "Disk" | cut -f1 -d" " > /tmp/liste_des_repertoires
  14.         cat /tmp/liste_des_repertoires | grep -v $\$ > /tmp/liste_des_repertoires
  15.         cat /tmp/liste_des_repertoires
  16.                 #Creation des dossiers si necessaire
  17.                 echo "Les partages seront montés dans /mnt/lan/"
  18.                 cd /mnt/
  19.                 if test -d lan;
  20.                 then
  21.                 echo "/mnt/lan/ existe deja, il ne sera pas créé"
  22.                 else
  23.                 mkdir lan
  24.                 fi
  25.                 cd /mnt/lan
  26.                 mkdir $ip
  27.                 for touslesrepertoires in `cat /tmp/liste_des_repertoires`;
  28.                 do
  29.                 cd /mnt/lan
  30.                 mkdir /mnt/lan/$ip/$touslesrepertoires
  31.                 mount -t smbfs //$ip/$touslesrepertoires /mnt/lan/$ip/$touslesrepertoires -o password=;
  32.                 done
  33.         done
  34.         fi
  35. echo "Les partages ont été montés correctement !!!!"

n°367749
dam1330
...
Posté le 30-11-2003 à 18:22:37  profilanswer
 

j'ai un dernier probleme. Si une personne met un partage avec des espaces ca ne marche pas. il ne prennd que la premiere partie.
 
" mon patage " ====>>  " mon "
 
cela vient des lignes avec les grep, et j'ai beaucoup de mal avec la commande grep


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs

  script samba client - besoin d'aide

 

Sujets relatifs
Fstab et samba.VPN : client MSXP ou 2K, serveur ... linux ou win2K ? que prendre ?
Ghostscript : creer des pdf [probleme avec samba]Besoin de conseils
[Script] Télécharger des element sur serveur HTTP selon une liste...[SAMBA] Controler des domaines avec plusieurs group
Aide pour config Internet[samba]Problème pour effacer des répertoires sous X...
aide conseil fichier pdfbesoin d'aide avec mandrake 9.2 <resolu>
Plus de sujets relatifs à : script samba client - besoin d'aide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR