Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
[Résolu]Besoin aide pour récupérer l'adresse mac, l'ip
Auteur Message
Répondre en citant
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 
Je cherche une solution pour me créer un batch pour récupérer les adresses MAC, l'ip et le nom de chaque station de mon réseau et les stockés dans un fichier csv pour les exporter vers une base de données MySql. J'ai pensé à utiliser le protocole arp ou avec nbtscan : http://unixwiz.net/tools/nbtscan.html. J'ai déjà un peu avancé mais je ne sais pas extraire les infos que je souhaite. De plus si les stations existes déjà dans le fichier elles sont quand même rajoutées lorsque je relance le script.

Voilà déjà les 2 scripts :

RecupInfos.bat

Code:
@echo off
:debut
for /F %%a in (liste.txt) do (call RecupInfos2.bat %%a)


RecupInfos2.bat

Code:
@echo off
echo nom de l'ordi: %1
nbtscan -m %1 >>RecupInfos.csv


D'avance merci pour votre aide, parce que je suis un vrai newbie en batch.



Dernière édition par coxwen59 le Mer 9 Fév 2011 - 13:19; édité 1 fois
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 
Bonjour
pourrions nous avoir le contenu de ton fichier liste.txt et son résultat pour nous faire un élément de base ?

Il s'agit surement de faire un tri avec une boucle for en utilisant tokens et delims ainsi que peut être Find

Genre :


Code:
@ECHO OFF
for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^| find "Adresse physique"') do ( echo Adresse MAC :%%i
)
pause





______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 
Laddy a écrit:
Bonjour
pourrions nous avoir le contenu de ton fichier liste.txt et son résultat pour nous faire un élément de base ?



Bonjour Laddy,

Concernant mon fichier liste.txt il contient tout simplement la liste des pc à scanner :

Code:
Server
Vaio
Vista


et pour le fichier RecupInfos.csv il récupère les infos de nbtscan :
Code:
192.168.X.XX    WORKGROUP\VISTA                 02:90:xx:xx:xx:xx SHARING
192.168.X.XX    WORKGROUP\SERVER                00:0b:xx:xx:xx:xx SHARING
192.168.X.XX    WORKGROUP\VISTA                 02:90:xx:xx:xx:xx SHARING
192.168.X.XX     WORKGROUP\SERVER                00:0b:xx:xx:xx:xx SHARING


Le vaio n'étant pas allumé au moment du scan il n'est bien sûr pas sur ce resultat. Comme tu peux le remarqué j'ai fais 2 scan de test et les machines apparaissent en double dans la liste. Pour le tri je pense comme toi çà doit sans doute être un find avec une boucle for, mais je suis un vrai newbie en batch et là je patoge encore pas mal. Pense tu aussi qu'il soit possible de mettre en forme le texte de tel façon à ce que le résultat donne ceci par exemple :

Code:
VISTA; 2:90:xx:xx:xx:xx; 192.168.X.XX; WORKGROUP; 0 SHARING;
SERVER; 00:0b:xx:xx:xx:xx; 192.168.X.XX; WORKGROUP; SHARING;


Encore merci de ton aide et excuse moi de tant demander autant à la fois. Je vais essayé si j'ai un peu de temps aujourd'hui de voir pour ce fameux Find avec une boucle ...

Cordialement Coxwen59.



Répondre en citant
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 
Bonjour

c'est possible :

Je n'ai pas encore séparé WORKGROUP\VISTA

Code:
@ECHO OFF
for /f "tokens=2,3,1,4 delims= " %%i in ('type "%userprofile%\bureau\user.ini"') do ( echo %%i; %%j; %%k; %%l
)
pause



Code:

@ECHO OFF

SETLOCAL EnableDelayedExpansion

for /f "tokens=2,3 delims=\ " %%a in ('type "%userprofile%\tonfichier.txt"') do (
set COMPUTER=%%b
set GROUP=%%a)

for /f "tokens=1,3,4 delims= " %%i in ('type "%userprofile%\ton_fichier.txt"') do (
set IP=%%i
set MASK=%%j
set SHARE=%%k
ECHO !COMPUTER!; !MASK!; !IP!; !GROUP!; !SHARE!
)
EndLocal

pause


je finis plus tard




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 
Merci à toi Laddy,

