Forum >> Principianti >> Nome pc in una lan

Pagina: 1

Hi guys.

In una rete ho questi pc (ip fissi e nome):

192.168.0.1 -> pc01

192.168.0.114 -> pc02

192.168.0.118 -> pc03

192.168.0.136 -> pc04


L'estratto del mio codice dove si pianta è

ip_list = ['192.168.0.114', '192.168.0.118', '192.168.0.1', '192.168.0.136']

for ip in ip_list:

print(ip)

for ip in ip_list:

print(socket.gethostbyaddr(ip))



Il mio output sul primo for è:

192.168.0.114

192.168.0.118

192.168.0.1

192.168.0.136



mentre sul secondo for è:

print(socket.gethostbyaddr(ip))

socket.herror: [Errno 1] Unknown host



Le librerie sono importante correttamente.

Io vorrei un output del genere:

pc02

pc03

pc01

pc04



Perchè non li visualizza? Cosa sbaglio?



Non sbagli nulla, ma semplicemente non lo otterrai perché non esiste nessun riferimento/mappa DNS che dia informazioni alla scansione, guardati qui il motivo.
import socket

def host_lkp(addr):
    return socket.gethostbyaddr(addr)[0]

ip_list = ['192.168.0.114', '192.168.0.118', '192.168.0.1', '192.168.0.136', '8.8.8.8']

for ip in ip_list:
    try:
        machine = host_lkp(ip)
        print(f'Successo all'indirizzo {ip} si trova {machine}') 
    except socket.herror as e: 
        if e.errno == 1: 
            print(f'IP {ip} non ha record DNS') 
        elif e.errno == 2: 
            print('DNS server al momento risulta non disponibile') 
        else: 
            print('Error sconosciuto') 
Il risultato dell'output sarà, con ogni probabilità:
IP 192.168.0.114 non ha record DNS
IP 192.168.0.118 non ha record DNS
IP 192.168.0.1 non ha record DNS
IP 192.168.0.136 non ha record DNS
Successo all'indirizzo 8.8.8.8 si trova dns.google
Se andiamo avanti con l'esempio con un server noto:
>>> socket.gethostbyname('google.it')
'142.250.180.131'
>>> socket.gethostbyaddr('142.250.180.131')[0] 
'mil04s43-in-f3.1e100.net'

Ora se nel /etc/hosts aggiungessi (esempio per macchina GNU/Llinux, su Windows ignoro il procedimento):

[...]
192.168.0.114     pc2
A questo punto otterresti qualcosa di diverso nella scansione:
Successo all'indirizzo 192.168.0.114 si trova pc2
IP 192.168.0.118 non ha record DNS
IP 192.168.0.1 non ha record DNS
IP 192.168.0.136 non ha record DNS
Successo all'indirizzo 8.8.8.8 si trova dns.google


Fammi sapere se ti è tutto chiaro.
Cya
Perfettamente chiaro. Grazie della risposta.
Riguardo socket.herror dove hai trovato i codici di errore ed il loro significato?
Riguardo socket.herror dove hai trovato i codici di errore ed il loro significato?
Ho trovato tutto nella documentazione ufficiale.

Cya




Pagina: 1



Esegui il login per scrivere una risposta.