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:
$ 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:
$ 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:
$ 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:
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:
$ 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!
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 🙂
Natürlich geht das mit Curl besser. Ich finde es einfach toll, dass das möglich ist und das jemand so einen DNS-Server eingerichtet hat.
telnet ist mir immer noch lieber
Finde die Idee auch super und sehr einfach.
Folgende Gründe sprechen dafür:
– Geht mit Boardmitteln
– Ich kann Zoepfe widersprechen 😉
go on never give up, you’re on the right track.