web-dev-qa-db-fra.com

Comment obtenir l'adresse MAC de l'ordinateur distant

J'ai une situation spécifique. Je veux obtenir une adresse MAC à partir d'un ordinateur distant, qui n'est pas dans le domaine. Je connais le nom d'hôte et l'adresse IP de l'ordinateur distant. L'adresse IP de mon ordinateur est de 192.168.2.40 et l'IP de l'ordinateur distant est de 192.168.2.41.

J'ai essayé:

arp -a <remote IP Address>
No ARP entries found.

nbtstat -n <remote hostname>
Host not found.

getmac /s <remote IP Address>
ERROR: The RPC server is unavailable.

Est-il possible d'obtenir l'adresse MAC du système distant à partir de la ligne de commande, PowerShell ou autre chose? Quelles conditions doivent être définies? Merci.

8
culter

NMAP retournera l'adresse MAC ainsi que sur tout ce que vous voudriez savoir.

Si vous avez un accès administrateur à la machine, PowerShell & WMI sont tous deux très utiles pour obtenir des diagnostics distants. Ils ont tous deux une documentation étendue à Techet.Microsoft.com

eDIT: Cela suppose une machine Windows, qui de l'apparence de celui-ci, cela pourrait ne pas être.

6
jhayes

Les adresses MAC sont des choses Ethernet, pas des choses sur Internet. Un ordinateur n'a même pas besoin d'une adresse MAC. Le seul moyen d'obtenir l'adresse MAC est d'obtenir un ordinateur sur le même réseau local que cet ordinateur pour vous le dire. Et vous n'avez aucun moyen de savoir que cela vous donnait les informations correctes.

Si vous êtes dans le même réseau local Ethernet, vous pouvez simplement ping l'ordinateur puis regarder dans votre table ARP. Sinon, vous devriez demander à un ordinateur dans le même réseau local éthéré/wifi.

7
David Schwartz

Vous pouvez l'obtenir de WMI et toute langue pouvant lire WMI sera en mesure d'y accéder. VBScript, Jscript, Perl, Python et PowerShell peuvent tous être utilisés pour y arriver.

Depuis que vous avez demandé spécifiquement PowerShell, voici un exemple de http://www.neolisk.com/techblog/powershell-getmacaddressofanofanofanofanofanofanofyRemoteip :

param ( $Computer , $Credential )
#to make it work without parameters
if($Computer -eq $null) { $Computer = $env:COMPUTERNAME }
#program logic
$hostIp = [System.Net.Dns]::GetHostByName($Computer).AddressList[0].IpAddressToString
if($Credential) {
    $Credential = Get-Credential $Credential
    $wmi = gwmi -Class Win32_NetworkAdapterConfiguration -Credential $Credential -ComputerName $Computer
} else {
    $wmi = gwmi -Class Win32_NetworkAdapterConfiguration -ComputerName $Computer 
}
return ($wmi | where { $_.IpAddress -eq $hostIp }).MACAddress
6
gWaldo

ouais. devrait faire juste la façon la plus facile d'un ping, puis vérifiez la table ARP

Si vous êtes plus en fait d'obtenir des choses inventorié et je suggère signalé havoing un regard sur le logiciel libre de Spiceworks ( http://www.spiceworks.com ) pour régler la constante de UPP surveillance et toujours havce vos informations facilement accessibles sur l'ensemble de votre enivorenment.

Je l'ai utilisé pendant des années et il fonctionne très bien sur le LAN.

Il a quelques problèmes avec l'envoi de la sofwtare des stocks à des sites distants cependant, n'ont pas vraiment compris pourquoi encore, mais à part ça, je le recommande vivement.

3
Juha Jurvanen

Bien que ce qui est ci-dessus est un peu compliqué, si vous n'avez aucune entrée trouvée après un ping, vous devez activer le routage et l'accès à distance dans les services, il est probablement désactivé. Puis a goto une invite de commande et émettre un arp -a Pour voir votre cache, utilisez arp -a <IP> Pour cette adresse MAC de la machine.

2
ChrisW

Mac est OSI Layer 2 - Vous ne l'obtiendrez pas directement lorsqu'il y a une couche 3 houblon entre - et pour des raisons de sécurité, tous les protocoles d'interrogation de ces données ne doivent pas être autorisés dans rien au-delà de son réseau local ...

2
Truebsalgeblaese

Je sais que la question était pour aucun système de domaine, cependant, pour ceux qui peuvent trébucher à ce sujet à la recherche d'exemples d'ordinateur de domaine ci-dessous est un moyen rapide et facile de le faire.

sous Windows, vous pouvez simplement faire ce qui suit

    $c = "computername" 
    Invoke-Command -ComputerName $c -ScriptBlock {

    getmac 
    }

exécute simplement une commande d'invite de commande de base sur un système distant et renvoie les données.

1
Knight

Vous pouvez essayer ceci:

nbtstat -A 192.168.2.41

Vous obtiendrez l'adresse MAC distante dans la réponse générée (jolie verbeuse).

1
ADieuNePlaise

"NMAP -V -A [Nom d'hôte/adresse IP]" pourrait être votre meilleur choix; Unix OS pour le client pourrait l'avoir de manière native disponible; Mais NMAP est également disponible pour les clients Windows aussi ...

0
Jaro