Estoy trabajando en un script que separará la información del registrador del whois de un dominio. Hasta ahora está funcionando bastante, pero hay algunas cosas que quiero eliminar para que quede un poco más limpio. Funciona en la mayoría de dominios. Aquí está mi código:
#!/bin/bash
reg=$(whois "stackoverflow.com" | egrep -i 'Registrar|Sponsoring Registrar|Registrant|!internic')
printf "Below is my best attempt at finding the Registrar info:\n"
printf "$reg\n"
Y esto es lo que produce:
Below is my best attempt at finding the Registrar info:
with many different competing registrars. Go to http://www.internic.net
Registrar: NAME.COM, INC.
Sponsoring Registrar IANA ID: 625
registrar's sponsorship of the domain name registration in the registry is
date of the domain name registrant's agreement with the sponsoring
registrar. Users may consult the sponsoring registrar's Whois database to
view the registrar's reported date of expiration for this registration.
Registrars.
Agregué algo de psudocódigo en mi grep para intentar excluir la cadena "internnic", para cortar esa primera línea. También me gustaría encontrar una manera de eliminar el "patrocinio del registrador..." secundario, etc.
¿Es posible detectar una cadena y no incluir esa línea? Gracias
Respuesta1
Otra opción es ser más específico sobre lo que estás buscando. Por ejemplo:
whois stackoverflow.com | grep -E '^[[:space:]]*(Registr(ar|ant|y)|Sponsoring).*: '
Esto extrae solo las líneas que comienzan con un espacio en blanco opcional antes de 'Registrador', 'Registrante', 'Registro' o 'Patrocinador', seguido de cualquier número (cero o más) de cualquier carácter, seguido de dos puntos y un espacio.
(Por cierto, esto utiliza grep -E
en lugar del obsoleto y obsoleto egrep
. Hacen lo mismo).
Producción:
Registrar: NAME.COM, INC.
Sponsoring Registrar IANA ID: 625
Registry Domain ID: 108907621_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.name.com
Registrar URL: http://www.name.com
Registrar Registration Expiration Date: 2016-12-26T19:18:07Z
Registrar: Name.com, Inc.
Registrar IANA ID: 625
Registry Registrant ID:
Registrant Name: Sysadmin Team
Registrant Organization: Stack Exchange, Inc.
Registrant Street: 110 William St , Floor 28
Registrant City: New York
Registrant State/Province: NY
Registrant Postal Code: 10038
Registrant Country: US
Registrant Phone: +1.2122328280
Registrant Email: [email protected]
Registry Admin ID:
Registry Tech ID:
Registrar Abuse Contact Email: [email protected]
Registrar Abuse Contact Phone: +1.1 7203101849
Por cierto, al probar cualquier forma de procesamiento de texto (incluidas expresiones regulares) en texto de fuentes lentas (como una consulta de base de datos o de una fuente remota como whois o un servidor http), es útil ejecutar el comando lento una vez y redirigir la salida a un archivo, luego pruebe con el archivo. Cuando tenga lo que desea, asegúrese de que funcione igual con datos directamente canalizados (nuevos).
p.ej
whois stackoverflow.com > so.txt
Otras cosas útiles que hacer con whois
la salida:
extraiga el bloque de dominio al comienzo de whos (las líneas de campo comienzan con 4 espacios y terminan con dos puntos):
grep -Ei '^[[:blank:]]+.*:[[:blank:]]' so.txt
Producción:
Domain Name: STACKOVERFLOW.COM
Registrar: NAME.COM, INC.
Sponsoring Registrar IANA ID: 625
Whois Server: whois.name.com
Referral URL: http://www.name.com
Name Server: CF-DNS01.STACKOVERFLOW.COM
Name Server: CF-DNS02.STACKOVERFLOW.COM
Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Updated Date: 26-nov-2015
Creation Date: 26-dec-2003
Expiration Date: 26-dec-2016
extraiga el bloque de registrante, que comienza con el campo "Nombre de dominio" y termina con el campo "Teléfono de contacto de abuso del registrador":
sed -n -e '/^Domain Name:/,/^Registrar Abuse Contact Phone:/p' so.txt
los dos anteriores juntos:
sed -n -e '/^Domain Name:/,/^Registrar Abuse Contact Phone:/p /^[[:blank:]]+.*:[[:blank:]] /p'
Los resultados de todo lo anterior se pueden procesar fácilmente con
awk
o cualquier otra herramienta de procesamiento de texto que pueda utilizar un:
carácter de dos puntos ( ) como separador de campo.
Respuesta2
Utilice la bandera -v:
reg=`whois stackoverflow.com | egrep -i 'Registrar|Sponsoring Registrar|Registrant' | grep -v internic`