Tu as super bien avancé, j'aimerai bien avoir ton niveau mais j'en suis encore loin. Je vais essayer d'avancer de mon côté aussi ... à mon rythme Embarassed En tout cas chapeau et merci pour ce que tu fais pour moi .... Okay Okay



Répondre en citant
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 
Re Laddy,

J'ai un peux avancé, bien que je trouve mon code un peu alambiqué Exclamation

Donc çà donne ceci :
liste.txt étant le fichier dans lequel je récupère le nom de mes machines du réseau "cf ci-dessus"

RecupInfos1.bat

Code:
@echo off
Rem Récupèration de la liste des pc "liste.txt" et appel du 2nd batch
for /F %%a in (liste.txt) do (call RecupInfos2.bat %%a)


RecupInfos2.bat

Code:
@echo off
echo nom de l'ordi: %1
Rem Scan du réseau d'après la liste et stockage dans fichier temporaire
nbtscan -m %1>infos.tmp
Rem Extraction chaines de caractère et stockage dans fichier csv pour renvoi vers la base MySql
for /f "tokens=1,3,4,2 delims=\ " %%a in ('type infos.tmp') do echo %%a %%b %%c %%d >> good.csv
Rem Destruction du fichier temporaire
del infos.tmp


Dis moi ce que tu en penses et s'il on peut améliorer le code! J'ai toujours un pb au niveau du fichier csv.
Code:

192.168.x.xx; VISTA; 02:xx:xx:xx:xx:xx; WORKGROUP 
192.168.x.xx; VISTA; 02:xx:xx:xx:xx:xx; WORKGROUP 
192.168.x.xx; VISTA; 02:xx:xx:xx:xx:xx; WORKGROUP 


A chaque execution du code la machine est à nouveau rajoutée alors qu'elle existe déjà. Je n'arrive pas à trouver le moyen de ne pas rajouté la ligne au fichier si la machine à déjà était ajoutée.



Répondre en citant
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 
Bonsoirs Smile

Peut être quelque chose de ce genre ?

Code:

@echo off
echo nom de l'ordi: %1


Rem--------------------------------------------------------------------------------------------------
:: Scan du réseau d'après la liste et stockage dans fichier temporaire
nbtscan -m %1>infos.tmp


Rem--------------------------------------------------------------------------------------------------
:: On regarde si la liste contient les 3 nom. Si ils exist ont les affiche puis on supprime infos.tmp


for /f "tokens=1,3,4,2 delims=\ " %%a in ('type infos.tmp') DO
    for /f "DELIMS=1,2,3" %%A in ('type liste.txt' ) DO (
    IF EXIST %%A 
    (
    echo %%a %%b %%c %%d >> good.csv
    del infos.tmp
    )
              )




Répondre en citant
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 
Dream a écrit:
Bonsoirs Smile

Peut être quelque chose de ce genre ?

Code:

@echo off
echo nom de l'ordi: %1


Rem--------------------------------------------------------------------------------------------------
:: Scan du réseau d'après la liste et stockage dans fichier temporaire
nbtscan -m %1>infos.tmp


Rem--------------------------------------------------------------------------------------------------
:: On regarde si la liste contient les 3 nom. Si ils exist ont les affiche puis on supprime infos.tmp


for /f "tokens=1,3,4,2 delims=\ " %%a in ('type infos.tmp') DO
    for /f "DELIMS=1,2,3" %%A in ('type liste.txt' ) DO (
    IF EXIST %%A 
    (
    echo %%a %%b %%c %%d >> good.csv
    del infos.tmp
    )
              )


Bonsoir à toi DREAM,

Je viens de testé ton code mais je ne sais pas pourquoi il me dit que la syntaxe de la commande est incorrecte. Je vais essayé de voir si je peux trouver pourquoi çà ne marche pas, si tu as une idée n'hésites pas à m'en faire part. Wink Merci de tout aide.

Cordialement Coxwen59



Répondre en citant
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 
Bonjour tout le monde et en particulier à Laddy et Dream qui m'on aidé jusqu'ici.
Je n'ai toujours pas résolu mon problème de doublons dans le fichier csv bien que Dream est peut être trouvé quelque chose. Après avoir testé son code "voir ci dessus" il me retourne toujours la même erreur de syntaxe incorrecte, ce n'est pourtant pas faute d'avoir cherché la solution mais pas moyen de comprendre où çà coince. A mon avis c'est quelque chose de basique mais le fait de passer fr PHP / MySql au batch et vis versa n'est pas évident. Pour ne rien arranger je débute en batch Embarassed alors si une âme charitable pourrai se pencher sur ce p'tit problème çà m'enlèverai une bonne épine du pied.

