Ottieni informazioni sull'indirizzo IP con Python

Sommario
Pitone Come linguaggio di programmazione è molto potente, ci consente di realizzare azioni e ottenere risultati molto importanti quando si manipolano le diverse caratteristiche della nostra attrezzatura, questo possiamo ottenere attraverso il Indirizzi IP, porte e socket. Ognuno ci permette di raggiungere un punto diverso e ugualmente importante all'interno della struttura della rete.
Uno degli ambienti dove Pitone ha acquisito maggiore forza sia nello sviluppo di programmi per la rete, poiché grazie alle sue classi di gestione delle prese, possiamo utilizzare la struttura di rete a nostro vantaggio, questa struttura può essere locale o tramite Internet, che ci dà grande versatilità e potenza nei programmi che possiamo eseguire.
La libreria socketQuesta è la prima tappa che dobbiamo fare, questa libreria offre funzionalità basate su Lezioni e in istanze, il che significa che possiamo usare alcune cose senza creare oggetti.
Questo potrebbe non fare molta differenza per noi, tuttavia la possibilità di lavorare senza istanze apre alcune possibilità come creare script più brevi e permetterci di utilizzare strumenti potenti senza aggiungere ulteriore complessità al nostro codice.
Questo primo esercizio è molto interessante, poiché dalla console di comando del nostro sistema potremo ottenere informazioni dalla nostra attrezzatura utilizzando Pitone e poche righe di codice.
RequisitiCome requisito dobbiamo aver installato l'interprete di Pitone nella nostra macchina per poter eseguire gli esempi che mostreremo in questo tutorial.
Il codice che abbiamo scritto viene eseguito su versione 2.7 di Pitone quindi alcune modifiche potrebbero essere necessarie se viene utilizzata una versione diversa. Uno strumento che può aiutarci con problemi di compatibilità delle versioni è Virtualenv che ci consente di eseguire diverse versioni di Pitone in installazioni indipendenti senza la necessità di configurazioni complesse per farlo.
Prima di tutto apriremo la nostra console di comando e inseriremo il Terminale interattivo PythonPer fare ciò, se abbiamo installato correttamente la lingua, dobbiamo solo posizionare la parola python e avremo accesso ad essa:

Questa console è molto utile per testare le istruzioni come vedremo nell'esempio seguente, tuttavia per gli usi in cui dobbiamo conservare il codice che facciamo potrebbe non essere la migliore alternativa, come vedremo più avanti nel tutorial.
Per prima cosa dobbiamo importare la nostra libreria, per questo useremo il seguente comando:
presa di importazione

Quindi possiamo iniziare a raccogliere le informazioni che vogliamo, per questo dobbiamo solo sapere cosa stiamo cercando, ad esempio per ottenere il nome del nostro team dobbiamo semplicemente scrivere quanto segue:
nome_computer = socket.gethostname ()

Quindi possiamo stampare la variabile sullo schermo per vederne il contenuto, per questo chiamiamo semplicemente il metodo Stampa:
print "Il nome del computer è:% s"% nome_computer

Questo dovrebbe darci un risultato come il seguente nel nostro terminale interattivo:

Come abbiamo potuto vedere, è abbastanza facile gestire la libreria presa e operazioni dalla console Pitone, ora possiamo andare al punto successivo e cioè ottenere l'indirizzo IP in una volta, perché dobbiamo solo fare qualcosa di simile, solo che useremo la variabile con il nome del computer che abbiamo inizialmente catturato e faremo quanto segue:
host_address = socket.gethostbyname (host_name)

Fatto questo stampiamo la variabile precedente:
print "L'IP è:% s"% computer_address

Vediamo come appare nel nostro terminale:

Come possiamo vedere abbiamo ottenuto informazioni estremamente utili senza troppi sforzi, ma questo è niente in confronto a quello che possiamo fare.
Quanto sopra è abbastanza pratico, ma non è molto utile nella sua presentazione, poiché non possiamo accedervi frequentemente, ma avremmo bisogno di inserirlo riga per riga, per evitare questo problema creeremo un vero programma che ci dia il informazioni che finora sappiamo come ottenere.
Per questo avremo bisogno di un editor di testo semplice, consigliamo SublimeText 2 e una posizione in cui possiamo ospitare il nostro programma e che sia alla portata della nostra installazione di Pitone con i relativi permessi.
Per ottenere un miglioramento creeremo una funzione che ci permetta di chiamare le nostre istruzioni su base ricorrente senza dover scrivere tutto il codice ogni volta, quindi nel nostro nuovo file che chiameremo team_information.py inseriremo il seguente contenuto:
 #! / usr / bin / env Python import socket def get computer_info (): computer_name = socket.gethostname () computer_address = socket.gethostbyname (computer_name) print "il nome del computer è:% s"% computer_name print "L'IP è: % s "% computer_address if __name__ == '__main__': get_team_info () 

