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:
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:
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:
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:
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:
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:
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