Shell: Recuperare il suo indirizzo IP pubblico

Dicembre 2016


Scopo

Per ragioni diverse uno può aver bisogno di ricuperare il proprio indirizzo IP pubblico in un script.
Il problema che si pone allora quando si è su una rete LAN, è di ritrovare questo indirizzo pubblico senza intervento umano.

Metodo

Il metodo più semplice che ho trovato finora è un semplice comando che ricerca un indirizzo IP in una pagina web scelta :
GET www.monip.org | sed -nre 's/^.* (([0-9]{1,3}\.){3}[0-9]{1,3}).*$/\1/p'
o
lynx --source www.monip.org | sed -nre 's/^.* (([0-9]{1,3}\.){3}[0-9]{1,3}).*$/\1/p'

Spiegazioni

GET

Il comando GET (lwp-request) si trova nella libwww di Perl (package perl-libwww-perl-version).
Come lo suggerisce il nome esso fa un GET su una pagina, ciò che rimanda il codice sorgente della pagina.

Lynx

Lynx è un browser in modalità testo presente nelle maggior parte delle distribuzioni Linux, più semplice ad installare di lwp-request (Perl).

Sed

Il comandosed:
  • I parametri
    • -n: limita la visualizzazione alle linee invocate (legato al parametro "p")
    • -r: supporto delle espressioni regolare estese
    • -e: espressione
    • s///: indica una sostituzione
    • p: Il risultato è visualizzato (legato al parametro "n")
    • il motivo
    • ^.*(motif_ip).*$ : ricerca una linea che contiene un indirizzo IP
    • \1 : ciò che è tra parentesi può essere indirizzato nel seguito dell'espressione da \1.


La linea che contiene l'indirizzo IP è quindi sostituita dall'indirizzo IP stesso ;)

Potrebbe anche interessarti :
Il documento intitolato « Shell: Recuperare il suo indirizzo IP pubblico » da CCM (it.ccm.net) è reso disponibile sotto i termini della licenza Creative Commons. È possibile copiare, modificare delle copie di questa pagina, nelle condizioni previste dalla licenza, finché questa nota appaia chiaramente.