locked
Conoscere IP di una determinata scheda di rete via script RRS feed

  • Domanda

  • Ciao

    Come scritto nel titolo dovrei creare uno script che mi estrapoli l'IP
    di una determinata scheda di rete.

    Vi ringrazio anticipatamente.


    • Modificato Anca Popa mercoledì 30 maggio 2012 10:07 typo
    giovedì 24 maggio 2012 14:25

Risposte

  •  

    In questo post puoi trovare qualche indicazione http://social.technet.microsoft.com/Forums/en/ITCG/thread/2b8dfe1c-9c4c-448e-8f43-e4c2cace22b7

    :: ritorna l'ip delle schede IPenabled
    wmic nicconfig where "IPEnabled=TRUE" get ipaddress

    Tento una soluzione.

    @echo off
    cls
    ::getip.cmd
    setlocal Rem elenca le schede IPenabled for /F %%I in ('wmic nicconfig where "IPEnabled=TRUE" get index ^|findstr /r [0-9]') do ( for /F "tokens=*" %%N in ('wmic nic where "deviceid=%%I" get NetConnectionID ^| findstr /v /r /i "^$ NetConnectionID"') do ( echo Scheda Attiva trovata: %%N ) ) echo.&echo.&echo. Rem visualizza l'ip in base al nome visualizzato es "Connessione alla rete locale (LAN)" set AdapterName="Connessione alla rete locale (LAN) 2" for /F %%I in ('wmic nic where NetConnectionID^=%AdapterName% get index ^|findstr /r [0-9]') do ( for /F "tokens=1 delims={} " %%N in ('wmic nicconfig where "index=%%I" get ipaddress ^| findstr /v /r /i "^$ IPAddress"') do ( echo %AdapterName% %%~N ) ) for /F "tokens=2 delims=:" %%I in ('ipconfig ^|find "Indirizzo IPv4"') do echo%%I

    Visto che si parlava di netsh/ipconfig ho fatto un batch, ma si potrebbe usare vbscript o powershell

    Ciao Gs


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE!



    giovedì 24 maggio 2012 21:30
    Moderatore
  • @echo off
    setlocal
    Rem visualizza l'ip in base al nome visualizzato es "Connessione alla rete locale (LAN)"
     set AdapterName="Connessione alla rete locale (LAN)"
      for /F %%I in ('wmic nic where NetConnectionID^=%AdapterName%  get index ^|findstr /r [0-9]')  do (
        for /F "tokens=1 delims={} " %%N in ('wmic nicconfig where "index=%%I" get ipaddress ^| findstr /v /r /i  "^$ IPAddress"') do  (
          echo %AdapterName%  %%~N
          route add 192.168.1.1 mask 255.255.255.0 %%~N
        )
      )

    oppure

     modificata per funzionare con  xp/7/2008 (ovviamente versione ITA)
    for /F "tokens=2 delims=:" %%I in ('ipconfig ^|findstr  /I /c:"Indirizzo IPv4" /c:"Indirizzo IP"')  do echo route add 192.168.1.1 mask 255.255.255.0  %%I


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE!




    lunedì 28 maggio 2012 17:08
    Moderatore

