Turinys
Python Kaip programavimo kalba ji yra labai galinga, ji leidžia mums pasiekti veiksmų ir pasiekti labai svarbių rezultatų manipuliuojant skirtingomis mūsų įrangos charakteristikomis. IP adresai, prievadai ir lizdai. Kiekvienas iš jų leidžia mums pasiekti skirtingą ir vienodai svarbų tinklo struktūros tašką.Viena iš aplinkų, kur Python įgavo daugiau jėgų kuriant tinklo programas, nes savo klasių dėka lizdo tvarkymas, tinklo struktūrą galime naudoti savo naudai, ši struktūra gali būti vietinė arba per internetas, o tai suteikia mums daug universalumo ir galios programose, kurias galime vykdyti.
Lizdų bibliotekaTai yra pirmoji stotelė, kurią turime padaryti, ši biblioteka suteikia funkcijų, pagrįstų pamokas ir į atvejų, o tai reiškia, kad kai kuriuos dalykus galime naudoti nesukurdami objektų.
Tai mums gali neturėti didelio skirtumo, tačiau galimybė dirbti be egzempliorių atveria tam tikras galimybes, pvz., Sukurti trumpesnius scenarijus ir leisti mums naudoti galingus įrankius, nepridedant papildomo kodo sudėtingumo.
Šis pirmasis pratimas yra labai įdomus, nes iš mūsų sistemos valdymo pulto galėsime gauti informacijos iš savo įrangos naudodami Python ir kelias kodo eilutes.
ReikalavimaiKaip reikalavimą privalome įdiegti vertėją Python mūsų mašinoje, kad galėtume vykdyti pavyzdžius, kuriuos parodysime šioje pamokoje.
Mūsų parašytas kodas veikia 2.7 versija apie Python todėl, jei naudojama kita versija, gali prireikti kai kurių pakeitimų. Įrankis, kuris gali padėti išspręsti versijų suderinamumo problemas, yra „Virtualenv“, leidžiantis paleisti skirtingas versijas Python nepriklausomuose įrenginiuose, nereikalaujant sudėtingų konfigūracijų.
Pirmiausia atidarysime komandų konsolę ir įeisime į Python interaktyvus terminalasNorėdami tai padaryti, jei teisingai įdiegėme kalbą, turime įdėti tik žodį python ir turėsime prieigą prie jo:
Pirmiausia turime importuoti savo biblioteką, tam naudosime šią komandą:
importo lizdas
Tada galime pradėti rinkti norimą informaciją, nes turime tik žinoti, ko ieškome, pavyzdžiui, norėdami sužinoti savo komandos pavadinimą, tiesiog turime parašyti taip:
kompiuterio_pavadinimas = socket.gethostname ()
Tada galime ekrane atspausdinti kintamąjį, kad pamatytume jo turinį, todėl tiesiog vadiname metodą spausdinti:
spausdinti "Kompiuterio pavadinimas:% s"% kompiuterio_pavadinimas
Tai turėtų duoti tokį rezultatą mūsų interaktyviame terminale:
host_address = socket.gethostbyname (pagrindinio kompiuterio pavadinimas)
Padarę tai, atspausdiname ankstesnį kintamąjį:
spausdinti "IP yra:% s"% computer_address
Pažiūrėkime, kaip tai atrodo mūsų terminale:
Tai, kas išdėstyta aukščiau, yra gana praktiška, tačiau ji nėra labai naudinga pristatant, nes mes negalime dažnai prieiti prie jos, tačiau turėtume ją įvesti eilutėmis, kad išvengtume šios problemos, mes sukursime tikrą programą, kuri suteiks mums informacijos, kurią iki šiol žinome, kaip gauti.
Tam mums reikia paprasto teksto redaktoriaus, rekomenduojame „SublimeText 2“ ir vietą, kurioje galime priglobti savo programą ir kuri yra lengvai pasiekiama Python su atitinkamais leidimais.
Siekdami patobulinimo, sukursime funkciją, kuri leis mums nuolat skambinti mūsų nurodymams, kiekvieną kartą nerašant viso kodo, tada naujame faile, kurį mes iškviesime team_information.py įdėsime tokį turinį:
#! / usr / bin / env Python importo lizdas def get computer_info (): computer_name = socket.gethostname () computer_address = socket.gethostbyname (computer_name) print "kompiuterio pavadinimas:% s"% computer_name print "IP yra: % s "% computer_address if __name__ == '__main__': get_team_info ()
Labai svarbu gerbti kodo skirtukus ir įtraukas, nes tai vienintelis būdas Python gali atpažinti blokų pakeitimus, jei naudojame Aukščiausias tekstas Mums nereikės nerimauti, nes tai leidžia mums vizualiai patikrinti kodo įdubas:
Šiuo atveju mes šiek tiek pakeisime savo ankstesnę programą naujame faile, kuris dabar vadinamas remote_information.py išdėstysime šiuos dalykus:
#! / usr / bin / env Python importavimo lizdas def get_remote_computer_info (): remote_computer = 'www.google.com' try: print "Nuotolinis kompiuteris yra:% s"% remote_computer print "IP adresas yra:% s"% socket.gethostbyname (remote_host), išskyrus socket.error, err_msg: print "% s:% s"% (remote_host, err_msg), jei __name__ == '__main__': get_remote_host_info ()
Ką mes padarėme, tiesiog nurodome a nuotolinis kompiuterisKadangi neturime nieko įrodyti, galime naudoti žinomą svetainę, kad gautume iš jos informaciją, šiame pavyzdyje naudosime „Google“, šiuo atveju bus mūsų komandos pavadinimas URL ir naudojant tą patį metodą gethostbyname () mes gausime informaciją.
Taip pat pridėjome klaidų tvarkyklę, jei atmesime mūsų pateiktą adresą ir taip žinome priežastis, pagaliau, kai tai atliksime savo konsolėje, gausime šiuos dalykus:
Populiarūs formataiYra du labai populiarūs IP adresų formatai, pirmasis inet_aton () kuri yra supakuota IP versija, o toliau pateikiama inet_ntoa () priešingai ir yra nesupakuota IP versija.
Kiekvienas iš jų yra naudojamas programose, tačiau tai nėra pagrindinė šios pamokos tema, vienintelis papildomas dalykas, kurį galime nurodyti, yra tai, kad šie formatai ir jų funkcijos taikomos tik IPv4, vietoj to IPv6 kiti kreipiasi.
Mes ketiname sukurti naują programą, leidžiančią atlikti šią konversiją:
#! / usr / bin / env „Python“ importavimo lizdas iš „binascii“ importo į [remote_host_a, remote_host_b]: supakuotas_ip = socket.inet_aton (dir_ip) no_packed_ip = socket.inet_ntoa (supakuotas_ip) spausdinti "IP adresas:% s => supakuotas:% s, nesupakuotas:% s"% (dir_ip, hexlipify (pack_ip) )), išpakuotas_ip) jei __vardas__ == '__main__': format_ip_address ()
Čia mes vėl pradedame savo programą importuodami biblioteką lizdas, tada importuojame biblioteką pavadinimu hexlify leidžia mums konvertuoti šešioliktainius formatus, kad jie būtų įskaitomi, tai panaudosime, kad galėtume iššifruoti IP adresus. Kad tai būtų įdomiau, įdėjome du nuotolinius kompiuterius, iš kurių ketiname gauti IP adresus už kilpą mes kartosime abu, iteracijos metu mes galime atlikti konversijas adresų formatais IPv4 kurį gavome.
Galiausiai mes susidarome įspūdį apie kiekvieną iš jų, todėl rėmėmės metodais inet_aton () ir inet_ntoa () tiek iš lizdo bibliotekos, todėl svarbu atsiminti, kad ji pagrįsta klasėmis, o ne egzemplioriais.
Pažiūrėkime, kaip visa tai atrodo, kai komandų pulte paleidžiame ankstesnį failą:
SvarbuSvarbi rekomendacija yra tai, kad turėtume naudoti dokumentus, kai turime klausimų ir dėkojame didelei bendruomenei Python Internete praktiškai galime rasti bet kokių abejonių ar problemų, su kuriomis susiduriame, sprendimą.
Tuo baigiame šią pamoką, tai tik įrašas į tai, kas programuojama tinklams PythonTačiau labai naudinga žinoti, kad iš savo programų mes galime manipuliuoti informacija tiek iš savo kompiuterių, tiek iš nuotolinių kompiuterių, tam nereikia atlikti papildomų įtraukimų iš bibliotekų ar kelių kodo eilučių, kad ją gautume.Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką