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

Scripts/Batch Discussion :

Extraire l'adresse Mac d'un arp -a [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 50
    Par défaut Extraire l'adresse Mac d'un arp -a
    Bonjour,

    Quelqu'un sait-il comment extraire l'adresse mac (entouré en rouge) lors d'un arp -a d'une adresse ip?
    cf exemple.jpg
    C'est très important pour la suite de mon script. Merci d'avance.
    Images attachées Images attachées  

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @echo off
    if "%1"=="" goto :eof
    for /f "usebackq tokens=2 skip=3" %%I in (`arp -a %1`) do echo %%I
    A toi de voir ce que tu veux faire avec après, il te suffit de remplacer le "echo" par ton traitement, la variable %%I contient la MAC Address en question.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 50
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set ip=10.45.100.52
    ping %ip%
    for /f "usebackq tokens=2 skip=3" %%I in (`arp -a %ip%`) do echo %%I>>AdresseMac.txt
    Merci beaucoup, ta solution marche parfaitement.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 50
    Par défaut
    J'ai aussi un autre problème, je voudrais récupérer des informations situées dans des lignes particulières d'un fichier texte.( les lignes 8 et 10 présentées ci-dessous)
    8- NEO-4A19A2
    9- <gMgr -l -r "/tmp/config/sys/sysinfo.ini" -k "Sysinfo/Hw" -i "serialNumber"
    10- 7124A19A2
    11- [root@NEO-4A19A2 /root]# exit

    J'ai essayé ceci, mais cela ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for /f "eol= skip=7" %%A in (`Neoware.txt`) do set NomMachine=%%A
    for /f "eol= skip=9" %%B in (`Neoware.txt`) do set NumSerie=%%B
    echo %NomMachine%;%NumSerie%>>ResultNeoware.txt
    Les caractères 8-, 9-, 10-, 11- ne sont pas des caractères de mon fichier, je les ai ajouté pour être plus clair.
    Merci.

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Normal, tu n'as pas mis "tokens", et dans ton cas "eol" n'est à priori pas utile.

    Mets donc "tokens=1 skip=X" à la place (X=7 ou 9), et retente : ça devrait marcher.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 50
    Par défaut
    Non, j'avais déjà essayé et ça ne marche pas.
    (J'ai rentré ceci) Le fichier Neoware.txt existe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for /f "tokens=1 skip=7" %%A in (`Neoware.txt`) do set NomMachine=%%A
    for /f "tokens=1 skip=9" %%B in (`Neoware.txt`) do set NumSerie=%%B
    echo %NomMachine%;%NumSerie%>>ResultNeoware.txt
    et je n'ai que le ; dans le fichier ResultNeoware.txt

  7. #7
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Ceci marche :
    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
    REM Récupération du nom de machine.
    for /f "tokens=1 skip=7" %%A in (Neoware.txt) do (
    	set NomMachine=%%A
    	REM On casse la boucle, inutile de poursuivre et
    	REM en plus, ça provoque des écrasements.
    	goto :break1
    )
    :break1
    REM Récupération du numéro de série.
    for /f "tokens=1 skip=9" %%B in (Neoware.txt) do (
    	set NumSerie=%%B
    	REM On casse la boucle, inutile de poursuivre et
    	REM en plus, ça provoque des écrasements.
    	goto :break2
    )
    :break2
    REM Fini, on a juste les informations que l'on voulait.
    echo %NomMachine%;%NumSerie%>>ResultNeoware.txt
    C'était encore plus évident que ça, j'avais pas vu les "``" autour du nom de fichier... Il ne faut les utiliser que lorsque tu veux analyser le résultat d'une commande, pas quand c'est un fichier déjà existant.

    Volontairement, j'ai omis le "@echo off" en tête de fichier, tu verras ainsi que le fichier s'arrête bel et bien d'être parcouru après avoir trouvé la bonne ligne. Si tu enlèves les "goto", tu verras qu'à chaque fois, "NomMachine" et "NumSerie" vaudront la valeur de la dernière entrée tous les deux...

    Attention surtout à ne pas rajouter d'espaces inutiles dans les lignes contenant un "set", sinon l'espace en question sera ajouté à la variable.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 50
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for /f "tokens=1 skip=7" %%f IN (Neoware.txt) DO (set NomMachine=%%f & goto :BREAK1)
    :BREAK1
    for /f "tokens=1 skip=9" %%g IN (Neoware.txt) DO (set NumSerie=%%g & goto :BREAK2)
    :BREAK2
    echo %NomMachine%;%NumSerie%>>ResultNeoware.txt
    Merci pour ta réponse qui m'a permis de générer ce code. J'ai rajouté le & qui me permet de "casser la boucle" et de m'arrêter à l'enregistrement que je voulais, sinon il remontait la dernière ligne du fichier.

  9. #9
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Attention à ton code, là : ton "...=%%f & goto..." va ajouter un espace après l'élément, il faut écrire "...=%%f& goto...". C'est pour éviter ça que j'avais séparé sur plusieurs lignes : c'est plus lisible, et ça évite ce genre d'erreurs.

    Sinon, ton fichier final contiendra "NEO-4A19A2 ;7124A19A2 " au lieu de "NEO-4A19A2;7124A19A2".
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 50
    Par défaut
    Merci Mac LAK
    Quelqu'un saurait-il récupérer les 8 premiers caractères de cet arp -a ?
    ex : 00:5e:56:78:8p
    -> 00:5e:56

  11. #11
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    En partant de ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set ip=10.45.100.52
    ping %ip%
    for /f "usebackq tokens=2 skip=3" %%I in (`arp -a %ip%`) do echo %%I>>AdresseMac.txt
    Tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for /f "tokens=1-3 delims=:" %%I in (AdresseMac.txt) do echo %%I:%%J:%%K>>AdresseMacReduite.txt
    Cela devrait fonctionner.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Obtenir l'adresse mac de sa carte reseau
    Par kivoch dans le forum C++Builder
    Réponses: 4
    Dernier message: 19/11/2009, 18h30
  2. recuperer adresse MAC d'un pc sur un reseau local
    Par LineLe dans le forum Développement
    Réponses: 3
    Dernier message: 25/03/2005, 16h37
  3. Réponses: 5
    Dernier message: 25/03/2003, 17h27
  4. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

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