È molto importante rispettare le tabulazioni e i rientri del codice poiché è l'unico modo in cui Pitone può riconoscere le modifiche ai blocchi, se stiamo usando Testo sublime Non dovremo preoccuparci poiché ci consente di verificare visivamente le rientranze del nostro codice:

Ora nella nostra console di comando di sistema e senza inserire il de Pitone Possiamo chiamare il nostro file e vedremo il risultato, per questo eseguiamo python nomefile.py come possiamo vedere nell'immagine seguente:

Dato che abbiamo visto alcune basi su come funziona la libreria presaPortiamo questo ad un nuovo livello. Senza la necessità di utilizzare nuove istruzioni, ora otterremo l'indirizzo di un computer remoto, questo può essere molto importante per raccogliere informazioni per qualsiasi convalida che vogliamo fare.
In questo caso modificheremo un po' il nostro programma precedente, in un nuovo file ora chiamato remote_information.py posizioneremo quanto segue:
 #! / usr / bin / env Python import socket def get_remote_computer_info (): remote_computer = 'www.google.com' try: print "Il computer remoto è:% s"% remote_computer print "L'indirizzo IP è:% s"% socket.gethostbyname (host_remoto) tranne socket.error, err_msg: print "% s:% s"% (host_remoto, err_msg) if __name__ == '__main__': get_remote_host_info () 

Quello che abbiamo fatto è semplicemente indicare il nome di a Host remotoPoiché non abbiamo nulla da dimostrare, possiamo utilizzare un sito Web noto per ottenere informazioni da esso, in questo esempio utilizzeremo l'indirizzo di Google, in questo caso il nome della nostra squadra sarà URL e usando lo stesso metodo gethostbyname() avremo le informazioni.
Abbiamo anche aggiunto un gestore di errori nel caso in cui rifiutiamo l'indirizzo che abbiamo inserito e quindi conosciamo le cause, infine quando lo eseguiamo nella nostra console otterremo quanto segue:

Se vogliamo realizzare programmi che funzionino sotto protocolli di rete, è molto probabile che avremo bisogno di utilizzare i diversi formati in cui può essere espresso un indirizzo IP, tutto questo ovviamente in base alla comodità che vediamo.
Formati popolariEsistono due formati molto diffusi per gli indirizzi IP, il primo è inet_aton () che è una versione compressa dell'IP e la seguente è inet_ntoa () che è l'opposto ed è una versione non pacchettizzata dell'IP.
Ognuno ha i suoi usi nei programmi, tuttavia non è l'argomento principale di questo tutorial, l'unica cosa aggiuntiva che possiamo indicare è che questi formati e le loro funzioni si applicano solo a IPv4, invece per IPv6 altri si applicano.
Stiamo per costruire un nuovo programma che ci permetta di fare questa conversione:
 #! / usr / bin / env Python import socket da binascii import hexlify def format_ip_address (): remote_host_a = socket.gethostbyname ('www.twitter.com') remote_host_b = socket.gethostbyname ('www.facebook.com') for dir_ip in [remote_host_a, remote_host_b]: ip_compresso = socket.inet_aton (dir_ip) no_packed_ip = socket.inet_ntoa (ip_packato) print "Indirizzo IP:% s => Packed:% s, Not Packed:% s"% (dir_ip, hexlipify (packed_ip) ) ), unpacked_ip) if __name__ == '__main__': format_ip_address () 

Qui ricominciamo il nostro programma importando la libreria presa, quindi importiamo una libreria chiamata esasperare che ci consente di stabilire una conversione dei formati esadecimali, in modo che possano essere leggibili, utilizzeremo questo per poter decrittare gli indirizzi IP. Per rendere questo più interessante abbiamo posizionato due computer remoti da cui otterremo gli indirizzi IP e con a per ciclo itereremo attraverso entrambi, all'interno dell'iterazione è quando possiamo quindi effettuare le conversioni con i formati degli indirizzi IPv4 che abbiamo ottenuto.
Infine facciamo un'impressione di ciascuno, per questo ci siamo affidati ai metodi inet_aton () e inet_ntoa () entrambi dalla libreria socket, il che è importante ricordare che è basato sulla classe e non sull'istanza.
Vediamo come appare tutto questo quando eseguiamo il file precedente nella nostra console di comando:

Con questo esempio abbiamo mescolato tutti i trucchi che avevamo visto in precedenza, dall'ottenere le informazioni da un computer remoto, alla costruzione di una funzione che ci permetta di ottenere le informazioni senza dover scrivere tutto nella console interattiva di Pitone.
ImportanteUna raccomandazione importante è che dovremmo usare la documentazione quando abbiamo domande e grazie alla grande comunità di Pitone Su Internet possiamo praticamente trovare una soluzione a qualsiasi dubbio o problema che dobbiamo affrontare.
Con questo concludiamo questo tutorial, è solo un'introduzione a ciò che sta programmando per le reti con PitoneTuttavia, è abbastanza utile sapere che dai nostri programmi possiamo manipolare le informazioni sia dai nostri computer che da computer remoti, questo senza dover fare inclusioni extra da librerie o più righe di codice per ottenerle.Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave