Este módulo proporciona operaciones de socket y algunas funciones relacionadas.
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)→ Las constantesAF_*ySOCK_*son coleccionesAddressFamilyySocketKind IntEnumrespectivamente.
socket.AF_INET: Estas constantes representan las familias de direcciones (y protocolos), utilizadas para el primer argumento desocket()socket.SOCK_DGRAM: Estas constantes representan los tipos de socket, usados para el segundo argumento de socket(). Es posible que haya más constantes disponibles según el sistema. (Solo SOCK_STREAM y SOCK_DGRAM parecen ser útiles en general).
s.connect(("8.8.8.8", 80)): Se hace una conexión al DNS (8.8.8.8) de Google. (host = El host remoto, port = El mismo puerto que utiliza el servidor)host_ip = s.getsockname()[0]: Se revisa la dirección usada como fuente de la comunicación. Retorna una dirección. El métodogetsockname→ Devuelve la propia dirección del socket. Esto es útil para averiguar el número de puerto de un socket IPv4/v6, por ejemplo. (El formato de la dirección devuelta depende de la familia de direcciones). Devuelve una array:
[0]→ Es la IP[1]→ Es el puerto
s.close(): Libera el recurso asociado con una conexión, pero no necesariamente cierra la conexión de inmediato. Nota: Esto supone que tiene acceso a Internet y que no hay un proxy local.
Termina el programa ante un error en la introducción de datos del usuario.
sys.exit(1): Se aplica el modulo sys y su función exit, para salir del programa.
1→ Hubo algún problema o error y es por eso que el programa está saliendo.0→ Una salida limpia sin errores.
Saber el sistema operativo donde corremos el programa.
platform.system()=="Windows": Se comprueba el sistema operativo que se está utilizando es windows.system()→ Devuelve el nombre del sistema/OS, por ejemplo, 'Linux', 'Windows' o 'Java'.
Para realizar el ping a través del sistema Operativo.
response = os.popen(ping+" "+direccion)→ Se obtiene la respuesta del ping
ping = ping -n 1→ Número de solicitudes de eco para enviar. Se manda un solo (-n 1) paqueteping = ping -c 1(en UNIX) → Se manda un solo (-c 1) paquete.
mac = os.popen("arp -a"+" "+direccion+" "+"-v")
arp = arp -a→ Muestra la tabla de resolución de las IPs y MAC address.
response.readlines()→ El moduloreadlines()devuelve el contenido de todo el archivo como una lista de cadenas, donde cada elemento de la lista representa una línea del archivo.line.lower()→ Para saber si la IP está activa, comprobaremos con la respuestattlque tenemos contiene la palabrattl, utilizoline.lower()porque parece que en Linux sale en minúsculas y en Windows en mayúsculas, así no tenemos problemas.
Para saber el tiempo que tarda en realizar el escaneo.
tiempoInicio = datetime.now(): Se obtiene la hora correspondiente y se guarda en una variable. Se aplica la clasedatetimey el métodonowque construye undatetimea partir detime.time()y la información opcional de la zona horaria.