So che puoi farlo ifconfig | grep inet
, ma questo ti mostra diversi indirizzi IPv4. Come posso ottenere quello specifico per SSHing et al?
So che puoi farlo ifconfig | grep inet
, ma questo ti mostra diversi indirizzi IPv4. Come posso ottenere quello specifico per SSHing et al?
Risposte:
Utilizzare ipconfig getifaddr en1
per wireless o ipconfig getifaddr en0
Ethernet.
Aggiornamento :
ipconfig getifaddr en0
è predefinito per l'interfaccia wifi.
ifconfig
mostra tutte le interfacce e i loro IP
curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
Quanto segue funziona per me il 10.8 e il 10.10 Yosemite.
ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'
Se trovi quanto sopra ti dà più di una risposta, salva quanto segue in uno script ed eseguilo invece
#!/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
Digita semplicemente curl ifconfig.me
il terminale.
ipconfig getifaddr en0
è per IP locale.
Puoi fare quanto segue:
Digitare ifconfig
o ifconfig -a
. Questo comando mostra l'elenco delle interfacce insieme ai loro indirizzi IP e MAC (quest'ultimo solo se applicabile). Puoi anche digitare ifconfig en0
o solo ifconfig en1
per la configurazione di una particolare interfaccia (come qualcuno ha detto nelle loro risposte, en0 è in genere la Ethernet cablata mentre en1 è l'interfaccia WiFi).
In alternativa, netstat -i
elencherà tutte le interfacce e ti mostrerà gli indirizzi IP che hai assegnato a ciascuna di esse.
In genere, quando si ha un demone SSH in esecuzione su una scatola, ascolterà tutte le interfacce disponibili, ad es. puoi utilizzare qualsiasi indirizzo IP configurato sulla tua macchina per collegarti a quella macchina tramite SSH (questo, ovviamente, soggetto alle regole del Firewall). Se stai cercando ciò che il sistema operativo chiama un'interfaccia primaria e un indirizzo IP primario, puoi utilizzare il scutil
comando in questo modo:
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
}
}
Si noti che quanto sopra, anche se è un comando da riga di comando, è anche interattivo (quindi si esegue scutil
e quindi si inseriscono i propri comandi in esso). Il primo show
comando ti dice il nome dell'interfaccia principale per il sistema operativo (cioè questo sarà quello in cima all'elenco nella finestra Preferenze di sistema / Preferenze di rete), così come l'indirizzo IP del tuo router predefinito. Il secondo show
comando prende State:/Network/Interface/<ifname>/IPv4
argomento (in questo caso en0
) e ti dà gli indirizzi IP ad esso assegnati. Stai cercando l'indirizzo nell'array Addresses, le altre due voci sono indirizzi broadcast e maschere di rete.
Spero che sia d'aiuto, ma se qualcosa non è chiaro, fammi sapere.
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})"
Per ottenere l'indirizzo IP del tuo computer rivolto verso Internet, ecco una ricevuta funzionante:
if=`netstat -nr | awk '{ if ($1 ~/default/) { print $6} }'`
ifconfig ${if} | awk '{ if ($1 ~/inet/) { print $2} }'
Dovrebbe funzionare anche quando hai più interfacce attive, anche quando hai interfacce che non sai quale sia effettivamente il gateway predefinito.
192.168.0.*)
, Non quello esterno esposto a Internet.
netstat -nr | grep default
?
Solo per la cronaca, puoi creare uno script bash con il seguente contenuto che ti dà il tuo indirizzo IP esterno
#!/bin/bash
wget -qO - http://ipecho.net/plain; echo
wget
non fa parte di macOS e deve essere installato da una fonte non Apple.
curl -s http://ipecho.net/plain; echo