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:
Interfaccia | Comando | Cosa stampa |
---|---|---|
Wi‑Fi | ipconfig getifaddr en0 | 192.168.1.12 (esempio) |
Ethernet | ipconfig getifaddr en1 | 10.0.0.15 |
(per verificare tutti i dispositivi disponibili) | networksetup -listallhardwareports | elenco di en0 , en1 , ecc. |
dati più estesi del wifi | networksetup -getinfo Wi‑Fi | IP, 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
Bashil 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
BashQuindi 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"
BashIl comando non è attivo poiché dobbiamo ricaricare la configurazione di ZSH:
source ~/.zshrc
BashOra 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
BashEscludere 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
BashIl 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'
BashOvviamente 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.
Grande Walter. Spunti geniali per sopperire alle carenze di un sistema operativo bello e basta. Poco efficace per per lavorare tantè che è d’obbligo virtualizzare una vm windows. Questo vale per OS26 iPad iOS ossia tutto l’ecosistema Apple. Tutta forma ma poca sostanza…….