Cordialement ...



Répondre en citant
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 
Bonjour
il nous faut le contenu des fichiers intermédiaires et le message exacte de l'erreur pour continuer.
Désolé je suis quelque peu débordée.

Ensuite dans le code de DreamBatcher, je ne sais pas mais pour moi si %%A est la machine je ferai un IF NOT EXIST %%A pour afficher le résultat et non l'inverse.




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 
Laddy a écrit:
Bonjour
il nous faut le contenu des fichiers intermédiaires et le message exacte de l'erreur pour continuer.
Désolé je suis quelque peu débordée.

Ensuite dans le code de DreamBatcher, je ne sais pas mais pour moi si %%A est la machine je ferai un IF NOT EXIST %%A pour afficher le résultat et non l'inverse.


Bonjour Laddy,

Concernant les fichiers les voici :

Le 1er étant toujours le fichier liste.txt comportant le nom des pc's :
Code:

Server
Vista
Vaio


Le 2nd RecupInfos1.bat récupère les pc inscrits dans le fichier liste.txt et appel RecupInfos2.bat :
Code:

@echo off
Rem Récupération de la liste des pc "liste.txt" et appel du 2nd batch
for /F %%a in (liste.txt) do (call RecupInfos2.bat %%a)


Le 3ème RecupInfos2.bat quant à lui scan le réseau d'après la liste, stocke dans un fichier temporaire et extrait les chaînes de caractères avant de retourner le résultat dans mon fichier csv :
Code:

@echo off
echo nom de l'ordi: %1
Rem Scan du réseau d'après la liste et stockage dans fichier temporaire
nbtscan -m %1>infos.tmp
Rem Extraction chaines de caractère et stockage dans fichier csv pour renvoi vers la base MySql
for /f "tokens=1,3,4,2 delims=\ " %%a in ('type infos.tmp') do echo %%a %%b %%c %%d >> good.csv
Rem Destruction du fichier temporaire
del infos.tmp


Et enfin le dernier fichier good.csv qui est le résultat de l'opèration :
Code:

192.168.x.xx; SERVER; 00:xx:xx:xx:xx:xx; WORKGROUP
192.168.x.xx; VISTA; 02:xx:xx:xx:xx:xx; WORKGROUP 
192.168.x.xx; VISTA; 02:xx:xx:xx:xx:xx; WORKGROUP 
192.168.x.xx; VISTA; 02:xx:xx:xx:xx:xx; WORKGROUP 


Comme tu peux le voir sur le dernier fichier le pc nommé Vista apparait plusieurs fois ce qui est normal puisqu'il était connecté à chaque scan. Mais je souhaiterai trouvé une solution pour qu'il n'y est qu'un pc par liste même s'il y à plusieurs scan. Encore merci de ton implication Okay

PS: N'hésité pas à émettre des critiques sur le code si cela est nécessaire. Je pense toujours que l'on apprend que de ses erreurs.

Cordialement.



Répondre en citant
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 
essaie ceci :

for /f "tokens=1,3,4,2 delims=\ " %%a in ('type infos.tmp') do if not exist %%a (echo %%a %%b %%c %%d) >> good.csv

le problème étant de traiter les doublons dans le fichier crée par nbtscan -m %1>infos.tmp

je suppose que ce fichier contient ceci :


192.168.X.XX WORKGROUP\VISTA 02:90:xx:xx:xx:xx SHARING
192.168.X.XX WORKGROUP\SERVER 00:0b:xx:xx:xx:xx SHARING
192.168.X.XX WORKGROUP\VISTA 02:90:xx:xx:xx:xx SHARING
192.168.X.XX WORKGROUP\SERVER 00:0b:xx:xx:xx:xx SHARING




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 
Ajoute ceci à ton code

Code vérifié XP PRO
Code:
::supprime les doublons
type nul> ListPC.txt
FOR /F "delims=" %%a in (infos.tmp) do (
FIND "%%a" < ListPC.txt >nul
if errorlevel=1 echo %%a>>ListPC.txt
)
copy/y ListPC.txt %1 > nul
notepad ListPC.txt



