Potrebbero esserci diversi modi per realizzare ciò che stai chiedendo, tuttavia, lo butto qui.
Ho un MacBook Pro che non ha una porta Ethernet integrata, quindi nei miei esempi userò Porta hardware: Wi-Fi poiché ho provato questo in entrambi gli esempi di seguito ha funzionato, tuttavia è possibile cambiarlo in Porta hardware: Ethernet se questo è ciò che l'output di
networksetup -listallhardwareports
mostra per te.
Se vuoi solo inviare l'indirizzo IP del dispositivo di destinazione a stdout
, usa il seguente esempio:
$ ipconfig getifaddr $(networksetup -listallhardwareports | awk '/Hardware Port: Wi-Fi/{getline; print $2}')
$ 192.168.1.100
Se vuoi assegnarlo a una variabile in uno script , usa il seguente esempio:
ipAddress="$(ipconfig getifaddr $(networksetup -listallhardwareports | awk '/Hardware Port: Wi-Fi/{getline; print $2}'))"
Spiegazione:
L'output pertinente di networksetup -listallhardwareports
per il mio sistema è:
Hardware Port: Wi-Fi
Device: en0
Ethernet Address: 28:cf:e3:10:a4:cd
(Nota: questo non è il mio vero indirizzo MAC)
Uso della sostituzione del comando $(...)
per avere qualcosa da passare a ipconfig getifaddr <args>
Determina il nome dispositivo della porta hardware con l'output di networksetup -listallhardwareports
e pipe |
attraverso awk
che sta cercando Hardware Port: Wi-Fi
e utilizza la funzione get line
, che legge la riga successiva dopo la corrispondenza e viene passata a print $2
, che in sostanza stampa la seconda parte della riga seguendo la corrispondenza , che nel caso è en0
e che viene passato a ipconfig getifaddr
come argomento nel primo esempio, ad esempio ipconfig getifaddr en0
. L'output di cui è l'indirizzo IP.
Nel secondo esempio viene utilizzata una seconda sostituzione di comando $(...)
attorno alla complessa riga di comando utilizzata per l'esempio stdout
per assegnarla alla variabile ipAddress
variabile quando usata in un lo script .
Nota: Questo è davvero pensato per essere un esempio in quanto non l'ho codificato per tenere conto che il dispositivo è inattivo. In altre parole se il dispositivo non ha e indirizzo IP non ci sarà alcun output in stdout
e nulla assegnato alla ipAddress
variabile nello script . Anche se nello script può essere codificato per verificare se la variabile ipAddress
variabile è vuota e agire di conseguenza.