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 :

[Batch] Récupération Ip des machines du réseau


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut [Batch] Récupération Ip des machines du réseau
    Bonjour tous le monde,
    J'ai bat qui me pose quelques problémes,
    Le but serait dans un fichier d'avoir le nom de certains pc : UC1,UC4 etc...
    De faire un ping sur ces machines et de mettres les ips dans un autre fichier.
    J'ai t'enté plusieurs solutions mais aucune ne marche.

    for /F %%i in (P:\applications\liste_serveur.txt) do (
    PING %%i -n 1 | FIND "Réponse de=") set ip=%%i
    IF ERRORLEVEL 0 (echo %ip >> P:\applications\ip.txt))

    ou alors

    for /F %%i in (P:\applications\liste_serveur.txt) do ('ping %%i -n 1 |find "Réponse de"') set ADRIP=%%i
    set ADRIP=%ADRIP:~44,11%
    echo %ADRIP% >P:\applications\ip.txt

    ou

    FOR /F %%i in nbtstat -a UC1|find "Adresse" do set ip=%%I
    Echo %ip%

    Mais rien de concluant, si quelqu'un à une idée...

    Merci

  2. #2
    Expert confirmé
    Avatar de shawn12
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2006
    Messages
    3 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2006
    Messages : 3 368
    Par défaut
    Tu peux peut-etre utiliser la commande nslookup qui te renvoie l'ip à partir du nom du poste ou l'inverse. (Tu dois avoir un DNS sur ton réseau).

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    J'edite afin d'expliquer un peu plus mon probleme ^^
    J'ai un fichier temp.txt avec ma plage d'ip de 192.168.0.1 à 192.168.0.254
    J'ai aussi un fichier UC.txt ou j'ai le nom de différent PC : UC1 , UC2 etc ...
    Un fichier avec les Ip des UC : Ip-Uc.txt et un fichier temporaire tmp.txt
    Le but étant de récupérer les Ips des différents pc, par exemple UC1 : 192.168.0.192 et de l'enlever du fichier temp.txt, dans ce même fichier temp.txt on aura donc :
    [...]
    192.168.0.191
    192.168.0.193
    [...]

    J'ai commencé par faire le script pour récupérer l'ip :

    set chemin=P:\applications\

    for /F "tokens=2 delims= " %%i in ('"nslookup UC1 | find "Address" | more /E +1"') do set VAR=%%i
    echo %VAR% >> P:\applications\Ip-Uc.txt

    REM Là le probleme réside dans le fait que c'est moi qui tape le nom de luc alors que j'aimerais qu'il aille le récuperer dans le fichier UC.txt
    REM Ensuite prendre l'ip et l'enlever du fichier temp.txt (Je me suis inspiré d'un script de Batcher)

    if not exist %chemin%temp.txt goto fin
    type %chemin%temp.txt | find /n /i "172.23.9.254 " > %chemin%tmp.txt

    REM Pareil c'est moi qui tape l'ip à remplacer...

    for /f %%i in (%chemin%tmp.txt) do set numligne=%%i
    if "%numligne%" == "" goto rientrouvee
    set numligne=%numligne:~1,1%
    set /a numligne=numligne-1
    type %chemin%temp.txt | find /v /i "172.23.9.254 " > %chemin%tmp.txt

    REM Toujours le même probleme

    del %chemin%temp.txt
    set compteur = 1
    for /f %%i in (%chemin%tmp.txt) do call :subroutine %%i
    del %chemin%tmp.txt
    echo modification terminee
    pause
    goto fin

    :rientrouvee
    del %chemin%tmp.txt
    echo la ligne recherchee n'a pu etre trouvee
    pause
    goto fin

    :subroutine
    rem on recree le fichier source avec chaque ligne du fichier temporaire via le parametre %1
    echo %1 >> %chemin%temp.txt
    set /a compteur=compteur+1
    REM if %compteur% == %numligne% echo >> %chemin%temp.txt

    :fin


    Merci d'avance,

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    Une premiere partis de réponse sur Astase avec l'expansion retardé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    setlocal enabledelayedexpansion
    for /f %%a in (%chemin%UC.txt) Do (
           set currentPc=%%a
           rem et donc la tu met ton code
           for /F "tokens=2 delims= " %%i in ('"nslookup !currentPc! | find "Address" | more /E +1"') do set VAR=%%i
           echo !VAR! >> P:\applications\Ip-Uc.txt
    )
    Maintenant il faudrait que je mette en place la même chose pour la deuxième partis mais pas moyen, si quelqu'un à une idée

    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
    set chemin=P:\applications\
    setlocal enabledelayedexpansion
    del %chemin%Ip-Uc.txt
    for /f %%b in (%chemin%Ip-Uc.txt) Do (
    set currentip=%%b
    
    if not exist %chemin%temp.txt goto fin
    type %chemin%temp.txt | find /n /i "!currentip! " > %chemin%tmp.txt
    for /f %%i in (%chemin%tmp.txt) do set numligne=%%i
    if "%numligne%" == "" goto rientrouvee
    set numligne=%numligne:~1,1%
    set /a numligne=numligne-1
    type %chemin%temp.txt | find /v /i "!currentip! " > %chemin%tmp.txt
    del %chemin%temp.txt
    set compteur = 1
    for /f %%i in (%chemin%tmp.txt) do call :subroutine %%i
    del %chemin%tmp.txt
    echo modification terminee
    goto fin
    
    :rientrouvee
    del %chemin%tmp.txt
    echo la ligne recherchee n'a pu etre trouvee
    pause
    goto fin
    
    :subroutine
    rem on recree le fichier source avec chaque ligne du fichier temporaire via le parametre %1
    echo %1 >> %chemin%temp.txt
    set /a compteur=compteur+1
    rem si compteur est = au numero de ligne qui precede la ligne a remplacer on ajoute la nouvelle ligne
    if %compteur% == %numligne% echo. >> %chemin%temp.txt
    
    :fin
    Je pense que je m'en sortirais mieux avec Switch, non ?

    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
    set chemin=C:\boulo\
    
    setlocal enabledelayedexpansion
    for /f %%a in (%chemin%UC.txt) Do (
           set currentPc=%%a
           for /F "tokens=2 delims= " %%i in ('"nslookup !currentPc! | find "Address" | more /E +1"') do set VAR=%%i
           echo !VAR! >> %chemin%Ip-Uc.txt
    
    )
    
    setlocal enabledelayedexpansion
    for /f %%a in (%chemin%Ip-Uc.txt) Do (
           set currentip=%%b
           for /F "tokens=2 delims= " %%i in ('"switch %chemin%Ip-Uc.txt !currentIp! "" | more /E +1"') do set VAR=%%i
    )
    Mais apres je dois enlever toute les ips trouvées (Ip-Uc.txt) du fichier temp.txt et là sa se complique. Il faudrait faire un switch P:\applications\temp.txt %variable% ""
    Avec la variable qui prend à chaque fois une valeur différente, ligne 1 puis ligne 2 etc du fichier Ip-Uc.txt
    Merci

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Par défaut
    J'explique un peut mieux mon problème :
    J'ai un fichier temp.txt avec ma plage d'ip :
    192.168.0.1
    192.168.0.2
    [...]
    192.168.0.253
    192.168.0.254

    J'ai un fichier avec les noms des pc à exclure : Uc.txt

    UC1
    UC2
    etccc

    La première partis de mon script fait un nslookup pour récupérer les ips à exclure du fichier temp.txt et les mettre dans Ip-Uc.txt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    setlocal enabledelayedexpansion
    for /f %%a in (%chemin%UC.txt) Do (
           set currentPc=%%a
           rem et donc la tu met ton code
           for /F "tokens=2 delims= " %%i in ('"nslookup !currentPc! | find "Address" | more /E +1"') do set VAR=%%i
           echo !VAR! >> P:\applications\Ip-Uc.txt
    )
    A partir de là, dans mon fichier texte : Ip-Uc.txt , j'ai les ips des ordi :

    192.168.0.24
    192.168.0.74
    [...]
    192.168.0.198

    Maintenant j'aimerais enlever ces Ip du fichier temp.txt, voilà mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    set chemin=P:\applications\
    
    setlocal enabledelayedexpansion
    for /f %%a in (%chemin%UC.txt) Do (
           set currentPc=%%a
           for /F "tokens=2 delims= " %%i in ('"nslookup !currentPc! | find "Address" | more /E +1"') do set VAR=%%i
           echo !VAR! >> %chemin%Ip-Uc.txt
    
    )
    Il m'enlève bien les ip du fichier temp.txt mais il m'en supprime d'autre et il y à comme un compteur dans le fichier.

    192.168.0.100
    0
    192.168.0.102
    1
    192.168.0.103

    Jusqu'à 9, j'ai aucune idée d'où sa peut venir ...

Discussions similaires

  1. noms des machines sur le réseau
    Par billy242 dans le forum Développement
    Réponses: 5
    Dernier message: 14/01/2010, 08h42
  2. Réponses: 2
    Dernier message: 09/06/2009, 11h20
  3. Liste des machines sur un réseau local (tout le réseau de Win)
    Par Lucas Panny dans le forum Web & réseau
    Réponses: 5
    Dernier message: 01/02/2009, 02h11
  4. le sous-adressage des machines d'un sous-réseau
    Par witch dans le forum Hardware
    Réponses: 3
    Dernier message: 17/06/2007, 22h10
  5. [C#] Détecter le nom des machines du réseau local...
    Par diaboloche dans le forum Windows Forms
    Réponses: 8
    Dernier message: 08/01/2006, 22h30

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