Aktuellen Status twittern (CPU, RAM, Speicher)

Aus Synology Wiki
Wechseln zu: Navigation, Suche

Vorweg: Ich habe itaris Admin-Tool benutzt für die Bearbeitungen, und werde die Schritte auch alle so beschreiben. IPKG ist auch Pflicht, um das Skript unverändert ausführen zu können, bzw die Pakete, die dafür notwendig sind, ausführen zu können

Also, wir wollen die DiskStation alle zwei Minuten die aktuelle CPU-Auslastung, RAM-Verbrauch und Speicherplatzbelegung sowie die Uptime (d.h. wie lange sie läuft) und die aktuelle Zeit twittern.

Twitter einrichten

Dafür brauch sie erstmal einen twitter-Account, also bei twitter.com einen anlegen.

Ich beschreibe jetzt die einfachere Variante ohne oAuth im Skript; dafür wird ein weiterer Anbieter benutzt, der die API-Anfragen per curl an twitter weiterleitet und posted.

Also muss man sich den Anbieter bei twitter noch freischalten, wie ein x-beliebiger Twitter-Client am iPhone oder andere Twitter-Apps. Diese Erlaubnis kann in den Twitter-Einstellungen jederzeit zurückgenommen werden.

Also, während man bei twitter mit dem Account des NAS eingeloggt ist, geht man zu supertweet.net, und klickt rechts oben auf den "Sign in with twitter"-Button und im nächstenSchritt auf "Erlauben". Anschließend sieht man bei SuperTweet.Net seinen Benutzernamen, das Secret als "Not Set", und den Status Inactive. Da klickt man auf "Activate", und legt ein Passwort für SuperTweet.Net fest. Das wird das Passwort, das später im Skript eingetragen wird, und mit dem sich die DS bei SuperTweet.Net authentifiziert. Das wars soweit.

DiskStation vorbereiten

Erstmal brauchen wir ein paar Pakete, die man flugs per ipkg installiert:

ipkg update
ipkg install bc libcurl procps

Skript installieren

Jetzt wird das Admin-Tool geöffnet. Links unter Tools wird der Explorer geöffnet. Wo wir das Skript speichern ist relativ egal, nehmen wir mal den Ordner root . Also, Per Rechtsklick auf den Ordner root und den Befehl new file den Dateinamen
/root/twitter.sh
eingeben.

Dann wählen wir die Datei twitter.sh aus, und klicken im rechten Teil des Explorers den Editor an, und fügen das vorher kopierte Skript ein:

#!/bin/sh
#Twitter-Skript von niklasR

#CPU-Auslastung in $cpu schreiben
cpu=`/opt/bin/top -b -n1 | /bin/grep Cpu | /opt/bin/cut -c 9-12`

#RAM anhängen
ram_total=`/opt/bin/free -m | /bin/grep Mem: | /usr/bin/awk '{print $2}'`
ram_used=`/opt/bin/free -m | /bin/grep cache: | /usr/bin/awk '{print $3}'`
percentage_used=`/opt/bin/echo "scale=2; ${ram_used} /${ram_total} *100" | /opt/bin/bc -l`


#Uptime
uptime=`/opt/bin/uptime | /usr/bin/awk '{print $3}'`

#Speicher
size=`/opt/bin/df -h | /bin/grep /opt | /usr/bin/awk '{print $1}'`
used=`/opt/bin/df -h | /bin/grep /opt | /usr/bin/awk '{print $2}'`
used_percentage=`/opt/bin/df -h | /bin/grep /opt | /usr/bin/awk '{print $4}'`
available=`/opt/bin/df -h | /bin/grep /opt | /usr/bin/awk '{print $3}'`

#Nachricht zusammenstellen
msg="CPU: ${cpu}%; RAM: ${ram_used}MB (${percentage_used}%); Von ${size}B ${used}B (${used_percentage}) benutzt (${available}B frei); Uptime: ${uptime} `date`"
#Sonderzeichen umwandeln
/opt/bin/echo $msg | /bin/sed -e 's/%/%25/g' -e 's/ /%20/g' -e 's/!/%21/g' -e 's/"/%22/g' -e 's/#/%23/g' -e 's/\$/%24/g' -e 's/\&/%26/g' -e 's/'\''/%27/g' -e 's/(/%28/g' -e 's/)/%29/g' -e 's/\*/%2a/g' -e 's/+/%2b/g' -e 's/,/%2c/g' -e 's/-/%2d/g' -e 's/\./%2e/g' -e 's/\//%2f/g' -e 's/:/%3a/g' -e 's/;/%3b/g' -e 's//%3e/g' -e 's/?/%3f/g' -e 's/@/%40/g' -e 's/\[/%5b/g' -e 's/\\/%5c/g' -e 's/\]/%5d/g' -e 's/\^/%5e/g' -e 's/_/%5f/g' -e 's/`/%60/g' -e 's/{/%7b/g' -e 's/|/%7c/g' -e 's/}/%7d/g' -e 's/~/%7e/g' > /tmp/IdL_status
msg=`/opt/bin/cat /tmp/IdL_status`

#Posten
/opt/bin/curl -u benutzername:passwort -d "status=${msg}" http://api.supertweet.net/1.1/statuses/update.json

Da müssen dann nur noch benutzername und passwort in der letzten Zeile angepasst werden. Vorsicht: Als Passwort das von SuperTweet.Net benutzen, nicht das von twitter! Jetzt müssen wir das Skript noch auführbar machen, dafür am einfachsten Rechtklick auf die Datei im Explorer im AdminTool und unter change file attributes chmod /root/twitter.sh auswählen, und 775 eingeben, per OK bestätigen.

Alternativ kann man das auch per ssh machen, einfach einloggen, und
chmod 775 /root/twitter.sh
oder im AdminTool auf der Shell, dafür unter Tools die Shell (bash) auswählen und dasselbe eingeben.

Skript testen

(nicht zwingend erfoderlich)

Wahlweise per ssh einloggen, oder im AdminTool unter Tools die Shell (bash) auswählen. Eingabe ist:
/root/twitter.sh
und mit Enter abschicken. Nach einigen Sekunden sollte eine Menge Text erscheinen, und der Status getwittert sein. Wenn das so ist (einfach bei twitter.com/benutzername überprüfen), kann die DS zum automatisch ausführen jede Minuten eingerichtet werden:

Skript automatisch ausführen

Dazu tragen wir den Pfad zum Skript in der crontab ein. Mit dem AdminTool geht auch das sehr einfach, unter System (erster Eintrag links oben) findet man den cron. Öffnen. Unten in dem Fenster findet man /etc/crontab, per Klick öffnen. Jetzt sollte man eine Tabelle sehen mit den Feldern #, minute, hour, mday, month, wday, who und command. Bei Bedarf eine neue Zeile einfügen per klick auf das +: Add Line.

Um jede Minute zu twittern wird überall ein Asterisk - * - eingetragen, außer bei who, da kommt der
root
rein, und beim command, da kommt der Pfad rein:
/root/twitter.sh

Jetzt noch per Klick auf Save & Restart crond speichern, und fertig!