Tutte le risposte

  • Ciao, un semplice ipconfig /all non ti basta? Così estrapoli l'ip di tutte le schede di rete...basta che le chiami diverse da lan1 lan2 lan3 così capisci quale è quella che ti serve...no?

    A.

    giovedì 24 maggio 2012 15:21
    Moderatore
  • Grazie alessandro.

    La richiesta è nata dal fatto che dovrei creare uno script per gestire delle tabell di routing.
    Sulla macchina ho una scheda LAN virtuale creata da un client VPN (VPNC).
    Una volta conosciuto l'IP della scheda virtuale creo le tabelle.
    Ho trovato questo che funziona ma mi da tutto lo stato della scheda:

    netsh interface ip show addresses name="Connessione alla rete locale (LAN) 2"

    giovedì 24 maggio 2012 16:01
  •  

    In questo post puoi trovare qualche indicazione http://social.technet.microsoft.com/Forums/en/ITCG/thread/2b8dfe1c-9c4c-448e-8f43-e4c2cace22b7

    :: ritorna l'ip delle schede IPenabled
    wmic nicconfig where "IPEnabled=TRUE" get ipaddress

    Tento una soluzione.

    @echo off
    cls
    ::getip.cmd
    setlocal Rem elenca le schede IPenabled for /F %%I in ('wmic nicconfig where "IPEnabled=TRUE" get index ^|findstr /r [0-9]') do ( for /F "tokens=*" %%N in ('wmic nic where "deviceid=%%I" get NetConnectionID ^| findstr /v /r /i "^$ NetConnectionID"') do ( echo Scheda Attiva trovata: %%N ) ) echo.&echo.&echo. Rem visualizza l'ip in base al nome visualizzato es "Connessione alla rete locale (LAN)" set AdapterName="Connessione alla rete locale (LAN) 2" for /F %%I in ('wmic nic where NetConnectionID^=%AdapterName% get index ^|findstr /r [0-9]') do ( for /F "tokens=1 delims={} " %%N in ('wmic nicconfig where "index=%%I" get ipaddress ^| findstr /v /r /i "^$ IPAddress"') do ( echo %AdapterName% %%~N ) ) for /F "tokens=2 delims=:" %%I in ('ipconfig ^|find "Indirizzo IPv4"') do echo%%I

    Visto che si parlava di netsh/ipconfig ho fatto un batch, ma si potrebbe usare vbscript o powershell

    Ciao Gs


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE!



    giovedì 24 maggio 2012 21:30
    Moderatore
  • Grazie Gastone

    Nel W.E. ci provo e ti faccio sapere.

    Grazie

    venerdì 25 maggio 2012 07:34
  • Grazie Gastone,

    Il tuo script funziona benissimo,
    purtroppo causa mia impreparazione non riesco a capire come integrare il tuo script per
    fare un "route add" .
    Mi spego:
    da quell poco che capisco la variabile %%I contiene l'indirizzo IP.
    Come faccio ad aggiungere %%I a una riga tipo:
    route add 192.168.1.1 mask 255.255.255.0 %%I

    lunedì 28 maggio 2012 14:38
  • @echo off
    setlocal
    Rem visualizza l'ip in base al nome visualizzato es "Connessione alla rete locale (LAN)"
     set AdapterName="Connessione alla rete locale (LAN)"
      for /F %%I in ('wmic nic where NetConnectionID^=%AdapterName%  get index ^|findstr /r [0-9]')  do (
        for /F "tokens=1 delims={} " %%N in ('wmic nicconfig where "index=%%I" get ipaddress ^| findstr /v /r /i  "^$ IPAddress"') do  (
          echo %AdapterName%  %%~N
          route add 192.168.1.1 mask 255.255.255.0 %%~N
        )
      )

    oppure

     modificata per funzionare con  xp/7/2008 (ovviamente versione ITA)
    for /F "tokens=2 delims=:" %%I in ('ipconfig ^|findstr  /I /c:"Indirizzo IPv4" /c:"Indirizzo IP"')  do echo route add 192.168.1.1 mask 255.255.255.0  %%I


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE!




    lunedì 28 maggio 2012 17:08
    Moderatore
  • Ciao barabba,

    Evidenzio le risposte di Gastone siccome mi sembra di capire che gli interventi siano stati risolutivi.

    Se ci sono novita' ti prego di aggiornare il thread, postando sempre in questo spazio.

    Grazie a tutti della partecipazione nel forum,


    Anca Popa Follow ForumTechNetIt on Twitter

    La Conferenza Italiana sulla Virtualizzazione

    Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto viene fornito “così come è” e non comporta alcuna responsabilità da parte dell'azienda. 

    mercoledì 30 maggio 2012 10:35
  • Ciao Gastone

    Prima di disturbarti di nuovo ho tentato invano di capire.
    Purtroppo lo scrpt non funziona.
    Mi sono accorto che la variabile %%~N contiene una virgola alla fine.
    La virgola da errore nella riga route add.

    Grazie

    giovedì 31 maggio 2012 10:46
  • Puoi postare il tuo codice, poi ci guardiamo

    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE!

    giovedì 31 maggio 2012 17:44
    Moderatore
  • Il codice è quello suggerito da te Lunedi 28.

    Funzionerebbe benissimo se non avesse la virgola alla fine

    venerdì 1 giugno 2012 07:51
  • Su che sistema operativo li usi?

    setlocal
    Rem visualizza l'ip in base al nome visualizzato es "Connessione alla rete locale (LAN)"
     set AdapterName="Connessione alla rete locale (LAN)"
      for /F %%I in ('wmic nic where NetConnectionID^=%AdapterName%  get index ^|findstr /r [0-9]')  do (
        for /F "tokens=1 delims={} " %%N in ('wmic nicconfig where "index=%%I" get ipaddress ^| findstr /v /r /i  "^$ IPAddress"') do  (
          echo %AdapterName%  %%~N
          route add 192.168.1.1 mask 255.255.255.0 %%~N
        )
      )
    pause

    Copia l'output di qusto ultimo batch e postalo qui poi vediamo questa virgola...

    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE!

    venerdì 1 giugno 2012 08:12
    Moderatore
  • Ecco il risultato quando lacio lo script da Prompt:

    echo "Wireless Network Connection"  192.168.2.2",
     route add 192.168.200.0 mask 255.255.255.0 192.168.2.2",
    )
    "Wireless Network Connection"  192.168.2.2",
    The route addition failed: The parameter is incorrect.

    Se si riuscisse a togliere l'apice e la virgola finale alla riga
    route add 192.168.200.0 mask 255.255.255.0 192.168.2.2",
    penso diventi funzionante.

    sabato 2 giugno 2012 13:47
  • Se continui a inviare solo una parte non riesco a correggere il tuo problema!
    La cosa migilore sarebbe che avere anche il tuo script...

    Ricapitoliamo per risolvere mi servono

    1. Sistema Operativo dove usi lo script
    2. linguaggio del SO
    3. il tuo script
    4. output del prossimo script
    setlocal
    Rem visualizza l'ip in base al nome visualizzato es ""
     set AdapterName="Wireless network connection"
      for /F %%I in ('wmic nic where NetConnectionID^=%AdapterName%  get index ^|findstr /r [0-9]')  do (
        for /F "tokens=1 delims={} " %%N in ('wmic nicconfig where "index=%%I" get ipaddress ^| findstr /v /r /i  "^$ IPAddress"') do  (
          echo %AdapterName%  %%~N
          route add 192.168.1.1 mask 255.255.255.0 %%~N
        )
      )
    pause


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE!

    sabato 2 giugno 2012 23:39
    Moderatore
  • ok, prova questo:

    setlocal
    Rem visualizza l'ip in base al nome visualizzato es ""
     set AdapterName="lan"
      for /F %%I in ('wmic nic where NetConnectionID^=%AdapterName%  get index ^|findstr /r [0-9]')  do (
        for /F "tokens=1 delims={}, " %%N in ('wmic nicconfig where "index=%%I" get ipaddress ^| findstr /v /r /i  "^$ IPAddress"') do  (
          echo %AdapterName%  %%~N
          route add 192.168.1.1 mask 255.255.255.0 %%~N
        )
      )
    pause


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE!


    sabato 2 giugno 2012 23:48
    Moderatore
  • Ciao Gastone

    Ho risolto modificando il delims cosi:
     delims={,

    Ora funziona.

    Grazie della pazienza e dell'aiuto.

    martedì 5 giugno 2012 19:56
  • Ma avevi provato l'ultimo script con il delim nuovo?

    Se la tua scheda ha  + ip, il separatore da usare è quello dell'ultimo script   delims={}, " 

    Grazie del feedback,ma sarebbe stato utile avere le risposte che avevo chiesto e avremmo chiuso il 3d 5/6 post fa

    Ciao Gastone


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE!


    martedì 5 giugno 2012 20:39
    Moderatore