Um comando de linha no Windows para obter o endereço IP do computador através da minha rede wifi

0

Eu tenho uma configuração do servidor windows onde eu gostaria de obter o endereço IP do servidor dinamicamente.

O problema é que ipconfig retorna uma string enorme e o script que estou usando quer o endereço imediatamente. Existe algum comando para obter isso imediatamente? Estou aberto à idéia de um script externo .bat ou um mini software CLI que eu possa colocar no meu servidor para que meu script converse com esse script para obter o endereço IP pela rede wifi.

    
por vDog 31.03.2014 / 02:09

3 respostas

3

No Powershell 2.0 e acima:

PS C:\Users\User> Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPENABLED=TRUE | Select IPAddress

IPAddress
---------
{192.168.1.100, ****::****:****:****:****}

Observe que isso fornecerá a você todos os endereços IP no computador. Você poderá filtrar apenas o endereço IPv4.

    
por 31.03.2014 / 03:59
1

Você precisa obter algumas informações do sistema para que isso funcione perfeitamente. A wmic lhe dará esta informação se você perguntar da maneira correta.

wmic nicconfig fornecerá informações sobre todos seus adaptadores, infelizmente com uma linha que não pode ser lida pelo bloco de notas. Execute wmic nicconfig > file.txt e abra o arquivo.txt no notepad ++ - Você precisa encontrar uma coluna chamada "Legenda". No meu caso, ele lê [00000000] Qualcomm Atheros AR9485 Wireless Network Adapter - você pode usar isso para procurar informações sobre esse adaptador específico.

A execução de wmic nicconfig where Caption="[00000000] Qualcomm Atheros AR9485 Wireless Network Adapter" get ipaddress exportaria os valores dos endereços IP ou da interface específica no formato {"192.168.1.137", "fe80::XXXX:XXXX:XXXX:XXXX"} (eu corro pilha dupla). Você pode simplesmente usar algo como gnu cut ou alguma outra ferramenta para remover os caracteres desnecessários da saída.

Como indicado nos comentários, o powershell provavelmente fará tudo isso, inclusive obtendo informações do wmi e retirando as informações

    
por 31.03.2014 / 03:51
0

Você pode modificar o abaixo para atender às suas necessidades.

@ECHO OFF
::=======================================================================
::  Author: Andrew Tsai
::  Date  : 04-15-2014
::=======================================================================
CLS
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

ECHO Retrieving MAC Addresses
FOR /F "tokens=1 delims= " %%a in ('getmac ^| findstr "\-" ^| findstr /v "00-50-56"')     do (
    SET vMAC=%%a
    SET vMAC=!vMAC:-=:!

    ECHO Retrieving Ethernet Adapter Name for !vMAC!
    %windir%\system32\wbem\wmic.exe /output:NICName.txt nic where MACAddress="!vMAC!"     get NetConnectionID
    for /F "skip=1 tokens=1 delims=" %%l in ('type "NICName.txt"') do (
        SET LAN_NAME=%%l
        REM Trim Trailing Spaces
        for /l %%m in (1,1,31) do if "!LAN_NAME:~-1!"==" " SETLAN_NAME=!LAN_NAME:~0,-1!
     )

    ECHO Retrieving IP
    FOR /F "tokens=2 delims= " %%a IN ('netsh int ipv4 show ipaddresses "!LAN_NAME!" ^| find "Parameters"') DO SET CurIP=%%a
)
FOR /F "tokens=2 delims= " %%a in ('%windir%\system32\nslookup myip.opendns.com resolver1.opendns.com ^| find "Address" ^| find ^/V "208.67.222.222"') DO SET ExtIP=%%a

ECHO.
ECHO Current LAN = !LAN_NAME!
ECHO Current MAC = !vMAC!
ECHO Current Internal IP = !CurIP!
ECHO Current External IP = !ExtIP!
ECHO.
REM SET LAN_NAME
REM SET vMAC
REM SET CurIP
REM SET ExtIP

ENDLOCAL
ENDLOCAL

:END
    
por 15.04.2014 / 19:29