Site icon Tosolini.info

macOS: Estrarre IP Address

In realtà come vedremo, arrivando da Linux Server il comando che voglio “mimare” a terminale è “IP A” che fornisce direttamente i vari indirizzamenti per la, o più se ce ne sono altre, schede di rete.

Nel caso di macOS, sebbene derivato da Unix, il comando via terminale è un po’ difficile da ricordare se non viene usato spesso. Come citato sopra, tendo ad usare spesso il comando su derivate Debian anche perché ricordarselo è semplice, due parole, tre lettere.

Andiamo con ordine. In un macOS si presenta una ulteriore complicazione, il più delle volte la scheda di rete fisica è affiancata al Wi-Fi. Le metodologie che rappresento in questa tabella sono:

InterfacciaComandoCosa stampa
Wi‑Fiipconfig getifaddr en0192.168.1.12 (esempio)
Ethernetipconfig getifaddr en110.0.0.15
(per verificare tutti i dispositivi disponibili)networksetup -listallhardwareportselenco di en0en1, ecc.
dati più estesi del wifinetworksetup -getinfo Wi‑FiIP, subnet mask, router, MAC. [12]

Come si può intuire, oltre al doversi ricordare il comando ci si mette anche il nome virtuale dell’interfaccia, “en1, en2” eccetera. La cosa non è banale come potrebbe sembrare, perché inserendo il dongle USB- Ethernet su una porta o su un altra, il risultato può cambiare.

Quindi quello che voglio ottenere io, è il medesimo risultato di una distibuzione Ubuntu server, “ip a” e basta, senza dare altro.

In questo caso ci viene in aiuto il comando:

ifconfig -a | grep inet
Bash

il parametro “-a” infatti estende l’elenco a tutte le interfacce presenti sul sistema, indipendentemente dallo stato. Su questo andiamo ad applicare il filtro (grep) “inet” che è presente in ognuna dei risultati possibili.

A questo punto non ci resta che comporre un Alias nei comandi. macOS utilizza da qualche anno ZSH per default, per cui andiamo a vedere come fare. Per prima cosa andiamo a modificare il file (nascosto) zshrc:

nano ~/.zshrc
Bash

Quindi all’interno del file, ad un certo punto viene indicata la sezione alias (#example alias). Sotto andiamo ad aggiungere “ipa” come alias e non “ip a” poiché sarebbero due comandi distinti, ovvero IP e il parametro A. siccome IP non esiste in macos, andiamo a “zippare” il comando originale in “ipa”.

alias ipa="ifconfig -a | grep inet"
Bash

Il comando non è attivo poiché dobbiamo ricaricare la configurazione di ZSH:

source ~/.zshrc
Bash

Ora se nel terminale scriviamo “ipa” andremo ad ottenere tutti gli indirizzamenti.

	inet 127.0.0.1 netmask 0xff000000
	inet6 ::1 prefixlen 128 
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
	inet6 fe80::xxxx:xxxx:xxxx:4d30%en0 prefixlen 64 secured scopeid 0xe 
	inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255
	inet6 fe80::xxxx:xxxx:xxxx:5656%awdl0 prefixlen 64 scopeid 0x10 
	inet6 fe80::xxxx:xxxx:xxxx:5656%llw0 prefixlen 64 scopeid 0x11 
	inet6 fe80::xxxx:xxxx:xxxx:b2eb%utun0 prefixlen 64 scopeid 0x12 
	inet6 fe80::xxxx:xxxx:xxxx:d14c%utun1 prefixlen 64 scopeid 0x13 
	inet6 fe80::xxxx:xxxx:xxxx:a7f1%utun2 prefixlen 64 scopeid 0x14 
	inet6 fe80::xxxx:xxxx:xxxx:69e%utun3 prefixlen 64 scopeid 0x15 
	inet6 fe80::xxxx:xxxx:xxxx:a031%utun4 prefixlen 64 scopeid 0x16 
	inet6 fe80::xxxx:xxxx:xxxx:b67f%utun5 prefixlen 64 scopeid 0x17 
	inet6 fe80::xxxx:xxxx:xxxx:8701%utun6 prefixlen 64 scopeid 0x19 
	inet6 fe80::xxxx:xxxx:xxxx:198f%utun7 prefixlen 64 scopeid 0x1a 
Bash

Escludere IPV6

Quanto sopra per quello che mi riguarda sarebbe sufficiente, tuttavia mi rendo conto che il risultato è un po’ confusionario poiché nella lista compare anche “inet6”, che sarebbero gli indirizzamenti IPv6. Quindi è possibile escluderli, ci sono vari metodi, ad esempio con le espressioni regolari. Nel nostro caso la casistica è molto semplice. Esistono solo due tipi di risultati: inet o inet6.

Modificheremo il comando come segue:

ifconfig -a | grep inet | grep -v inet6 
Bash

Il parametro “-v” infatti esclude questi ultimi dal risultato. Una doppia concatenazione grep non è proprio bella da vedere, ma siamo su un MacBook e di certo la potenza non manca mai, per cui il problema non si pone neanche nei casi più drammatici.

Elencare anche i macaddress.

Se poi desideriamo fare quanto sopra, ma includendo nei risultati anche il macaddress della scheda, allora il comando va modificato in questo modo:

ifconfig | grep -B3 'inet' | grep -v 'inet6'
Bash

Ovviamente questi non sono gli unici parametri, “man ifconfig” vi mostra nel dettaglio una pletora di altre cose non meno interessanti. Qui per brevità ho elencato solo quelle di maggior interesse.

Exit mobile version