noqqe


blog | sammelsurium | projects | about

Bash | Futurama Zitate aus slashdot.org HTTP-Header auslesen

Bin heute morgen über ein Easter-Egg von Slashdot.org gestolpert. HTTP-Header:

$ curl -Is slashdot.org
HTTP/1.1 200 OK
Server: Apache/1.3.41 (Unix) mod_perl/1.31-rc4
SLASH_LOG_DATA: shtml
X-Powered-By: Slash 2.005001
**X-Fry: You'll barely regret this.**
X-XRDS-Location: http://slashdot.org/slashdot.xrds
Cache-Control: no-cache
[...]

Bei so ziemlich jeder Anfrage steht an der Stelle ein neues Zitat. Da ich sowieso total auf Futurama stehe, dachte ich mir ich baue die Zitate als Welcome-Message in meine Rechner ein:

$ curl -Is slashdot.org | sed -n '5p' | sed 's/^X-//'
Bender: OK, but I don't want anyone thinking we're robosexuals.
$ curl -Is slashdot.org | sed -n '5p' | sed 's/^X-//'
Fry: I can burp the alphabet. A, B, D ... no, wait ...

Wenn ich aber bei allen meinen Rechnern die Zeile einbinde, hat das irgendwie ein bisschen was von DOS-Attacke. Muss ja nicht sein. Mit einem Einzeiler hab ich mir die Quotes erstmal alle besorgt:

target="/path/to/file/018" ; while true ; do quote="$(curl -Is slashdot.org |sed -n '5p' |sed 's/^X-//')" ; if [ $(grep "$quote" $target |wc -l) -lt 1 ]; then echo $quote >> $target ; echo $quote ; sleep 1 ; fi ; done

Hier gibt’s alle Quotes die der Einzeiler bis jetzt gesammelt hat: /uploads/2009/09/018

Futurama Quotes beim Login unter Ubuntu:

$ wget /uploads/2009/09/018 -O  ~/.futurama
$ vi ~/.bashrc
quotes="$HOME/.futurama"
if [[ $- == *i* ]]; then
echo " "
rnd=$((RANDOM % $(cat $quotes | wc -l)+3)) ; sed -n "${rnd}p" $quotes
fi

Einloggen oder Shell starten sieht dann wie folgt aus:

$ ssh user@host
user@host password:
Linux host 2.6.32-22-generic #33-Ubuntu SMP Wed Apr 28 13:27:30 UTC 2010 i686 GNU/Linux
Ubuntu 10.04 LTS
[...]
You have new mail.
Bender: You can't count on God for jack! He pretty much told me so himself.
user@host:~$

Comments (4)

noqqe on 2010-09-26T17:08:49
Update1: bei Commandlinefu gibt es ebenfalls eine Reihe von Lösungen für die HTTP-Header Abfrage von slashdot.org: http://www.commandlinefu.com/commands/tagged/234/futurama Update2: Es scheint auch ein fortune-mod-paket zu geben, welches längere Zitate von Futurama enthält: http://www.netmeister.org/apps/fortune-mod-futurama-0.2.tar.gz

The Compiler on 2010-09-26T18:28:42
if [ $(grep "$quote" $target |wc -l) -lt 1 ]; then Das ist böööse :p Geht doch viel einfacher: if ! grep -q "$quote" "$target"; then

noqqe on 2010-09-26T19:05:35
@the compiler: ah sehr nice. quiet und nur den rückgabewert benutzen. awesome.

Christian D. on 2010-09-29T19:46:17
@toadie.de: Unschlagbar! Wer braucht schon Cowsay wenn das Bender übernehmen kann? ;-)))