Indholdsfortegnelse
Python Som programmeringssprog er det meget kraftfuldt, det giver os mulighed for at opnå handlinger og opnå meget vigtige resultater, når vi manipulerer de forskellige egenskaber ved vores udstyr, dette kan vi opnå gennem IP -adresser, porte og stikkontakter. Hver enkelt giver os mulighed for at nå et andet og lige så vigtigt punkt inden for netværksstrukturen.Et af miljøerne hvor Python har fået mere styrke er i udviklingen af programmer til netværket, siden takket være dets klasser af stikkontakt håndtering, vi kan bruge netværksstrukturen til vores fordel, denne struktur kan være lokal eller gennemgående Internet, hvilket giver os stor alsidighed og kraft i de programmer, vi kan udføre.
Socket biblioteketDette er det første stop, vi skal gøre, dette bibliotek bringer funktioner baseret på lektioner og i tilfælde, hvilket betyder, at vi kan bruge nogle ting uden at skabe objekter.
Dette gør måske ikke den store forskel for os, men muligheden for at arbejde uden instanser åbner op for nogle muligheder som f.eks. At lave kortere scripts og give os mulighed for at bruge kraftfulde værktøjer uden at tilføre vores kode yderligere kompleksitet.
Denne første øvelse er meget interessant, da vi fra systemets kommandokonsol vil kunne få oplysninger fra vores eget udstyr ved hjælp af Python og et par linjer kode.
KravSom et krav skal vi have installeret tolken af Python i vores maskine for at kunne eksekvere de eksempler, som vi vil vise i denne vejledning.
Koden, vi har skrevet, kører på version 2.7 af Python så en vis ændring kan være nødvendig, hvis der bruges en anden version. Et værktøj, der kan hjælpe os med versionskompatibilitetsproblemer, er Virtualenv, som giver os mulighed for at køre forskellige versioner af Python i uafhængige installationer uden behov for komplekse konfigurationer for at gøre det.
Først og fremmest skal vi åbne vores kommandokonsol, og vi kommer til at gå ind i Python interaktiv terminalFor at gøre dette, hvis vi har installeret sproget korrekt, skal vi kun placere ordet python, og vi har adgang til det:
Denne konsol er meget nyttig til testinstruktioner, som vi vil se i eksemplet herunder, men til anvendelser, hvor vi skal beholde den kode, vi laver, er den muligvis ikke det bedste alternativ, som vi vil se senere i selvstudiet.
Først skal vi importere vores bibliotek, til dette vil vi bruge følgende kommando:
import stikkontakt
Derefter kan vi begynde at indsamle de oplysninger, vi ønsker, for dette behøver vi kun at vide, hvad vi leder efter, for eksempel for at få navnet på vores team skal vi simpelthen skrive følgende:
computernavn = socket.gethostname ()
Derefter kan vi udskrive variablen på skærmen for at se dens indhold, for dette kalder vi simpelthen metoden Print:
print "Computernavnet er:% s"% computernavn
Dette skulle give os et resultat som følgende i vores interaktive terminal:
Som vi kunne se, er det ganske let at administrere biblioteket stikkontakt og betjening fra konsollen Python, nu kan vi gå til det næste punkt, og det er at få IP -adressen med det samme, fordi vi kun skal gøre noget lignende, kun at vi skal bruge variablen med navnet på den computer, som vi oprindeligt har fanget og vi vil gøre følgende:
host_address = socket.gethostbyname (host_name)
Udført dette udskriver vi den tidligere variabel:
print "IP'en er:% s"% computer_address
Lad os se, hvordan dette ser ud i vores terminal:
Som vi kan se, har vi opnået yderst nyttige oplysninger uden store anstrengelser, men dette er ingenting i forhold til, hvad vi kan gøre.
Ovenstående er ganske praktisk, men det er ikke særlig nyttigt i dets præsentation, da vi ikke kan få adgang til det ofte, men vi skulle indtaste det linje for linje, for at undgå dette problem skal vi oprette et rigtigt program, der giver os oplysninger, som vi hidtil ved, hvordan vi skal indhente.
Til dette har vi brug for en almindelig teksteditor, vi anbefaler SublimeText 2 og et sted, hvor vi kan være vært for vores program, og det er inden for rækkevidde af vores installation af Python med deres tilsvarende tilladelser.
For at opnå en forbedring skal vi oprette en funktion, der giver os mulighed for at kalde vores instruktioner igen og igen uden at skulle skrive hele koden hver gang, derefter i vores nye fil, som vi vil ringe til team_information.py vi vil placere følgende indhold:
#! / usr / bin / env Python import socket def get computer_info (): computer_name = socket.gethostname () computer_address = socket.gethostbyname (computer_name) print "computernavnet er:% s"% computer_name print "IP -adressen er: % s "% computer_address if __name__ == '__main__': get_team_info ()
Det er meget vigtigt, at vi respekterer fanerne og fordybningerne i koden, da det er den eneste måde Python kan genkende blokændringer, hvis vi bruger Sublim tekst Vi skal ikke bekymre os, da det giver os mulighed for visuelt at kontrollere indrykningerne i vores kode:
Nu i vores systemkommandokonsol og uden at indtaste de Python Vi kan kalde vores fil, og vi vil se resultatet, for dette udfører vi python filnavn.py som vi kan se på følgende billede:
Da vi har set nogle baser for, hvordan biblioteket fungerer stikkontaktLad os tage dette til et nyt niveau. Uden behovet for at bruge nye instruktioner får vi nu adressen på en fjerncomputer, dette kan være meget vigtigt for at indsamle oplysninger til enhver validering, som vi ønsker at foretage.
I dette tilfælde vil vi ændre vores tidligere program lidt i en ny fil, der nu hedder remote_information.py vi vil placere følgende:
#! / usr / bin / env Python import socket def get_remote_computer_info (): remote_computer = 'www.google.com' try: print "Fjerncomputeren er:% s"% remote_computer print "IP -adressen er:% s"% socket.gethostbyname (remote_host) undtagen socket.error, err_msg: udskriv "% s:% s"% (remote_host, err_msg) hvis __name__ == '__main__': get_remote_host_info ()
Det, vi har gjort, er ganske enkelt at angive navnet på a fjernværtDa vi ikke har noget at bevise, kan vi bruge et kendt websted til at indhente oplysninger fra det, i dette eksempel vil vi bruge adressen til Google, i dette tilfælde vil vores holdnavn være Url og ved hjælp af den samme metode gethostbyname () vi får informationen.
Vi har også tilføjet en fejlbehandler, hvis vi afviser den adresse, vi har placeret og dermed kender årsagerne, endelig når vi udfører dette i vores konsol, får vi følgende:
Hvis vi vil lave programmer, der fungerer under netværksprotokoller, er det meget sandsynligt, at vi bliver nødt til at bruge de forskellige formater, som en IP -adresse kan udtrykkes i, alt dette naturligvis i henhold til den bekvemmelighed, vi ser.
Populære formaterDer er to meget populære formater til IP -adresser, den første er inet_aton () som er en pakket version af IP'en og følgende er inet_ntoa () hvilket er det modsatte og er en ikke-pakket version af IP'en.
Hver enkelt har sine anvendelser i programmer, men det er ikke hovedemnet i denne vejledning, den eneste ekstra ting, vi kan angive, er, at disse formater og deres funktioner kun gælder for IPv4, i stedet for IPv6 andre anvender.
Vi skal bygge et nyt program, der giver os mulighed for at lave denne konvertering:
#! / usr / bin / env Python -importstik fra binascii import hexlify def format_ip_address (): remote_host_a = socket.gethostbyname ('www.twitter.com') remote_host_b = socket.gethostbyname ('www.facebook.com') til dir_ip i [remote_host_a, remote_host_b]: packed_ip = socket.inet_aton (dir_ip) no_packed_ip = socket.inet_ntoa (packed_ip) print "IP -adresse:% s => Pakket:% s, Ikke pakket:% s"% (dir_ip, hexlipify (packed_ip) )), pakket ud_ip) hvis __name__ == '__main__': format_ip_address ()
Her starter vi vores program igen ved at importere biblioteket stikkontakt, så importerer vi et bibliotek kaldet hexlificere der giver os mulighed for at etablere en konvertering af hexadecimale formater, så de kan læses, vil vi bruge dette til at kunne dekryptere IP -adresserne. For at gøre dette mere interessant har vi placeret to eksterne computere, hvorfra vi skal hente IP -adresserne og med en til sløjfe vi kommer til at itereere gennem begge dele, inden for iterationen er, når vi derefter kan foretage konverteringerne med adresseformaterne IPv4 som vi har fået.
Endelig gør vi et indtryk af hver enkelt, for dette har vi stolet på metoderne inet_aton () og inet_ntoa () både fra socket-biblioteket, hvilket er vigtigt at huske, at det er klassebaseret og ikke instansbaseret.
Lad os se, hvordan alt dette ser ud, når vi kører den forrige fil i vores kommandokonsol:
Med dette eksempel har vi blandet alle de tricks, som vi havde set tidligere, fra at hente informationen fra en fjerncomputer, til at opbygge en funktion, der giver os mulighed for at få informationen uden at skulle skrive alt i den interaktive konsol af Python.
VigtigEn vigtig anbefaling er, at vi skal bruge dokumentationen, når vi har spørgsmål og tak til det store fællesskab af Python På Internettet kan vi praktisk talt finde en løsning på enhver tvivl eller problem, vi står over for.
Med dette afslutter vi denne vejledning, det er bare en indgang til, hvad der programmerer til netværk med PythonDet er imidlertid ganske nyttigt at vide, at vi fra vores programmer kan manipulere oplysninger fra både vores computere og eksterne computere, dette uden at skulle foretage ekstra inklusioner fra biblioteker eller flere kodelinjer for at få det.Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt