Få IP -adressinformation med Python

Innehållsförteckning
Pytonorm Som programmeringsspråk är det mycket kraftfullt, det gör att vi kan uppnå handlingar och få mycket viktiga resultat när vi manipulerar de olika egenskaperna hos vår utrustning, detta kan vi uppnå genom IP -adresser, portar och uttag. Var och en tillåter oss att nå en annan och lika viktig punkt i nätverksstrukturen.
En av miljöerna där Pytonorm har fått mer styrka är i utvecklingen av program för nätverket, eftersom tack vare dess klasser av uttagshantering, vi kan använda nätverksstrukturen till vår fördel, denna struktur kan vara lokal eller genomgående Internet, vilket ger oss stor mångsidighet och kraft i de program som vi kan genomföra.
Socket -biblioteketDetta är det första stoppet vi måste göra, detta bibliotek ger funktioner baserade på lektioner och i instanser, vilket innebär att vi kan använda vissa saker utan att skapa objekt.
Detta kanske inte gör någon större skillnad för oss, men möjligheten att arbeta utan instanser öppnar vissa möjligheter, till exempel att göra kortare skript och låta oss använda kraftfulla verktyg utan att lägga till ytterligare komplexitet i vår kod.
Denna första övning är mycket intressant, eftersom vi från kommandokonsolen för vårt system kommer att kunna få information från vår egen utrustning med hjälp av Pytonorm och några rader kod.
KravSom krav måste vi ha installerat tolken av Pytonorm i vår maskin för att kunna exekvera exemplen som vi kommer att visa i denna handledning.
Koden vi har skrivit körs på version 2.7 av Pytonorm så någon ändring kan behövas om en annan version används. Ett verktyg som kan hjälpa oss med versionskompatibilitetsproblem är Virtualenv som låter oss köra olika versioner av Pytonorm i oberoende installationer utan att behöva komplexa konfigurationer för att göra det.
Först och främst kommer vi att öppna vår kommandokonsol och vi kommer att gå in i Python interaktiv terminalFör att göra detta, om vi har installerat språket korrekt, behöver vi bara placera ordet python och vi har tillgång till det:

Den här konsolen är mycket användbar för testinstruktioner som vi kommer att se i exemplet nedan, men för användning där vi behöver behålla koden vi gör är den kanske inte det bästa alternativet, vilket vi kommer att se senare i självstudien.
Först måste vi importera vårt bibliotek, för detta kommer vi att använda följande kommando:
importuttag

Sedan kan vi börja samla in den information vi vill ha, för detta behöver vi bara veta vad vi letar efter, till exempel för att få namnet på vårt team måste vi helt enkelt skriva följande:
dator_namn = socket.gethostname ()

Sedan kan vi skriva ut variabeln på skärmen för att se dess innehåll, för detta kallar vi helt enkelt metoden skriva ut:
print "Datornamnet är:% s"% computer_name

Detta borde ge oss ett resultat som följande i vår interaktiva terminal:

Som vi kunde se är det ganska enkelt att hantera biblioteket uttag och funktioner från konsolen Pytonorm, nu kan vi gå till nästa punkt och det är att få IP -adressen på en gång, eftersom vi bara behöver göra något liknande, bara att vi ska använda variabeln med namnet på den dator som vi först fångade och vi kommer att göra följande:
host_address = socket.gethostbyname (värdnamn)

Genom att göra detta skriver vi ut den föregående variabeln:
print "IP -adressen är:% s"% dator_adress

Låt oss se hur detta ser ut i vår terminal:

Som vi kan se har vi fått mycket användbar information utan mycket ansträngning, men det här är ingenting jämfört med vad vi kan göra.
Ovanstående är ganska praktiskt, men det är inte särskilt användbart i presentationen, eftersom vi inte kan komma åt det ofta, men vi måste ange det rad för rad, för att undvika detta problem kommer vi att skapa ett riktigt program som ger oss information som vi hittills vet hur vi ska få.
För detta behöver vi en vanlig textredigerare, vi rekommenderar SublimeText 2 och en plats där vi kan vara värd för vårt program och som är inom räckhåll för vår installation av Pytonorm med motsvarande behörigheter.
För att uppnå en förbättring kommer vi att skapa en funktion som gör att vi kan ringa våra instruktioner återkommande utan att behöva skriva all koden varje gång, sedan i vår nya fil som vi kommer att ringa team_information.py vi kommer att placera följande innehåll:
 #! / usr / bin / env Python import socket def get computer_info (): computer_name = socket.gethostname () computer_address = socket.gethostbyname (computer_name) print "datorns namn är:% s"% computer_name print "IP -adressen är: % s "% computer_address if __name__ == '__main__': get_team_info () 

