Poche risposte sembrano essere utilizzando il più recente ip
di comando (sostituzione ifconfig
): ecco uno che usi ip addr
, grep
e awk
per stampare semplicemente l'indirizzo IPv4 associato con l' wlan0
interfaccia di:
ip addr show wlan0|grep inet|grep -v inet6|awk '{print $2}'|awk '{split($0,a,"/"); print a[1]}'
Sebbene non sia la soluzione più compatta o stravagante, è (probabilmente) facile da capire (vedere la spiegazione di seguito) e da modificare per altri scopi, come ottenere gli ultimi 3 ottetti dell'indirizzo MAC in questo modo:
ip addr show wlan0|grep link/ether|awk '{print $2}'|awk '{split($0,mac,":"); print mac[4] mac[5] mac[6]}'
Spiegazione: ip addr show wlan0
restituisce le informazioni associate all'interfaccia di rete denominata wlan0
, che dovrebbe essere simile a questa:
4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether dc:a6:32:04:06:ab brd ff:ff:ff:ff:ff:ff
inet 172.18.18.1/24 brd 172.18.18.255 scope global noprefixroute wlan0
valid_lft forever preferred_lft forever
inet6 fe80::d340:5e4b:78e0:90f/64 scope link
valid_lft forever preferred_lft forever
Prossimi grep inet
filtra le linee che non contengono "inet" (IPv4 e IPv6 configurazione) e grep -v inet6
filtra le linee rimanenti che fanno contenere "inet6", che dovrebbe tradursi in una singola linea come questa:
inet 172.18.18.1/24 brd 172.18.18.255 scope global noprefixroute wlan0
Infine, il primo awk
estrae il campo "172.18.18.1/24" e il secondo rimuove l'abbreviazione della maschera di rete, lasciando solo l'indirizzo IPv4.
Inoltre, penso valga la pena ricordare che se stai creando script, spesso ci sono molti strumenti più ricchi e / o più robusti per ottenere queste informazioni, che potresti invece voler usare. Ad esempio, se si usa Node.js c'è ipaddr-linux
, se si usa Ruby c'è linux-ip-parser
, ecc.
Vedi anche /unix/119269/how-to-get-ip-address-using-shell-script