Zjisteni aktualni verejne IP z terminalu a skriptu

Casto je potreba znat verejnou IP adresu, za kterou se PC schovava. Hodne znamy je web http://www.mojeip.cz/ ktery vsak jde pouzit jenom pres webovy prohlizec. Pokud potrebujeme zjistit IP v terminalu, nebo ve skriptu, museli bychom si napsat parser webove stranky. Z lenosti jsem si napsal vlastni skript na zjistovani adresy. Zde je jednoduchy skript na zjistovani IP v Pythonu:

Ktery nasledne muzeme zkompilovat pomoci cythonu a spustit:

Automaticke spusteni

Na automaticke spusteni po startu systemu pouzivam /usr/local/bin/getip_start

a ten se spousti z /etc/rc.local :

Pouziti je nasledujici

nc (netcat)

Busybox telnet client (OpenWrt, Ubiquity)

wget

Ubuntu telnet client

Jak je videt, klasicky telnet klient je nepouzitelne ukecany. Wget funguje dobre, ale kdo si ma pamatovat vsechny jeho parametry? Idealni je netcat (nc), ten vsak zvlast v embedded systemech neni.

Jak to funguje

Po spusteni zacne skript poslouchat na TCP 0.0.0.0:1234. Kdyz se nekdo pripoji, vrati mu IP a ukonci spojeni. U telnetu to tak funguje, webove prohlizece Firefox/Chrome take nemaji problem.

Pokud se vsak zkusime pripojit wgetem, wget vypise hromadu chybovych hlasek o chybejicih HTTP hlavickach. Proto jsem udelal maly hack. Skript po navazani spojeni ceka 2s. Pokud behem teto doby prijme nejake HTTP hlavicky, posle odpoved jako validni HTTP odpoved. Kdyz hlavicky neprijdou, posle jenom plain text adresu a zalomeni radku.

Odkaz na Gist, kde bude vzdy aktualni verze.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *