Com ipconfig
posso mostrar a lista de adaptadores de rede e suas configurações, por exemplo, o endereço IP.
Estou procurando um comando reverso que exibe o nome do adaptador de rede para um determinado endereço IP.
Eu tentei filtrar a saída de ipconfig
com um comando como, ipconfig | find "192.168.2.4"
mas o nome do adaptador se foi.
Minha saída de ipconfig
é (a parte complicada parece que tenho vários endereços em um adaptador aqui):
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::xxxx:xxxx:xxxx:xxxx%11
IPv4 Address. . . . . . . . . . . : 192.168.2.4
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.178.20
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.178.1
192.168.2.1
Ethernet adapter VMware Network Adapter VMnet1:
...
windows
networking
ip
batch-file
ip-address
Thomas Weller
fonte
fonte
Respostas:
Como exibir o nome de um adaptador de rede para um determinado endereço IP?
Esta solução é que não exige quaisquer comandos externos (
pcre2grep
,sed
, etc.).Use o seguinte arquivo em lotes (getname.cmd):
Uso:
Exemplo:
Leitura adicional
fonte
goto
,for
,if
, funções, macros ... o que mais você precisa? ;)Você pode usar este liner PS one:
Para usá-lo diretamente da linha de comando:
ou se você quiser reutilizá-lo, coloque-o em um script e torne o endereço um parâmetro
Edit: para obter um nome como mostra em Win / Ipconfig:
(a atribuição a variáveis intermediárias é apenas para torná-lo um pouco mais legível)
fonte
$powershell
entanto, no meu sistema não está definido, inicio esses comandos com opowershell -c
prompt de comando. Na linha de comando PS, o primeiro liner também é executado.powershell "$ip = '192.168.2.4';foreach($int in (gwmi Win32_NetworkAdapter)) {gwmi Win32_NetworkAdapterConfiguration -Filter """Index = $($int.index)""" | ? {$_.IPAddress -contains $ip} | % {$int.NetConnectionID} }"
GetRelated
que facilitaAssociators of
um pouco os métodos.Com base em tudo o que tentei, parece que você diz que precisa obter essas informações somente do endereço IP que você já especificou em seu exemplo.
PROMPT INTERATIVO PARA ENDEREÇO IP PARA OBTER O NOME DA CONEXÃO DE REDE
(Use
WMIC
e faça algunsFOR
ciclostoken
edelim
análises em lote para obter o nome da conexão de rede para um endereço IP especificado.)(O valor do resultado ecoará em uma janela de comando e em uma janela de caixa de mensagem. É tudo script em lote, mas cria dinamicamente algumas funções de script VBS para simplificar o processo para qualquer pessoa que precise.)
ALL ONE-LINERS
WINDOWS NATIVOS SOMENTE COM REDE TODAS AS INTERFACES (TODOS OS ENDEREÇOS IPv4)
WINDOWS NATIVOS SOMENTE COM IPCONFIG TODAS AS INTERFACES (TODOS OS ENDEREÇOS IPv4)
USANDO PCRE2GREP (por @SalvoF)
ENDEREÇO IP ÚNICO ESPECIFICADO
ENCONTRE TODOS OS ENDEREÇOS IP
ENCONTRE TODOS OS ENDEREÇOS IP (Regex limpo (por @SalvoF))
Observe que o que
pcre2grep
eu tentei é por @SalvoF,[+1]
como ele sugeriu, mas usar o ....FIND /V
para remover a linha acima contémDHCP
o resultado desejado, conforme descrito. Eu useiNETSH
e nãoIPCONFIG
também.fonte
netsh interface ip show config | pcre2grep "^[A-Z]|IP.*([0-9]{1,3}(\.|)){4}"
(Limpei um pouco a regex). Estou aprendendo muito por esse lugar!Para ser mais preciso, seguindo o exemplo do OP, eu usaria
sed
, que pode ser encontrado na\usr\local\wbin
pasta deste arquivo compactado (projeto UnxUtils).-n
suprime linhas não correspondentes; o primeiro padrão encontra qualquer linha que comece com letra maiúscula e ah
coloca em espera; a segunda correspondência está no número IP desejado: nesse momento, o nome da interface de retenção de linha é chamado (g
), o texto inicial extra é retirado (s
) e impresso (p
).fonte
-B4
quase funciona, apenas me deixa o prefixo "adaptador Ethernet", que não pertence ao nome do adaptador + 4 linhas de saída não relacionada. Mas a mensagem é clara: encontrar uma ferramenta que faz isso :-)ipconfig
resultados não filtrados ? (Dados Ofuscação ou mudança de privacidade)sed
; talvez sua solução também possa ser aprimorada para atingir esse objetivo.| sed -rn "s/^.* adapter (.*):/\1/p"
Apenas para constar, aqui está outra solução em lote, que explora a expansão atrasada da
%ERRORLEVEL%
variável do sistema:Pode ser invocado desta maneira:
find_int.cmd 192.168.1.100
fonte
sed
one-liner, deixando o nome da interface como saída única. Obviamente, você também pode escrever um arquivo em lotes simples, passando o número de IP. como argumento (%1
).Obrigado pelo esforço de todos. Parece que existem vários obstáculos:
Todo o
-Bx
material Regex parece quebrar facilmente, então procurei por algo que pudesse me implementar e criei o seguinte programa C #, que usa o endereço IP como parâmetro (IP2Adapter <IP>
):fonte
No Windows 10 Powershell, isso pode ser alcançado com o seguinte:
Isso dará um resultado como
Wi-Fi
.Onde você pode substituir
InterfaceAlias
qualquer outra propriedade do objeto.Para obter todas as propriedades, simplesmente omitir os tubos, e execute:
Get-NetIPAddress -IPAddress '192.168.2.4'
.Propriedades relacionadas com outro adaptador de rede (tal como Descrição) normalmente podem ser consultados com base em
InterfaceAlias
ouInterfaceIndex
, por exemplo .:Que lhe dará algo como:
Intel(R) Dual Band Wireless-AC 8265
.Leia mais sobre os documentos: https://docs.microsoft.com/en-us/powershell/module/nettcpip/get-netipaddress?view=win10-ps
fonte