Wikipedia-Einträge über DNS abfragen

Die Online-Enzyklopädie Wikipedia kann über DNS abgefragt werden. Toll daran ist, dass man somit jederzeit die Definition von einem Begriff aus der Shell heraus per DNS abfragen kann.

Technik
Der DNS-Server wp.dg.cx stellt über TXT-Ressource-Records den ersten Absatz von den englischen Wikipedia-Artikeln zur Verfügung. Der DNS-Server kann mit nslookup oder dig abgefragt werden.

Abfrage
Ich möchte die Definition von Foo wissen. Der DNS-Query sieht folgendermassen aus:

emanuel@discordia:~
$ dig foo.wp.dg.cx TXT
;; Truncated, retrying in TCP mode.

; <<>> DiG 9.7.2-P3 <<>> txt foo.wp.dg.cx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7560
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 1

;; QUESTION SECTION:
;foo.wp.dg.cx.                  IN      TXT

;; ANSWER SECTION:
foo.wp.dg.cx.           86400   IN      TXT     "The term foobar,
along with foo, bar, and baz, is a common placeholder name
(also referred to as a metasyntactic variable) used in computer
programming or computer-related documentation. These four
terms are used heavily in computer science to take the pl" "ace
of unknown values, typically while describing a scenario where
the purpose of the unknown values are understood, but...
http://a.vu/w:Foobar"

;; AUTHORITY SECTION:
.                       78741   IN      NS      g.root-servers.net.
.                       78741   IN      NS      f.root-servers.net.
.                       78741   IN      NS      h.root-servers.net.
.                       78741   IN      NS      e.root-servers.net.
.                       78741   IN      NS      k.root-servers.net.
.                       78741   IN      NS      l.root-servers.net.
.                       78741   IN      NS      j.root-servers.net.
.                       78741   IN      NS      c.root-servers.net.
.                       78741   IN      NS      a.root-servers.net.
.                       78741   IN      NS      m.root-servers.net.
.                       78741   IN      NS      i.root-servers.net.
.                       78741   IN      NS      b.root-servers.net.
.                       78741   IN      NS      d.root-servers.net.

;; ADDITIONAL SECTION:
a.root-servers.net.     79004   IN      A       198.41.0.4

;; Query time: 5 msec
;; SERVER: 10.0.0.10#53(10.0.0.10)
;; WHEN: Mon Feb 14 21:11:04 2011
;; MSG SIZE  rcvd: 670

In der Answer-Section steht die Erklärung von Foo.

Darstellung
Um nur die nötigen Informationen von dig zu erhalten, verwendet man die Option +short:

emanuel@discordia:~
$ dig +noall +short foo.wp.dg.cx TXT
;; Truncated, retrying in TCP mode.
"The term foobar, along with foo, bar, and baz, is a common
placeholder name (also referred to as a metasyntactic variable)
used in computer programming or computer-related documentation.
These four terms are used heavily in computer science to take the
pl" "ace of unknown values, typically while describing a scenario
where the purpose of the unknown values are understood, but...
http://a.vu/w:Foobar"

Um die erste Zeile zu entfernen, hilft die Option +ignore:

emanuel@discordia:~
$ dig +ignore +short foo.wp.dg.cx TXT
"The term foobar, along with foo, bar, and baz, is a common
placeholder name (also referred to as a metasyntactic variable)
used in computer programming or computer-related documentation.
These four terms are used heavily in computer science to take the
pl" "ace of unknown values, typically while describing a scenario
where the purpose of the unknown values are understood, but...
http://a.vu/w:Foobar"

So ist die Ausgabe angenehmer zu lesen.

Automatisieren
Ich habe mir folgende Funkton in die Datei ~/.bashrc geschrieben, damit ich Wikipedia schnell aus der Konsole heraus abfragen kann:

wiki() {
  if [ -n "$1" ]
  then
    dig +ignore +short $1.wp.dg.cx TXT
  else
    echo Bitte einen Begriff angeben.
  fi
}

Wenn man eine neue Bash startet, wird diese Funktion geladen und sie kann verwendet werden:

emanuel@discordia:~
$ wiki foo
"The term foobar, along with foo, bar, and baz, is a common
placeholder name (also referred to as a metasyntactic variable)
used in computer programming or computer-related documentation.
These four terms are used heavily in computer science to take the
pl" "ace of unknown values, typically while describing a scenario
where the purpose of the unknown values are understood, but...
http://a.vu/w:Foobar"

Das ist doch praktisch!

5 thoughts on “Wikipedia-Einträge über DNS abfragen”

  1. Sehe den Sinn dahinter nicht ganz. Klar, es ist ein cooler Hack, aber warum genau soll man Websites per DNS abfragen können? Curl wär doch hier viel praktischer und zweckmässiger 🙂

  2. Finde die Idee auch super und sehr einfach.
    Folgende Gründe sprechen dafür:
    – Geht mit Boardmitteln
    – Ich kann Zoepfe widersprechen 😉

Leave a Comment