Come trovo il mio indirizzo IP dalla riga di comando?

129

So che puoi fare ifconfig | grep inet , ma questo ti mostra diversi indirizzi IPv4. Come ottengo quello specifico per SSHing et al?

    
posta JShoe 07.08.2011 - 00:32
fonte

7 risposte

130

Utilizza ipconfig getifaddr en1 per wireless o ipconfig getifaddr en0 per ethernet.

    
risposta data 07.08.2011 - 01:01
fonte
83

I seguenti lavori per me sono il 10.8 e il 10.10 Yosemite.

ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}' 

Se ritieni che quanto sopra ti dà più di una risposta, salva quanto segue in uno script ed eseguilo invece

ip_address.sh

#!/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
    
risposta data 30.09.2014 - 19:16
fonte
29

Digita curl ifconfig.me nel terminale.

    
risposta data 02.09.2014 - 03:46
fonte
16

Puoi fare quanto segue:

Digita ifconfig o ifconfig -a . Questo comando mostra l'elenco delle interfacce con i relativi indirizzi IP e MAC (quest'ultimo solo se applicabile). Puoi anche digitare ifconfig en0 o ifconfig en1 solo per la configurazione di una particolare interfaccia (come qualcuno ha detto nelle loro risposte, en0 è tipicamente l'Ethernet cablato mentre en1 è l'interfaccia WiFi).

In alternativa, netstat -i elencherà tutte le interfacce e ti mostrerà gli indirizzi IP che hai assegnato a ciascuno di essi.

In genere, quando il daemon SSH è in esecuzione su una scatola, ascolterà su 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 cerchi cosa il sistema operativo chiama un'interfaccia principale e l'indirizzo IP primario, puoi utilizzare il comando scutil 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 immettono i propri comandi in esso). Il primo comando show indica il nome dell'interfaccia principale per il sistema operativo (vale a dire questo sarà quello in cima all'elenco nella finestra Preferenze di sistema / Preferenze di rete), nonché l'indirizzo IP del router predefinito. Il secondo comando show accetta l'argomento State:/Network/Interface/<ifname>/IPv4 (in questo caso en0 ) e ti assegna gli indirizzi IP assegnati. Stai cercando l'indirizzo nella matrice Indirizzi, le altre due voci sono gli indirizzi di trasmissione e le maschere di rete.

Spero che questo aiuti, ma se qualcosa non è chiaro, fammi sapere.

    
risposta data 09.06.2014 - 12:18
fonte
15

Ho questo set up in un file .aliases dotfile per la ricerca ip frequente:

alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
alias localip="ipconfig getifaddr en0"
    
risposta data 30.09.2014 - 20:06
fonte
3

Per ottenere l'indirizzo IP del computer di fronte a Internet, ecco a ricetta funzionante:

if='netstat -nr | awk '{ if ($1 ~/default/) { print $6} }''
ifconfig ${if} | awk '{ if ($1 ~/inet/) { print $2} }'

Dovrebbe funzionare anche quando sono attive più interfacce, anche quando hai interfacce non sai quale sia in realtà la gateway predefinito.

    
risposta data 02.09.2014 - 14:45
fonte
0

Solo per il record, 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
    
risposta data 07.01.2019 - 10:14
fonte

Leggi altre domande sui tag