Aktuellen Status twittern (CPU, RAM, Speicher): Unterschied zwischen den Versionen

Aus
(typo)
Zeile 20: Zeile 20:
== Skript installieren ==
== 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 <pre>/root/twitter.sh</pre> eingeben.
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 <pre>/root/twitter.sh</pre> 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:
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:
<pre>#!/bin/sh
<pre>#!/bin/sh
#Twitter-Skript von niklasR
#Twitter-Skript von niklasR

Version vom 20. April 2011, 11:15 Uhr

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_used=`/opt/bin/free | /bin/grep Mem: | /usr/bin/awk '{print $3}'`
ram_used=`/opt/bin/echo "scale=2; ${ram_used} /1024" | /opt/bin/bc -l`
percentage_used=`/opt/bin/echo "scale=2; ${ram_used} /(515660 /1024) *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/statuses/update.xml

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 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 einb Asterisk - * - eingetragen, außer bei who, da kommt der

root

rein, und beim command, da kommt der Pfad rein:

/root/twitter.sh

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