3.14. Come faccio a sapere il mio indirizzo IP?

Le informazioni riguardanti le interfaccie di rete vengono fornite dal comando ifconfig(8):

# ifconfig
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet6 fe80::203:47ff:fee1:ccd4%fxp0 prefixlen 64 scopeid 0x1 
        inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
        ether 00:03:47:e1:cc:d4
        media: Ethernet autoselect (10baseT/UTP)
        status: active
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet6 ::1 prefixlen 128 
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4 
        inet 127.0.0.1 netmask 0xff000000
ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 552
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
        inet 123.45.67.89 --> 192.168.100.1 netmask 0xffffffff 
        Opened by PID 71
     
Senza spiegare il significato di ogni riga e ogni elemento in quanto sarebbe troppo lungo, notiamo subito che l'indirizzo IP di ogni interfaccia che ne ha uno, è specificato nella riga che comincia con inet, quindi nel caso dell'intefaccia tun0, tipicamente utilizzata per la connessione a Internet, l'indirizzo IP si trova alla linea:
inet 123.45.67.89 --> 192.168.100.1 netmask 0xffffffff
     
ed è 123.45.67.89. Se vogliamo avere solo l'indirizzo IP, dobbiamo concatenare una serie di comandi con i pipe:
ifconfig tun0 |awk '{if ($1 == "inet") print$2;}'
     
L'output di questo comando può essere passato come argomento per uno script.come ipcheck.py (net/ipcheck) o qualsiasi altro.