Semplifica molte funzionalità complesse che lo rendono molto intuitivo e facile da adottare. Quindi, non sarai sorpreso di sapere che Python è un linguaggio eccellente per l'automazione, come illustrato dalla dipendenza di Ansible su di esso.
Una delle parti più semplici e migliori da automatizzare è il networking. Pertanto, in questo tutorial, ti mostreremo come recuperare il nome host di un sistema usando vari moduli Python.
Cos'è un nome host?
Un nome host si riferisce al nome dato a un dispositivo per identificarlo in una rete locale. Nomi host facilitano per le macchine comunicare all'interno di una rete.
In Windows, è possibile ottenere il nome host di un dispositivo utilizzando il comando:
$ hostname
Puoi anche utilizzare lo stesso comando su Linux per recuperare il nome host del tuo dispositivo.
$ hostname -s
In Python, possiamo usare varie tecniche e metodi per ottenere il nome host di una macchina.
Discutiamo questi metodi e come usarli.
Metodo 1 - Modulo Python Socket
Uno dei moduli di networking più influenti per Python è il modulo Socket. Ci fornisce funzionalità di networking di basso livello che possono essere esportate tra i sistemi.
Per trovare il nome host usando il modulo socket, useremo la funzione gethostname ().
La sintassi della funzione è come mostrata:
PRESA.gethostname ()La funzione non richiede parametri.
Restituisce quindi una stringa con il nome host della macchina in cui è installato l'interprete.
Per usarlo, inizia importando il modulo socket:
Società di importazioneQuindi, chiama la presa.gethostname () funzione come:
Società di importazioneNell'esempio sopra, salviamo il nome host in una variabile che possiamo usare in seguito.
Metodo 2 - Modulo di sistema operativo Python
Il modulo OS ci fornisce la funzionalità per interagire con il sistema operativo. Ad esempio, possiamo utilizzare la funzione uname () di questo modulo per determinare il nome host del sistema.
La sintassi della funzione è come mostrata:
sistema operativo.il tuo nome()Allo stesso modo, la funzione non richiede parametri. Restituisce quindi un oggetto composto da cinque attributi, vale a dire:
Per usarlo, possiamo iniziare importando la funzione UNAME dal modulo OS
da un sistema operativo unamePossiamo quindi utilizzare la funzione UNAME per ottenere i dettagli del sistema:
Stampa (uname ())La funzione dovrebbe conservare l'oggetto che tiene le informazioni sul sistema come:
Posix.uname_result (sysname = 'linux', noderename = 'master', release = '5.10.102.1-Microsoft-Standard-WSL2 ', versione ='#1 SMP WED 2 marzo 00:30:59 UTC 2022 ', Machine =' X86_64 ')Si noti che la funzione uname () funziona solo su sistemi UNIX. Per i sistemi Windows, controllare il secondo metodo di seguito.
Per ottenere solo il nome host, possiamo accedere al secondo elemento nell'oggetto usando la notazione indice come:
da un sistema operativo unameQuesto dovrebbe restituire solo il nome host della macchina.
Metodo 3 - Modulo OS Python (GetNev)
Come accennato, la funzione uname () non riuscirà ai sistemi Windows. Tuttavia, è possibile utilizzare la funzione getenv () e passare la chiave di destinazione.
La sintassi della funzione è come mostrata:
sistema operativo.getenv (chiave, default = nessuno)La funzione restituirà quindi il valore della variabile di ambiente associata alla chiave specificata.
Windows ha un ambiente chiamato "ComputerName" che contiene il nome host della macchina.
Possiamo usare questa variabile di ambiente come chiave per la funzione getNev () come:
Dal sistema operativo OS GEENVIl codice sopra dovrebbe restituire il nome host della macchina come stringa.
In Linux, sostituire la chiave da "Computernane" a "Nome".
Metodo 4 - Modulo della piattaforma Python
Python ha un altro grande modulo che ci consente di recuperare il nome host di una macchina. La piattaforma ci consente di raccogliere fatti su una piattaforma, come networking, sistema operativo, interpreti e altro ancora.
Per recuperare il nome host di una macchina utilizzando il modulo della piattaforma, possiamo utilizzare la funzione nodo ().
La sintassi è come mostrata:
piattaforma.nodo()In genere, la funzione non richiede parametri. Restituisce quindi il nome host della macchina corrente come stringa.
Iniziamo importando la funzione del nodo:
dal nodo di importazione della piattaformaLa funzione funziona su entrambi i sistemi Windows e Unix.
Metodo 5 - Ottieni nome host da IP
In alcuni casi, potrebbe essere necessario recuperare il nome host di un determinato indirizzo IP. Usiamo la funzione gethostbyaddr () dal modulo socket.
La sintassi della funzione è come mostrata:
PRESA.gethostbyaddr (ip_address)La funzione accetta l'indirizzo IP come argomento nel tipo di stringa e restituisce le informazioni sull'indirizzo IP.
La funzione restituisce informazioni come nome host, aliaslist e ipaddrlist come tupla. Possiamo quindi usare l'indicizzazione Tuple per ottenere il nome host dell'IP.
La cosa buona di questa funzione è che supporta sia IPv4 che IPv6.
Un codice di esempio è come mostrato:
dall'importazione di socket gethostbyaddrQui, stiamo recuperando il nome host di due indirizzi IP, uno in IPv4 e l'altro in IPv6.
I valori risultanti sono come mostrati:
IPv4: uno.uno.uno.unoCome puoi vedere dall'output sopra, la funzione è in grado di risolvere il nome host di entrambi gli indirizzi IP.
Conclusione
In questo tutorial, abbiamo esplorato cinque metodi che puoi usare per recuperare il nome host di una macchina usando Python. Scegli quello che funziona per te e attenersi.