Det är mycket viktigt att vi respekterar flikarna och fördjupningarna i koden eftersom det är det enda sättet Pytonorm kan känna igen blockändringar om vi använder Sublim text Vi behöver inte oroa oss eftersom det tillåter oss att visuellt verifiera fördjupningarna av vår kod:

Nu i vår systemkommandokonsol och utan att ange de Pytonorm Vi kan ringa vår fil och vi kommer att se resultatet, för detta utför vi python filnamn.py som vi kan se i följande bild:

Eftersom vi har sett några grunder för hur biblioteket fungerar uttagLåt oss ta detta till en ny nivå. Utan att behöva använda nya instruktioner kommer vi nu att få adressen till en fjärrdator, detta kan vara mycket viktigt för att samla in information för validering som vi vill göra.
I det här fallet kommer vi att ändra vårt tidigare program lite, i en ny fil som nu heter remote_information.py vi ska placera följande:
 #! / usr / bin / env Python import socket def get_remote_computer_info (): remote_computer = 'www.google.com' try: print "Fjärrdatorn är:% s"% remote_computer print "IP -adressen är:% s"% socket.gethostbyname (remote_host) utom socket.error, err_msg: skriv ut "% s:% s"% (remote_host, err_msg) om __name__ == '__main__': get_remote_host_info () 

Det vi har gjort är helt enkelt att ange namnet på a fjärrvärdEftersom vi inte har något att bevisa kan vi använda en känd webbplats för att få information från den, i detta exempel kommer vi att använda adressen till Google, i det här fallet blir vårt lagnamn Url och använder samma metod gethostbyname () vi kommer att få informationen.
Vi har också lagt till en felhanterare om vi avvisar adressen vi har placerat och därmed vet orsakerna, slutligen när vi kör detta i vår konsol kommer vi att få följande:

Om vi ​​vill skapa program som fungerar under nätverksprotokoll är det mycket troligt att vi kommer att behöva använda de olika format som en IP -adress kan uttryckas i, allt detta naturligtvis enligt bekvämligheten som vi ser.
Populära formatDet finns två mycket populära format för IP -adresser, det första är inet_aton () som är en packad version av IP och följande är inet_ntoa () vilket är motsatsen och är en opackad version av IP: n.
Var och en har sina användningsområden i program, men det är inte huvudämnet för denna handledning, det enda som vi kan ange är att dessa format och deras funktioner endast gäller för IPv4, istället för IPv6 andra tillämpar.
Vi ska bygga ett nytt program som gör att vi kan göra denna konvertering:
 #! / usr / bin / env Python -importuttag från binascii import hexlify def format_ip_address (): remote_host_a = socket.gethostbyname ('www.twitter.com') remote_host_b = socket.gethostbyname ('www.facebook.com') för dir_ip i [remote_host_a, remote_host_b]: packed_ip = socket.inet_aton (dir_ip) no_packed_ip = socket.inet_ntoa (packad_ip) print "IP -adress:% s => Packad:% s, inte packad:% s"% (dir_ip, hexlipify (packad_ip) )), unpacked_ip) if __name__ == '__main__': format_ip_address () 

Här startar vi vårt program igen genom att importera biblioteket uttag, sedan importerar vi ett bibliotek som heter hexlifiera som gör att vi kan upprätta en konvertering av hexadecimala format, så att de kan vara läsbara, kommer vi att använda detta för att kunna dekryptera IP -adresserna. För att göra detta mer intressant har vi placerat två fjärrdatorer från vilka vi ska hämta IP -adresserna och med en för slinga vi kommer att iterera genom båda, inom iterationen är när vi sedan kan göra omvandlingarna med adressformaten IPv4 som vi har fått.
Slutligen gör vi intryck av var och en, för detta har vi förlitat oss på metoderna inet_aton () och inet_ntoa () både från socketbiblioteket, vilket är viktigt att komma ihåg att det är klassbaserat och inte instansbaserat.
Låt oss se hur allt detta ser ut när vi kör den tidigare filen i vår kommandokonsol:

Med detta exempel har vi blandat alla knep som vi tidigare sett, från att hämta informationen från en fjärrdator, till att bygga en funktion som gör att vi kan få informationen utan att behöva skriva allt i den interaktiva konsolen för Pytonorm.
ViktigEn viktig rekommendation är att vi ska använda dokumentationen när vi har några frågor och tack till den stora gemenskapen av Pytonorm På Internet kan vi praktiskt taget hitta en lösning på alla tvivel eller problem vi står inför.
Med detta avslutar vi denna handledning, det är bara en ingång till vad som programmeras för nätverk med PytonormDet är dock ganska användbart att veta att vi från våra program kan manipulera information från både våra datorer och fjärrdatorer, utan att behöva göra extra inkluderingar från bibliotek eller flera kodrader för att få den.Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng
wave wave wave wave wave