Skript: Website durchsuchen und Ergebnisse mailen lassen
Kürzlich haben wir gezeigt, wie Ihr Mails unter Windows still, also ohne Interaktion halb-/automatisch per Terminal oder Batch-Skript verschicken könnt. Und dazu gibt es nun ein ganz konkretes Beispiel - mit schlanken 5 Zeilen Skript: URL eingeben, Thema eingeben, Link-Liste per Mail bekommen. Natürlich könnt Ihr Euch auch alles mögliche andere mailen lassen - Facebook-Status-Änderungen, Fuppes-Ergebnisse, eigentlich alles.
Zutaten für das Skript
Der Ablauf ist im Grunde ganz einfach: Das fertige Skript wird gestartet und fragt erst nach einer Website (URL) und dann nach einem Thema (Suchwort). Dann lädt der Terminal-Webbrowser Lynx im Hintergrund die Website und gibt alle sichtbaren Links aus. Diese werden dann nach dem Thema gefiltert, noch ein wenig formatiert und in eine Textdatei übergeben. Und letztlich verschickt SwithMail eben den Inhalt dieser Textdatei.
Voraussetzung: Ihr benötigt einige "Linux-Werkzeuge" für Windows. Zum einen solltet Ihr die UnxUtils einrichten. Entpackt einfach das ZIP und fügt den Pfad zu den vielen EXE-Dateien (im Zip unter usr/local/wbin) zum Windows-Pfad hinzu (wie das geht, zeigen wir hier). Anschließend besorgt Ihr Euch Lynx, entpackt und fügt wieder den Pfad hinzu - oder Ihr entpackt es einfach gleich in den UnxUtils-Ordner. Anschließend habt Ihr einen riesen Haufen neuer Tools, die Ihr im Terminal nutzen könnt - und solltet!
Und hier schon mal das Endresultat:
Recherche mailen in 5 Zeilen
Hier erstmal das Skript, dann alles Schritt für Schritt
@echo off
set /p site="URL: " &
set /p topic="Thema " &
lynx -dump -listonly %site% | egrep %topic% | cut -c7- | sort | uniq > urlmailer.result &
SwithMail.exe /s /from "lang@example.com" /name "Mirco Lang" /u "ein-nutzername-123" /pass "ein-passwort-123" /server "smtp.example.com" /p "587" /to "peterpan@example.com" /sub "Nachrichten zu %topic% von %site%" /btxt "urlmailer.result"
Die ersten drei Zeilen können wir am Stück abfrühstücken: Zeile 1 verhindert, dass der Prompt nach jedem Befehl erneut angezeigt wird und per set werden die beiden Variablen für URL und Suchwort gesetzt. Das /p sorgt dafür, dass der Nutzer zur Eingabe passender Werte aufgefordert wird.
Die Lynx-Zeile ist schon etwas länger: Per -dump wird die Website abgerufen aber nicht in Lynx geöffnet, -listonly gibt nur die gefundenen Links zurück. Anschließend sucht egrep in den Links nach dem Suchwort, cut schneidet die ersten sieben Zeichen jeder Zeile ab (doofe Nummerierung), dann wird per sort alphabetisch sortiert, uniq wirft Dubletten raus und alles landet in der Textdatei urlmailer.result.
Die SwithMail-Zeile kennt Ihr bereits aus dem ersten Teil. Ihr seht aber zwei neue Dinge: Im /sub-Bereich wird der Betreff aus URL und Suchwort zusammengebaut und heißt dann beispielsweise "Nachrichten zu MERKEL von ARD.de". Und der Inhalt kommt nun nicht direkt ("/b "text blabla"), sondern via /btxt aus dem Inhalt der Textdatei urlmailer.result.
Es geht noch mehr - natürlich
Das Szenario ist natürlich recht speziell. Nützlich etwa, wenn Ihr in der Bibliothek im Online-Katalog recherchiert, der Laden gleich schließt und Ihr noch schnell die Buch-Links nach Hause schaffen wollt. Vor allem könnt Ihr mit den hier gezeigten Tools auch richtig kreativ werden.
So lassen sich etwa auch alle fixen Werte durch Variablen ersetzen. Wenn Ihr überall eine Definition mit Nutzerabfrage (der p-Schalter) aufsetzt, habt Ihr einen kompletten manuellen Mail-Versender für die Kommandozeile. Absender, Betreff und Inhalt dürfen natürlich auch gleich aus Quellen wie Log-Dateien, Skript- oder Programm-Ausgaben generiert werden. Und über die Windows-Aufgabenplanung ließen sich solche Berichts-Mails gleich regelmäßig verschicken. Oder Ihr ergänzt vorhandene Skripte aus beliebigen Bereichen mit einer Mail-Benachrichtigung - allein schon dafür ist SwithMail ein nettes Spielzeug ;)
P.S.: Perfekt ist das ganze natürlich nicht. Man könnte sauberer skripten und die dump-Funktion macht Ärger mit TLS-Verbindungen, aber es soll Euch ja hauptsächlich als Einstiegspunkt für eigene Skripte und Ideen dienen.