Avec ipconfig
je peux afficher la liste des adaptateurs réseau et leurs paramètres, par exemple l'adresse IP.
Je recherche une commande inverse qui affiche le nom de la carte réseau pour une adresse IP donnée.
J'ai essayé de filtrer la sortie de ipconfig
avec une commande comme ipconfig | find "192.168.2.4"
mais le nom de l'adaptateur a disparu.
Ma sortie ipconfig
est (la partie délicate semble que j'ai plusieurs adresses sur un adaptateur ici):
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
la source
la source
Réponses:
Comment afficher le nom d'une carte réseau pour une adresse IP donnée?
Cette solution ne pas exiger des commandes externes (
pcre2grep
,sed
, etc.).Utilisez le fichier de commandes suivant (getname.cmd):
Usage:
Exemple:
Lectures complémentaires
la source
goto
,for
,if
, fonctions, macros ... Que avez - vous besoin? ;)Vous pouvez utiliser cette doublure PS one:
Pour l'utiliser directement depuis la ligne de commande:
ou si vous voulez le réutiliser le mettre dans un script et faire de l'adresse un paramètre
Edit: pour obtenir un nom tel qu'il apparaît dans Win / Ipconfig:
(l'affectation à des variables intermédiaires ne fait que le rendre un peu plus lisible)
la source
$powershell
n'est pas défini cependant, je lance ces commandes avec l'powershell -c
invite de commande. Sur la ligne de commande PS, la 1ère ligne fonctionne également.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
ce qui faciliteAssociators of
un peu les méthodes.Sur la base de tout ce que j'ai essayé, cela devrait fonctionner, vous semblez avoir besoin d'obtenir ces informations UNIQUEMENT à partir de l'adresse IP que vous avez déjà spécifiée dans votre exemple.
DEMANDE INTERACTIVE D'ADRESSE IP POUR OBTENIR UN NOM DE CONNEXION RÉSEAU
(Utilisez
WMIC
et uneFOR
boucletoken
et unedelim
analyse par lots pour obtenir le nom de la connexion réseau pour une adresse IP spécifiée.)(La valeur de résultat se répercutera dans une fenêtre de commande et une fenêtre de boîte de message. Ce sont tous des scripts batch mais créent dynamiquement certaines fonctions de script VBS pour simplifier le processus pour quiconque en a besoin.)
TOUS LES ONE-LINERS
FENÊTRES AUTOCHTONES UNIQUEMENT AVEC NETSH TOUTES LES INTERFACES (TOUTES LES ADRESSES IPv4)
FENÊTRES NATIVES UNIQUEMENT AVEC IPCONFIG TOUTES LES INTERFACES (TOUTES LES ADRESSES IPv4)
UTILISATION DE PCRE2GREP (par @SalvoF)
ADRESSE IP UNIQUE SPÉCIFIÉE
TROUVEZ TOUTES LES ADRESSES IP
TROUVEZ TOUTES LES ADRESSES IP (Cleaned Up Regex (per @SalvoF))
Veuillez noter que
pcre2grep
j'ai essayé est par @SalvoF[+1]
comme il l'a suggéré mais en utilisant le ....FIND /V
pour supprimer la ligne ci-dessus contenantDHCP
semble obtenir la sortie souhaitée comme vous l'avez décrit. J'ai utiliséNETSH
plutôt queIPCONFIG
bien.la source
netsh interface ip show config | pcre2grep "^[A-Z]|IP.*([0-9]{1,3}(\.|)){4}"
(J'ai nettoyé un peu l'expression régulière). J'apprends beaucoup autour de cet endroit!Pour être plus précis, en suivant l'exemple d'OP, j'utiliserais
sed
, qui se trouve sous le\usr\local\wbin
dossier de ce fichier compressé (projet UnxUtils).-n
supprime les lignes qui ne correspondent pas; le premier motif trouve une ligne commençant par une lettre majuscule, puis lah
met en attente; la deuxième correspondance est sur le numéro IP souhaité: à ce stade, le nom de l'interface de maintien de la ligne est rappelé (g
), le texte de début supplémentaire est supprimé (s
) et imprimé (p
).la source
-B4
fonctionne presque, il me laisse juste le préfixe "adaptateur Ethernet", qui n'appartient pas au nom de l'adaptateur + 4 lignes de sortie sans rapport. Mais le message est clair: trouvez un outil qui le fait :-)ipconfig
sortie non filtrée ? (Obscurcir ou modifier les données pour la confidentialité)sed
; peut-être que votre solution peut également être modifiée pour atteindre cet objectif.| sed -rn "s/^.* adapter (.*):/\1/p"
Juste pour mémoire, voici une autre solution batch, elle exploite l'expansion retardée de la
%ERRORLEVEL%
variable système:Il peut être invoqué de cette façon:
find_int.cmd 192.168.1.100
la source
sed
one-liner, laissant le nom de l'interface comme seule sortie. Bien sûr, vous pouvez également écrire un fichier batch simple en passant l'IP no. comme argument (%1
).Merci pour l'effort tout le monde. Il semble qu'il y ait plusieurs obstacles:
Tous les
-Bx
trucs et Regex semblent se casser facilement, j'ai donc recherché quelque chose que je pourrais implémenter moi-même et j'ai proposé le programme C # suivant, qui prend l'adresse IP comme paramètre (IP2Adapter <IP>
):la source
Sur Windows 10 Powershell, cela peut être réalisé avec les éléments suivants:
Cela donnera un résultat tel que
Wi-Fi
.Où vous pouvez remplacer
InterfaceAlias
toute autre propriété d'objet.Pour obtenir toutes les propriétés, omettez simplement les tuyaux, et exécutez:
Get-NetIPAddress -IPAddress '192.168.2.4'
.D'autres propriétés liées à l'adaptateur réseau (telles que la description) peuvent généralement être interrogées en fonction
InterfaceAlias
ouInterfaceIndex
, par exemple:Ce qui vous donnera quelque chose comme:
Intel(R) Dual Band Wireless-AC 8265
.En savoir plus sur les documents: https://docs.microsoft.com/en-us/powershell/module/nettcpip/get-netipaddress?view=win10-ps
la source