Je sais que vous pouvez le faire ifconfig | grep inet
, mais cela vous montre plusieurs adresses IPv4. Comment puis-je obtenir le spécifique pour SSHing et al?
Je sais que vous pouvez le faire ifconfig | grep inet
, mais cela vous montre plusieurs adresses IPv4. Comment puis-je obtenir le spécifique pour SSHing et al?
Réponses:
Utilisez ipconfig getifaddr en1
pour le sans fil, ou ipconfig getifaddr en0
pour Ethernet.
Mise à jour :
ipconfig getifaddr en0
est la valeur par défaut pour l'interface wifi.
ifconfig
affiche toutes les interfaces et leurs adresses IP
curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
Ce qui suit fonctionne pour moi sur 10.8 et 10.10 Yosemite.
ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'
Si vous trouvez que ce qui précède vous donne plus d'une réponse, enregistrez ce qui suit dans un script et exécutez-le à la place.
#!/usr/bin/env bash
dumpIpForInterface()
{
IT=$(ifconfig "$1")
if [[ "$IT" != *"status: active"* ]]; then
return
fi
if [[ "$IT" != *" broadcast "* ]]; then
return
fi
echo "$IT" | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}'
}
main()
{
# snagged from here: https://superuser.com/a/627581/38941
DEFAULT_ROUTE=$(route -n get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}')
if [ -n "$DEFAULT_ROUTE" ]; then
dumpIpForInterface "$DEFAULT_ROUTE"
else
for i in $(ifconfig -s | awk '{print $1}' | awk '{if(NR>1)print}')
do
if [[ $i != *"vboxnet"* ]]; then
dumpIpForInterface "$i"
fi
done
fi
}
main
Il suffit de taper curl ifconfig.me
dans le terminal.
ipconfig getifaddr en0
est pour IP locale.
Vous pouvez faire ce qui suit:
Tapez ifconfig
ou ifconfig -a
. Cette commande vous montre la liste des interfaces avec leurs adresses IP et MAC (la dernière uniquement si applicable). Vous pouvez également taper ifconfig en0
ou ifconfig en1
pour la configuration d'une interface particulière uniquement (comme quelqu'un l'a dit dans ses réponses, en0 est généralement Ethernet câblé tandis que en1 est l'interface WiFi).
Comme alternative, netstat -i
listera toutes les interfaces et vous montrera les adresses IP que vous avez attribuées à chacun d'eux.
Généralement, lorsque le démon SSH s'exécute sur une boîte, il écoute toutes les interfaces disponibles, c.-à-d. vous pouvez utiliser n'importe quelle adresse IP configurée sur votre ordinateur pour vous connecter à cet ordinateur via SSH (ceci, évidemment, sous réserve des règles du pare-feu). Si vous êtes après ce que le système d'exploitation appelle une interface principale et une adresse IP principale, vous pouvez utiliser la scutil
commande comme ceci:
MacBook:~ scutil
> show State:/Network/Global/IPv4
<dictionary> {
PrimaryInterface : en0
PrimaryService : C0550F84-5C07-484F-8D62-C8B90DC977D8
Router : 10.103.4.1
}
> show State:/Network/Interface/en0/IPv4
<dictionary> {
Addresses : <array> {
0 : 10.103.4.234
}
BroadcastAddresses : <array> {
0 : 10.103.4.255
}
SubnetMasks : <array> {
0 : 255.255.255.0
}
}
Notez que ce qui précède, même s’il s’agit d’une commande de ligne de commande, est également interactif (vous devez donc exécuter scutil
puis entrer ses propres commandes). La première show
commande vous indique le nom de l’interface principale du système d’exploitation (c’est-à-dire celui qui se trouve en haut de la liste dans la fenêtre Préférences Système / Réseau), ainsi que l’adresse IP de votre routeur par défaut. La deuxième show
commande prend en State:/Network/Interface/<ifname>/IPv4
argument (dans ce cas, en0
) et vous donne les adresses IP qui lui sont attribuées. Vous recherchez l'adresse dans le tableau Adresses, les deux autres entrées sont des adresses de diffusion et les masques de réseau.
J'espère que ça aide, mais si quelque chose n'est pas clair, faites le moi savoir.
echo "show State:/Network/Interface/$(echo 'show State:/Network/Global/IPv4' | scutil | grep 'PrimaryInterface ' | sed 's/ PrimaryInterface : //')/IPv4" | scutil | pcregrep -Mo1 " Addresses : <array> {\n 0 : ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})"
Pour obtenir l'adresse IP de votre ordinateur face à Internet, voici un reçu qui fonctionne:
if=`netstat -nr | awk '{ if ($1 ~/default/) { print $6} }'`
ifconfig ${if} | awk '{ if ($1 ~/inet/) { print $2} }'
Cela devrait fonctionner même lorsque plusieurs interfaces sont actives, même si vous avez des interfaces dont vous ne savez pas quelle est la passerelle par défaut.
192.168.0.*)
netstat -nr | grep default
?
Juste pour information, vous pouvez créer un script bash avec le contenu suivant, qui vous donne votre adresse IP externe.
#!/bin/bash
wget -qO - http://ipecho.net/plain; echo
wget
ne fait pas partie de macOS et doit être installé à partir d'une source autre que Apple.
curl -s http://ipecho.net/plain; echo