script samba client - besoin d'aide

script samba client - besoin d'aide - Linux et OS Alternatifs

Marsh Posté le 20-11-2003 à 19:52:55    

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

Reply

Marsh Posté le 20-11-2003 à 19:52:55   

Reply

Marsh Posté le 20-11-2003 à 22:04:33    

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
Reply

Marsh Posté le 20-11-2003 à 22:24:10    

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

Reply

Marsh Posté le 20-11-2003 à 22:26:30    

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

Reply

Marsh Posté le 20-11-2003 à 22:30:47    

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.....

Reply

Marsh Posté le 21-11-2003 à 09:59:08    

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

Reply

Marsh Posté le 21-11-2003 à 10:15:43    

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 :)

Reply

Marsh Posté le 21-11-2003 à 10:26:55    

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é

Reply

Marsh Posté le 21-11-2003 à 10:50:24    

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
Reply

Marsh Posté le 21-11-2003 à 18:22:48    

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.

Reply

Marsh Posté le 21-11-2003 à 18:22:48   

Reply

Marsh Posté le 22-11-2003 à 13:17:50    

personne pour m'aider ?

Reply

Marsh Posté le 24-11-2003 à 09:55:55    

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

Reply

Marsh Posté le 26-11-2003 à 22:51:45    

merci, je vais voir ce que je peux en faire

Reply

Marsh Posté le 28-11-2003 à 22:22:45    

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 !!!!"

Reply

Marsh Posté le 30-11-2003 à 18:22:37    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed