Estou trabalhando em um script que separará as informações do registrador de um whois de domínios. Até agora está funcionando o suficiente, mas há algumas coisas que quero remover para que fique um pouco mais limpo. Funciona na maioria dos domínios. Aqui está meu 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"
E aqui está o que ele produz:
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.
Eu adicionei algum código psudo no meu grep para tentar excluir a string "internnic", a fim de cortar a primeira linha. Eu também gostaria de encontrar uma maneira de remover o secundário "patrocínio do registrador..." etc.
É possível detectar uma string e não incluir essa linha? Obrigado
Responder1
Outra opção é ser mais específico sobre o que você está procurando. Por exemplo:
whois stackoverflow.com | grep -E '^[[:space:]]*(Registr(ar|ant|y)|Sponsoring).*: '
Isso extrai apenas linhas que começam com espaço em branco opcional antes de 'Registrador', 'Registrante', 'Registro' ou 'Patrocinador', seguido por qualquer número (zero ou mais) de qualquer caractere, seguido por dois pontos e um espaço.
(Aliás, isso usa grep -E
em vez do obsoleto e obsoleto egrep
. Eles fazem a mesma coisa.)
Saída:
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
Aliás, ao testar qualquer forma de processamento de texto (incluindo expressões regulares) em texto de fontes lentas (como uma consulta de banco de dados ou de uma fonte remota como whois ou um servidor http), é útil executar o comando lento uma vez e redirecionar a saída para um arquivo e, em seguida, teste o arquivo. Quando você tiver o que deseja, certifique-se de que funcione da mesma forma com dados canalizados diretamente (frescos).
por exemplo
whois stackoverflow.com > so.txt
Outras coisas úteis para fazer com whois
a saída:
extrair bloco de domínio no início de whos (as linhas do campo começam com 4 espaços e terminam com dois pontos):
grep -Ei '^[[:blank:]]+.*:[[:blank:]]' so.txt
Saída:
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
extraia o bloco do registrante, começando com o campo `Nome de domínio' e terminando com o campo 'Telefone de contato de abuso do registrador':
sed -n -e '/^Domain Name:/,/^Registrar Abuse Contact Phone:/p' so.txt
ambos os itens acima juntos:
sed -n -e '/^Domain Name:/,/^Registrar Abuse Contact Phone:/p /^[[:blank:]]+.*:[[:blank:]] /p'
A saída de todos os itens acima pode ser facilmente processada com
awk
qualquer outra ferramenta de processamento de texto que possa usar dois pontos (:
) como separador de campo.
Responder2
Use o sinalizador -v:
reg=`whois stackoverflow.com | egrep -i 'Registrar|Sponsoring Registrar|Registrant' | grep -v internic`