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 en1per wireless o ipconfig getifaddr en0Ethernet.
Aggiornamento :
ipconfig getifaddr en0 è predefinito per l'interfaccia wifi.
ifconfigmostra 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.meil terminale.
ipconfig getifaddr en0è per IP locale.
Puoi fare quanto segue:
Digitare ifconfigo 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 en0o solo ifconfig en1per 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 -ielencherà 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 scutilcomando 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 scutile quindi si inseriscono i propri comandi in esso). Il primo showcomando 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 showcomando prende State:/Network/Interface/<ifname>/IPv4argomento (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
wgetnon fa parte di macOS e deve essere installato da una fonte non Apple.
curl -s http://ipecho.net/plain; echo