Von sich aus unterstützt Meteohub, das unsere Wetter-Webseite mit den Daten unserer Wetterstation versorgt, nur das FTP Protokoll, um die Daten auf den Webserver zu schieben. Neben der Tatsache, daß FTP ein unverschlüsseltes Protokoll ist, was heute ein Anachronismus sein sollte, bieten viele Webhoster heute auch nur noch verschlüsselte Uploadmethoden an.

Letzteres gilt auch für mein kürzlich umgestelltes Webspace-Paket, in dem die Wetterseite untergebracht ist. Zwar habe ich noch eine Möglichkeit, unverschlüsseltes FTP zu nutzen, aber erstens ist das unverschlüsselt (siehe oben), zweitens fehleranfällig, dazu auch noch häßlich und zwei Webspace Pakete brauche ich eigentlich auch nicht.

Also habe ich mir überlegt, ob ich auf meinem Meteohub Server nicht auch SFTP verwenden könnte und siehe da, ich habe eine funktionierende Lösung gefunden. Im Prinzip bringt Meteohub – mit Ausnahme eines kleinen Softwarepaketes – schon alles mit, was wir brauchen.

SFTP ist nämlich in der Meteohub-Installation durchaus vorhanden, die einzige Schwierigkeit für mich war, daß ich mein Webspace-Paket nur mit der SFTP-password Methode erreiche, nicht aber zum Beispiel, indem ich den öffentlichen Schlüssel des Meteohub-Benutzers hinterlege.

Für dieses Problem gibt es aber eine Lösung: sshpass erlaubt, das Passwort an das SFTP Kommando zu übergeben, so daß man SFTP aus der crontab heraus aufrufen kann.

Allerdings ist das Paket sshpass nicht nativ in Meteohub enthalten, deshalb installieren wir es zunächst:

$ sudo apt-get install sshpass

Damit das Paßwort für unseren Webspace nicht irgendwo in der Kommandozeile steht, hinterlegen wir es in einer Datei, die nur für den root Benutzer (der die crontab ausführt) lesbar ist:

$ sudo vi /root/webspace.txt
$ sudo chmod 600 /root/webspace.txt

Achtung! Das Paßwort steht immer noch im Klartext in dieser Datei. Wer also Zugang zum root Benutzer Eures Meteohub Servers hat, kann das Paßwort auch lesen – der Server sollte also entsprechend gesichert sein, so wie selbstverständlich auch das Paßwort Eures Webspace-SFTP-Benutzers möglichst lang und komplex ausfallen (und nach Möglichkeit regelmäßig gewechselt werden) sollte.

Leider ist SFTP nicht so schön scriptfähig wie ncftpput, sondern eigentlich zum interaktiven Einsatz gedacht. Deswegen legen wir eine Batch Datei mit den notwendigen FTP Kommandos an, die die generierten Daten in ihr Zielverzeichnis übertragen:

$ sudo vi /root/webspace.batch

Diese Datei sieht bei mir wie folgt aus:

cd /path/to/your/destination/dir
mput /var/run/meteohub/uploads/*
bye

Das einzige, was jetzt noch fehlt, ist der crontab Eintrag. Ihr editiert die Crontab des root Benutzers mit

sudo crontab -e

Den oberen Eintrag, den ich auskommentiert habe, hatte ich in Meteohub über das Webinterface für die unverschlüsselte FTP Verbindung angelegt – beachtet dabei das FTP-Paßwort im Klartext. Den zweiten Eintrag habe ich manuell eingetragen, er nutzt unsere Paßwort- und die Batch-Datei, um die von Meteohub generierten Daten in den SFTP Webspace zu laden:

#*/1 * * * *    sleep 20; [ -z "`ls /var/run/meteohub/uploads/`" ] || [ -n "`/bin/pidof /usr/bin/ncftpput`" ] || /usr/bin/ncftpput -S .tmp -R -V -DD -u "user@your_ftp_webspace.tld" -p 'your_ftp_password' -P 21 ftp.your_ftp_host.tld . /var/run/meteohub/uploads/* 2>&1 | /usr/bin/logger
*/1 * * * *     sleep 20; [ -z "`ls /var/run/meteohub/uploads/`" ] || [ -n "`/bin/pidof /usr/bin/sshpass`" ] || /usr/bin/sshpass -f /root/webspace.txt /usr/bin/sftp -oBatchMode=no -b /root/webspace.batch your_sftp_user@your_sftp_host.tld 2>&1 > /dev/null

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Ich akzeptiere