Satura rādītājs
Python Tā kā programmēšanas valoda ir ļoti spēcīga, tā ļauj mums veikt darbības un iegūt ļoti svarīgus rezultātus, manipulējot ar dažādām mūsu aprīkojuma īpašībām, ko mēs varam sasniegt, izmantojot IP adreses, porti un ligzdas. Katrs no tiem ļauj mums sasniegt citu un vienlīdz svarīgu punktu tīkla struktūrā.Viena no vidēm, kur Python ir ieguvis lielāku spēku, izstrādājot programmas tīklam, jo, pateicoties tā klasēm rokturu apstrāde, mēs varam izmantot tīkla struktūru savā labā, šī struktūra var būt lokāla vai caur Internets, kas dod mums lielisku daudzpusību un spēku programmās, kuras mēs varam īstenot.
Ligzdas bibliotēkaŠī ir pirmā pietura, kas mums jāizdara, šī bibliotēka nodrošina funkcionalitāti, kuras pamatā ir nodarbības un iekšā gadījumos, kas nozīmē, ka mēs varam izmantot dažas lietas, neradot objektus.
Tas mums var būtiski neatšķirties, tomēr iespēja strādāt bez instancēm paver dažas iespējas, piemēram, izveidot īsākus skriptus un ļaut mums izmantot jaudīgus rīkus, nepievienojot mūsu kodam papildu sarežģītību.
Šis pirmais vingrinājums ir ļoti interesants, jo no mūsu sistēmas vadības konsoles mēs varēsim iegūt informāciju no sava aprīkojuma, izmantojot Python un dažas koda rindas.
PrasībasKā prasība mums ir jāinstalē tulks Python mūsu mašīnā, lai varētu izpildīt piemērus, kas tiks parādīti šajā apmācībā.
Kods, ko esam uzrakstījuši, darbojas uz versija 2.7 no Python tāpēc, ja tiek izmantota cita versija, var būt nepieciešamas dažas izmaiņas. Rīks, kas mums var palīdzēt ar versiju saderības problēmām, ir Virtualenv, kas ļauj mums palaist dažādas versijas Python neatkarīgās instalācijās bez sarežģītas konfigurācijas.
Pirmkārt, mēs atvērsim savu komandu konsoli un ieiesim Python interaktīvais terminālisLai to izdarītu, ja esam pareizi instalējuši valodu, mums ir jāievieto tikai vārds python, un mums būs tam piekļuve:
Šī konsole ir ļoti noderīga, lai pārbaudītu norādījumus, kā mēs redzēsim zemāk redzamajā piemērā, taču lietojumiem, kur mums jāsaglabā mūsu izveidotais kods, iespējams, nav labākā alternatīva, kā mēs redzēsim vēlāk apmācībā.
Vispirms mums ir jāimportē mūsu bibliotēka, šim nolūkam mēs izmantosim šādu komandu:
importa ligzda
Tad mēs varam sākt vākt vēlamo informāciju, jo mums ir tikai jāzina, ko meklējam, piemēram, lai iegūtu mūsu komandas nosaukumu, mums vienkārši jāraksta:
datora_nosaukums = socket.gethostname ()
Tad mēs varam izdrukāt mainīgo uz ekrāna, lai redzētu tā saturu, tāpēc mēs vienkārši saucam šo metodi drukāt:
drukāt "Datora nosaukums ir:% s"% datora_nosaukums
Tam vajadzētu sniegt mūsu interaktīvajā terminālī šādu rezultātu:
Kā redzējām, bibliotēku ir diezgan viegli pārvaldīt kontaktligzda un darbības no konsoles Python, tagad mēs varam pāriet uz nākamo punktu, proti, iegūt IP adresi uzreiz, jo mums ir jādara tikai kaut kas līdzīgs, tikai tas, ka mēs izmantosim mainīgo ar datora nosaukumu, kuru sākotnēji esam ieguvuši un mēs darīsim sekojošo:
resursdatora_adrese = socket.gethostbyname (saimniekdatora_nosaukums)
To darot, mēs izdrukājam iepriekšējo mainīgo:
drukāt "IP ir:% s"% datora_adrese
Apskatīsim, kā tas izskatās mūsu terminālī:
Kā redzam, mēs esam ieguvuši ārkārtīgi noderīgu informāciju bez lielām pūlēm, taču tas nav nekas, salīdzinot ar to, ko mēs varam darīt.
Iepriekš minētais ir diezgan praktisks, taču tas nav īpaši noderīgs tā prezentācijā, jo mēs tam bieži nevaram piekļūt, bet mums tas jāievada pa rindām, lai izvairītos no šīs problēmas, mēs izveidosim reālu programmu, kas mums dos iespēju informāciju, ko līdz šim zinām, kā iegūt.
Šim nolūkam mums būs nepieciešams vienkārša teksta redaktors, mēs iesakām SublimeText 2 un vietu, kur mēs varam uzņemt mūsu programmu un kas ir sasniedzamā attālumā no mūsu instalēšanas Python ar attiecīgajām atļaujām.
Lai panāktu uzlabojumus, mēs izveidosim funkciju, kas ļaus mums regulāri izsaukt mūsu norādījumus, katru reizi neierakstot visu kodu, pēc tam jaunajā failā, uz kuru mēs zvanīsim team_information.py mēs ievietojam šādu saturu:
#! / usr / bin / lv Python importēšanas ligzda def get computer_info (): datora_nosaukums = ligzda.gethostname () datora_adrese = ligzda.gethostbyname (datora_nosaukums) drukāt "datora nosaukums ir:% s"% computer_name print "IP ir: % s "% computer_address if __name__ == '__main__': get_team_info ()
Ir ļoti svarīgi ievērot koda cilnes un ievilkumus, jo tas ir vienīgais veids Python var atpazīt bloķēšanas izmaiņas, ja mēs to izmantojam Cildens teksts Mums nebūs jāuztraucas, jo tas ļauj vizuāli pārbaudīt mūsu koda ievilkumus:
Tagad mūsu sistēmas komandu konsolē un neieejot de Python Mēs varam piezvanīt savam failam, un mēs redzēsim rezultātu, tāpēc mēs to izpildām python faila nosaukums.py kā mēs varam redzēt šajā attēlā:
Tā kā mēs esam redzējuši dažus bibliotēkas darbības pamatus kontaktligzdaPaņemsim to jaunā līmenī. Bez nepieciešamības izmantot jaunas instrukcijas mēs tagad iegūsim attālā datora adresi, tas var būt ļoti svarīgi, lai apkopotu informāciju jebkurai apstiprināšanai, ko vēlamies veikt.
Šajā gadījumā mēs nedaudz pārveidosim savu iepriekšējo programmu jaunā failā, ko tagad sauc remote_information.py mēs ievietosim sekojošo:
#! / usr / bin / lv Python importēšanas ligzda def get_remote_computer_info (): remote_computer = 'www.google.com' try: print "Attālais dators ir:% s"% remote_computer print "IP adrese ir:% s"% socket.gethostbyname (remote_host), izņemot socket.error, err_msg: print "% s:% s"% (remote_host, err_msg), ja __name__ == '__main__': get_remote_host_info ()
Tas, ko mēs esam izdarījuši, ir vienkārši norādīt a attālais saimnieksTā kā mums nav ko pierādīt, mēs varam izmantot zināmu vietni, lai no tās iegūtu informāciju, šajā piemērā mēs izmantosim Google, šajā gadījumā būs mūsu komandas nosaukums URL un izmantojot to pašu metodi gethostbyname () mēs iegūsim informāciju.
Mēs esam pievienojuši arī kļūdu apstrādātāju, ja mēs noraidām mūsu ievietoto adresi un tādējādi zinām cēloņus, visbeidzot, izpildot to savā konsolē, mēs iegūsim sekojošo:
Ja mēs vēlamies izveidot programmas, kas darbojas saskaņā ar tīkla protokoliem, ļoti iespējams, ka mums būs jāizmanto dažādi formāti, kādos IP adrese var tikt izteikta, protams, ņemot vērā mūsu redzamās ērtības.
Populāri formātiIr divi ļoti populāri IP adrešu formāti, pirmais ir inet_aton () kas ir iepakota IP versija, un tālāk ir inet_ntoa () kas ir pretējs un ir neiepakota IP versija.
Katram no tiem ir savs lietojums programmās, tomēr tas nav šīs apmācības galvenais temats, vienīgā papildu lieta, ko varam norādīt, ir tas, ka šie formāti un to funkcijas attiecas tikai uz IPv4, tā vietā IPv6 citi piesakās.
Mēs izveidosim jaunu programmu, kas ļaus mums veikt šo reklāmguvumu:
#! / usr / bin / lv Python importēšanas ligzda no binascii importa hexlify def format_ip_address (): remote_host_a = socket.gethostbyname ('www.twitter.com') remote_host_b = socket.gethostbyname ('www.facebook.com') dir_ip in [remote_host_a, remote_host_b]: pack_ip = socket.inet_aton (dir_ip) no_packed_ip = socket.inet_ntoa (pack_ip) print "IP adrese:% s => Iepakots:% s, nav iepakots:% s"% (dir_ip, hexlipify (pack_ip) )), unpacked_ip) if __name__ == '__main__': format_ip_address ()
Šeit mēs atkal sākam savu programmu, importējot bibliotēku kontaktligzda, tad mēs importējam bibliotēku ar nosaukumu hexlify kas ļauj mums izveidot heksadecimālu formātu konvertēšanu, lai tie būtu lasāmi, mēs to izmantosim, lai varētu atšifrēt IP adreses. Lai padarītu to interesantāku, esam ievietojuši divus attālos datorus, no kuriem mēs iegūsim IP adreses, un ar cilpai mēs atkārtosim abus, iterācijas laikā mēs varēsim veikt reklāmguvumus ar adrešu formātiem IPv4 ko esam ieguvuši.
Visbeidzot, mēs atstājam iespaidu par katru no tiem, tāpēc esam paļāvušies uz metodēm inet_aton () un inet_ntoa () gan no ligzdu bibliotēkas, kas ir svarīgi atcerēties, ka tā ir balstīta uz klasēm, nevis uz instancēm.
Apskatīsim, kā tas viss izskatās, palaižot iepriekšējo failu mūsu komandu konsolē:
Ar šo piemēru mēs esam sajaukuši visus iepriekš redzētos trikus, sākot ar informācijas iegūšanu no attālā datora un beidzot ar funkcijas izveidi, kas ļauj mums iegūt informāciju, nerakstot visu vietnes interaktīvajā konsolē. Python.
SvarīgsSvarīgs ieteikums ir tas, ka mums vajadzētu izmantot dokumentāciju, ja mums ir kādi jautājumi un pateicība lielajai kopienai Python Internetā mēs praktiski varam atrast risinājumu visām šaubām vai problēmām, ar kurām saskaramies.
Ar to mēs beidzam šo apmācību, tā ir tikai ieraksts par to, ar ko tiek plānota tīkli PythonTomēr ir ļoti noderīgi zināt, ka no mūsu programmām mēs varam manipulēt ar informāciju gan no mūsu datoriem, gan no attāliem datoriem, to neveicot papildu iekļaušanai no bibliotēkām vai vairākām koda rindām, lai to iegūtu.Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu