Dobijte informacije o IP adresi s Pythonom

Sadržaj
Piton Kao programski jezik vrlo je moćan, omogućuje nam postizanje radnji i postizanje vrlo važnih rezultata pri manipuliranju različitim karakteristikama naše opreme, što možemo postići kroz IP adrese, portovi i utičnice. Svaki nam omogućuje da dođemo do različite i jednako važne točke unutar strukture mreže.
Jedno od okruženja gdje Piton je stekao veću snagu u razvoju programa za mrežu, budući da zahvaljujući svojim klasama rukovanje utičnicama, možemo koristiti mrežnu strukturu u svoju korist, ta struktura može biti lokalna ili posredna Internet, što nam daje veliku svestranost i moć u programima koje možemo provoditi.
Knjižnica utičnicaOvo je prva stanica koju moramo napraviti, ova knjižnica donosi funkcionalnosti temeljene na lekcije i u instance, što znači da neke stvari možemo koristiti bez stvaranja objekata.
To za nas možda neće biti velika razlika, međutim mogućnost rada bez instanci otvara neke mogućnosti, poput izrade kraćih skripti i omogućujući nam korištenje moćnih alata bez dodavanja dodatne složenosti kodu.
Ova prva vježba je vrlo zanimljiva, jer ćemo sa naredbene konzole našeg sustava moći dobiti informacije iz vlastite opreme pomoću Piton i nekoliko redaka koda.
ZahtjeviKao zahtjev moramo imati instaliran tumač Piton u našem stroju kako bismo mogli izvesti primjere koje ćemo prikazati u ovom vodiču.
Kod koji smo napisali radi na verzija 2.7 od Piton pa će možda biti potrebna neka izmjena ako se koristi druga verzija. Alat koji nam može pomoći s problemima kompatibilnosti verzija je Virtualenv koji nam omogućuje pokretanje različitih verzija Piton u neovisnim instalacijama bez potrebe za složenim konfiguracijama.
Prije svega, otvorit ćemo našu komandnu konzolu i ući ćemo u Python interaktivni terminalDa bismo to učinili, ako smo pravilno instalirali jezik, moramo postaviti samo riječ python i imat ćemo pristup:

Ova je konzola vrlo korisna za upute za testiranje, što ćemo vidjeti u donjem primjeru, međutim za namjene u kojima moramo zadržati napravljeni kôd možda nije najbolja alternativa, kao što ćemo vidjeti kasnije u vodiču.
Prvo moramo uvesti svoju biblioteku, za to ćemo koristiti sljedeću naredbu:
utičnica za uvoz

Tada možemo početi prikupljati željene podatke, za to moramo samo znati što tražimo, na primjer da bismo dobili naziv našeg tima, jednostavno moramo napisati sljedeće:
naziv_računala = socket.gethostname ()

Zatim možemo ispisati varijablu na ekranu kako bismo vidjeli njezin sadržaj, za to jednostavno zovemo metodu ispisati:
print "Naziv računala je:% s"% naziv_računara

To bi nam trebalo dati rezultat poput ovog u našem interaktivnom terminalu:

Kao što smo mogli vidjeti, knjižnicom je vrlo lako upravljati utičnica i operacije s konzole Piton, sada možemo prijeći na sljedeću točku, a to je da odmah dobijemo IP adresu, jer samo moramo učiniti nešto slično, samo što ćemo koristiti varijablu s imenom računala koje smo u početku snimili i učinit ćemo sljedeće:
host_address = socket.gethostbyname (host_name)

Nakon toga ispisujemo prethodnu varijablu:
print "IP je:% s"% računarska_adresa

Pogledajmo kako ovo izgleda na našem terminalu:

Kao što vidimo, bez mnogo truda došli smo do izuzetno korisnih informacija, ali to nije ništa u usporedbi s onim što možemo učiniti.
Gore navedeno je prilično praktično, ali nije previše korisno u svom izlaganju, budući da mu ne možemo često pristupiti, ali bismo ga morali unijeti redak po redak, kako bismo izbjegli ovaj problem, stvorit ćemo pravi program koji će nam omogućiti informacije do sada znamo kako doći.
Za to će nam trebati običan uređivač teksta, preporučujemo SublimeText 2 i mjesto na kojem možemo ugostiti naš program, a to je nadohvat našoj instalaciji Piton s odgovarajućim dopuštenjima.
Kako bismo postigli poboljšanje, stvorit ćemo funkciju koja nam omogućuje da pozivamo naše upute redovito bez potrebe da svaki put upisujemo sav kôd, a zatim u našu novu datoteku koju ćemo pozvati tim_information.py postavit ćemo sljedeći sadržaj:
 #! / usr / bin / env Python import socket def get computer_info (): computer_name = socket.gethostname () computer_address = socket.gethostbyname (computer_name) print "naziv računala je:% s"% computer_name print "IP je: % s "% adresa_računala ako je __name__ == '__main__': get_team_info () 

Vrlo je važno da poštujemo kartice i uvlačenja koda jer je to jedini način na koji Piton može prepoznati izmjene blokova, ako ih koristimo Uzvišen tekst Nećemo se morati brinuti jer nam omogućuje vizualnu provjeru udubljenja našeg koda:

Sada u našoj sistemskoj komandnoj konzoli i bez ulaska u de Piton Možemo pozvati našu datoteku i vidjet ćemo rezultat, za to izvršavamo python ime datoteke.py kao što možemo vidjeti na sljedećoj slici:

Budući da smo vidjeli neke osnove rada knjižnice utičnicaPodignimo ovo na novu razinu. Bez potrebe za korištenjem novih uputa, sada ćemo dobiti adresu udaljenog računala, što može biti vrlo važno za prikupljanje podataka za svaku provjeru valjanosti koju želimo napraviti.
U ovom slučaju ćemo malo izmijeniti naš prethodni program, u novoj datoteci koja se sada zove remote_information.py postavit ćemo sljedeće:
 #! / usr / bin / env Python utičnica za uvoz def get_remote_computer_info (): remote_computer = 'www.google.com' try: print "Udaljeno računalo je:% s"% remote_computer print "IP adresa je:% s"% socket.gethostbyname (remote_host) osim socket.error, err_msg: ispišite "% s:% s"% (remote_host, err_msg) if __name__ == '__main__': get_remote_host_info () 

Ono što smo učinili je jednostavno naznačiti ime a udaljeni domaćinKako nemamo što dokazati, možemo upotrijebiti poznatu web stranicu za dobivanje informacija, u ovom primjeru koristit ćemo adresu Google, u ovom slučaju ime našeg tima će biti URL i koristeći istu metodu gethostbyname () dobit ćemo informacije.
Dodali smo i rukovatelj pogreškama u slučaju da odbijemo adresu koju smo postavili i tako znamo uzroke, konačno kad ovo izvedemo u našoj konzoli dobit ćemo sljedeće:

Ako želimo napraviti programe koji rade pod mrežnim protokolima, vrlo je vjerojatno da ćemo morati koristiti različite formate u kojima se može izraziti IP adresa, sve to naravno prema pogodnostima koje vidimo.
Popularni formatiPostoje dva vrlo popularna formata za IP adrese, prvi je inet_aton () koja je upakirana verzija IP -a, a sljedeće je inet_ntoa () što je suprotno i neupakirana je verzija IP-a.
Svaki od njih ima svoju primjenu u programima, međutim to nije glavna tema ovog vodiča, jedino što možemo naznačiti je da se ti formati i njihove funkcije primjenjuju samo na IPv4, umjesto za IPv6 primjenjuju se drugi.
Izgradit ćemo novi program koji nam omogućuje ovu pretvorbu:
 #! / usr / bin / env Python import socket iz binascii import hexlify def format_ip_address (): remote_host_a = socket.gethostbyname ('www.twitter.com') remote_host_b = socket.gethostbyname ('www.facebook.com') za dir_ip u [remote_host_a, remote_host_b]: packed_ip = socket.inet_aton (dir_ip) no_packed_ip = socket.inet_ntoa (packed_ip) print "IP adresa:% s => Pakirano:% s, Nije pakirano:% s"% (dir_ip, hexlipify (packed_ip )), unpacked_ip) if __name__ == '__main__': format_ip_address () 

Ovdje ponovno započinjemo naš program uvozom knjižnice utičnica, zatim uvozimo knjižnicu tzv hexlify što nam omogućuje uspostavu pretvorbe heksadecimalnih formata, tako da mogu biti čitljivi, upotrijebit ćemo ovo da bismo mogli dešifrirati IP adrese. Kako bi ovo bilo zanimljivije, postavili smo dva udaljena računala s kojih ćemo dobiti IP adrese i s za petlju ponovit ćemo oboje, unutar iteracije je kada tada možemo izvršiti konverzije s formatima adresa IPv4 koje smo dobili.
Na kraju ostavljamo dojam o svakom od njih, zato smo se oslanjali na metode inet_aton () i inet_ntoa () oboje iz knjižnice utičnica, što je važno zapamtiti da se temelji na klasi, a ne na instanci.
Pogledajmo kako sve ovo izgleda kada pokrenemo prethodnu datoteku na našoj naredbenoj konzoli:

Ovim smo primjerom pomiješali sve trikove koje smo ranije vidjeli, od dobivanja informacija s udaljenog računala, do izgradnje funkcije koja nam omogućuje da dobijemo informacije bez potrebe za pisanjem svega u interaktivnu konzolu Piton.
VažnoVažna preporuka je da bismo trebali koristiti dokumentaciju ako imamo pitanja i zahvaljujući velikoj zajednici Piton Na internetu možemo praktički pronaći rješenje za svaku sumnju ili problem s kojim se suočavamo.
Ovim završavamo ovaj vodič, to je samo uvod u ono s čime se programira za mreže PitonMeđutim, vrlo je korisno znati da iz naših programa možemo manipulirati informacijama i s naših računala i s udaljenih računala, bez potrebe za dodatnim uključivanjem iz knjižnica ili više redaka koda da bismo ih dobili.Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave