Ich arbeite an einem Skript, das die Registrar-Informationen von den Whois-Informationen einer Domain trennt. Bis jetzt funktioniert es ausreichend, aber ich möchte noch ein paar Dinge entfernen, damit es etwas übersichtlicher wird. Bei den meisten Domains funktioniert es. Hier ist mein Code:
#!/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"
Und hier ist die Ausgabe:
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.
Ich habe in meinem Grep etwas Pseudocode hinzugefügt, um zu versuchen, die Zeichenfolge „internnic“ auszuschließen, um diese erste Zeile abzuschneiden. Ich möchte auch einen Weg finden, das sekundäre „Sponsoring des Registrars …“ usw. zu entfernen.
Ist es möglich, eine Zeichenfolge zu erkennen und diese Zeile nicht einzuschließen? Danke
Antwort1
Eine andere Möglichkeit besteht darin, genauer anzugeben, wonach Sie suchen. Zum Beispiel:
whois stackoverflow.com | grep -E '^[[:space:]]*(Registr(ar|ant|y)|Sponsoring).*: '
Dadurch werden nur Zeilen extrahiert, die mit einem optionalen Leerzeichen vor „Registrar“, „Registrant“, „Registry“ oder „Sponsoring“ beginnen, gefolgt von einer beliebigen Zahl (null oder mehr) beliebiger Zeichen, gefolgt von einem Doppelpunkt und einem Leerzeichen.
(Übrigens wird hier grep -E
anstelle von obsolet und deprecated verwendet egrep
. Sie bewirken dasselbe.)
Ausgabe:
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
Übrigens, wenn Sie jede Form der Textverarbeitung (einschließlich regulärer Ausdrücke) an Text aus langsamen Quellen (wie einer Datenbankabfrage oder einer Remotequelle wie Whois oder einem HTTP-Server) testen, ist es sinnvoll, den Befehl slow einmal auszuführen und die Ausgabe in eine Datei umzuleiten und dann mit der Datei zu testen. Wenn Sie das gewünschte Ergebnis haben, stellen Sie sicher, dass es mit direkt weitergeleiteten (neuen) Daten genauso funktioniert.
z.B
whois stackoverflow.com > so.txt
Weitere nützliche Dinge, die mit whois
der Ausgabe geschehen können:
Extrahieren Sie den Domänenblock am Anfang von whos (Feldzeilen beginnen mit 4 Leerzeichen und enden mit einem Doppelpunkt):
grep -Ei '^[[:blank:]]+.*:[[:blank:]]' so.txt
Ausgabe:
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
Extrahieren Sie den Registrantenblock, beginnend mit dem Feld „Domänenname“ und endend mit dem Feld „Telefonnummer für den Kontakt zum Registrar-Missbrauch“:
sed -n -e '/^Domain Name:/,/^Registrar Abuse Contact Phone:/p' so.txt
beides zusammen:
sed -n -e '/^Domain Name:/,/^Registrar Abuse Contact Phone:/p /^[[:blank:]]+.*:[[:blank:]] /p'
awk
Die Ausgabe aus all den oben genannten Programmen kann problemlos mit jedem anderen Textverarbeitungstool weiterverarbeitet werden, das so eingestellt werden kann, dass es einen Doppelpunkt (:
) als Feldtrennzeichen verwendet.
Antwort2
Verwenden Sie das Flag -v:
reg=`whois stackoverflow.com | egrep -i 'Registrar|Sponsoring Registrar|Registrant' | grep -v internic`