ce qui donne :

Code:
@echo off
echo nom de l'ordi: %1
Rem Scan du réseau d'après la liste et stockage dans fichier temporaire
nbtscan -m %1>infos.tmp


::supprime les doublons
type nul> list.tmp
FOR /F "delims=" %%a in (infos.tmp) do (
FIND "%%a" < list.tmp >nul
if errorlevel=1 echo %%a>>list.tmp
)
copy/y list.tmp %1 > nul

Rem Extraction chaines de caractère et stockage dans fichier csv pour renvoi vers la base MySql
for /f "tokens=1,3,4,2 delims=\ " %%a in ('type list.tmp') do echo %%a %%b %%c %%d >> good.csv
Rem Destruction du fichier temporaire
FOR %%A IN (infos list)  DO IF EXIST %%A.tmp DEL /Q %%A.tmp





______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 
Laddy a écrit:
Ajoute ceci à ton code

Code:
@echo off
echo nom de l'ordi: %1
Rem Scan du réseau d'après la liste et stockage dans fichier temporaire
nbtscan -m %1>infos.tmp


::supprime les doublons
type nul> list.tmp
FOR /F "delims=" %%a in (infos.tmp) do (
FIND "%%a" < list.tmp >nul
if errorlevel=1 echo %%a>>list.tmp
)
copy/y list.tmp %1 > nul

Rem Extraction chaines de caractère et stockage dans fichier csv pour renvoi vers la base MySql
for /f "tokens=1,3,4,2 delims=\ " %%a in ('type list.tmp') do echo %%a %%b %%c %%d >> good.csv
Rem Destruction du fichier temporaire
FOR %%A IN (infos list)  DO IF EXIST %%A.tmp DEL /Q %%A.tmp


Bonsoir Laddy,

Désolé de ne te répondre que si tardivement mais je n'ai pas eu beaucoup de temps aujourd'hui.
Concernant ton code je l'ai testé mais il me rajouté quand même des lignes dans mon fichier good.csv. Je ne sais pas si le fait d'être sous vista peux changer quelque chose mais bon...
J'ai donc modifié quelque peu ton code et après plusieurs tests il me semble avoir trouvé quelque chose d'adéquat pour que çà fonctionne sur ma machine :

Code:

@echo off
echo nom de l'ordi: %1
Rem Scan du réseau d'après la liste et stockage dans fichier temporaire
nbtscan -m %1>infos.tmp

Rem Extraction chaines de caractère
for /f "tokens=1,3,4,2 delims=\ " %%a in ('type infos.tmp') do echo %%a; %%b; %%c; %%d; >> pc.tmp

::supprime les doublons
type nul> list.tmp
FOR /F "delims=" %%a in (pc.tmp) do (
FIND "%%a" < list.tmp >nul
if errorlevel=1 echo %%a>>list.tmp
)

copy list.tmp good.csv

Rem Destruction du fichier temporaire
FOR %%A IN (infos list)  DO IF EXIST %%A.tmp DEL /Q %%A.tmp


J'ai testé plusieurs fois et le script agit de la manière d'on je le souhaite à savoir :
Scan du réseau d'après la liste => si la machine n'existe pas dans mon fichier good.csv elle est ajoutée, si toutefois elle est déjà présente alors rien n'est rajouté au fichier.

Comme d'habitude si tu vois quelque chose dans mon code qui ne te semble pas cohérent fait m'en part. Merci sincèrement de ton aide Okay Okay Okay sans laquelle je ne pense pas avoir pu terminer ce code.

Cordialement.



Répondre en citant
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 
Bonjour

d'après ce que je vois, tu as traité les doublons en dernier alors que je les avais traité en premier, sur le fichier que tu avais fourni ça fonctionnait très bien.
sur les 4 lignes j'en avais plus que 2.
Le principal c'est que tu obtiennes bien ce que tu souhaites.

Si tu penses ce sujet résolu, merci d'éditer ton 1er message et t'ajouter la balise [Résolu] dans la barre des titres.

Bonne journée
Laddy




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Message [Résolu]Besoin aide pour récupérer l'adresse mac, l'ip 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch