Springe zum Hauptinhalt

Ein ganz spezielles Stellenangebot

Wer einen Job sucht, der wird wahrscheinlich die Wochenendausgabe seiner Tageszeitung oder ein entsprechendes Internetportal durchsuchen. Und so halten es dann auch die Unternehmen mit ihren Stellenangeboten. Sie platzieren sie dort, wo die meisten Bewerber zu vermuten sind.

Oft geht es aber bei einer Stellenauschreibung nicht um die Masse der Bewerbungen, sondern darum, den einen Bewerber unter vielen zu finden. Das gilt insbesondere, wenn es um spezielle Fähigkeiten geht, die das Unternehmen braucht. Also z. B. dann, wenn man einen Hacker (im ursprünglichen Wortsinn) sucht.

Dabei gehen manche Unternehmen interessante Wege. Hier nun die Geschichte, wie ich beim Schreiben eines Shellscripts auf ein verstecktes Stellenangebot stieß.

Dazu muss ich allerdings etwas ausholen:

Das Internet ist ein höchst dynamisches Medium und so wundert es nicht, dass Bookmarks schnell veraltet sind. Als ich kürzlich einen prüfenden Blick auf meine Bookmark-Sammlung warf, fielen mir ein paar Links auf, die nicht mehr aktuell schienen. Der erste Impuls war es, die Links im Browser auf Gültigkeit zu prüfen. Der Umfang der Bookmark-Sammlung sprach aber dagegen. Das Zauberwort zum Aufspüren der Karteileichen hieß also Automation.

Wenn es um die automatisierte Interaktion mit Webservern geht, kommen dem geübten Shell-Nutzer schnell die Tools wget oder curl in den Sinn.

wget hat zwar die Option --input-file, mit der man die Links Zeile für Zeile aus einer Eingabedatei lesen kann, aber curl hat dafür die Option --head, die einem auf die Schnelle lediglich den HTTP-Header zurückliefert. Und die Verarbeitung der Eingabedatei lässt sich ja mit ein paar Anweisungen in der Shell auch erreichen.

Der erste Schritt war also folgender Einzeiler direkt in der Shell:

while read link; do curl --head $link; done < links.lst

Die Ergebnisse liefen ziemlich schnell über den Bildschirm und das Auge blieb lediglich an den überlangen Zeilen kurz hängen. An einer Stelle musste ich die Ausgabe dann allerdings anhalten.

HTTP/1.1 200 OK
Server: nginx
Date: Sat, 05 Nov 2016 10:57:56 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
Vary: Cookie
X-hacker: If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.
Set-Cookie: wordpress_test_cookie=WP+Cookie+check; path=/
Link: <http://wp.me/Pk3lN-zCj>; rel=shortlink
X-ac: 4.fra _dfw

Die Firma Automattic Inc. sucht (unter anderem) auf diese eher ungewöhnliche Art nach neuen Mitarbeitern. Aber wer sich unter Bezugnahme auf diesen HTTP-Header dort bewirbt, der zeigt eben auch, dass er kein Durchschnittsbewerber ist.

Der HTTP-Header kommt übrigens von der sehr lesenswerten Seite Hackaday, die sich hinter der Adresse http://wp.me/Pk3lN-zCj im obigen Link-Feld verbirgt.

Den obigen Einzeiler habe ich noch geringfügig erweitert und in einem Shellscript verpackt, damit ich meine Bookmark-Sammlung künftig regelmäßig überprüfen kann. Getreu dem Motto: Ein guter Programmierer ist ein fauler Programmierer!

#!/bin/bash

# Check links from inputfile for 4xx/5xx HTTP status code

while read link
do
  echo -n -e "$link\t"
  curl --silent --head $link | head --lines=1 | cut --delimiter=" " --field=2
done < $1 | grep --extended-regexp '[45][0-9]{2}'