Statusmail von der Diskstation

Status
Für weitere Antworten geschlossen.

maze128

Benutzer
Mitglied seit
03. Jan 2010
Beiträge
227
Punkte für Reaktionen
0
Punkte
16
Hallo zusammen,

ich habe mich heute mal ein wenig damit beschäftigt mit meiner DS410j einige Statusmeldungen per E-Mail verschicken zu lassen.

Ich habe früher prowl dafür genutzt, da dies aber nicht mit Android funktioniert und ich das ganze lieber per E-Mail haben möchte, hier mal mein Ergebnis:

Die DS verschickt nun 1x pro Tag eine Statusmail:

Status der Diskstation vom 02.10.10 (15:21):
--------------------------------------------

[Speicherplatz in TB]
Groesse Datentraeger: 5.4T
Freier Speicher: 1.1T
Belegter Speicher: 4.3T (81%)

[Datentraeger]
Volume 1: 40 Grad, 2339 Stunden Laufzeit
Volume 2: 42 Grad, 2331 Stunden Laufzeit
Volume 3: 42 Grad, 2487 Stunden Laufzeit
Volume 4: 41 Grad, 2330 Stunden Laufzeit

[IP]
Externe IP: 12.34.56.78

[Uptime]
Uptime: 14:00:52 up 1:20, 1 user, load average: 0.34, 0.13, 0.07

Um dies zu erreichen sind folgende Dinge als Voraussetzung nötig:

1. ipkg installieren
2. nail installieren (sehr einfach und gut erklärt)
3. eventuell procps installieren

procps wird für den Befehl uptime benötigt, für die Installation einfach in der Konsole "ipkg install procps" eingeben.

Für das Versenden der E-Mails habe ich für die DS extra einen Account bei web.de angelegt und mit folgender Konfiguration in der nail.rc betrieben
(ich habe die Datei mit dem Editor aus itaris AdminTool editiert, funktioniert super!):

set smtp-auth=login
set smtp=smtp.web.de
set pop=pop3.web.de
set from=BENUTZER@web.de
set smtp-auth-user=BENUTZER@web.de
set smtp-auth-password=PASSWORT

Ich habe dann ein Script erstellt welches ich unter /usr/bin abgelegt habe (der Pfad ist relativ egal). Dieses wird 1x täglich per Cron gestartet:


Rich (BBCode):
#!/bin/sh
LOGFILE=/var/log/shutdown.log
echo 6 > /dev/ttyS1
echo 7 > /dev/ttyS1
hours1=`/usr/syno/bin/smartctl -A /dev/hda | /bin/grep Power_On_Hours | /usr/bin/awk '{print $10}'`                                                                                                                                                                             
hours2=`/usr/syno/bin/smartctl -A /dev/hdb | /bin/grep Power_On_Hours | /usr/bin/awk '{print $10}'` 
hours3=`/usr/syno/bin/smartctl -A /dev/hdc | /bin/grep Power_On_Hours | /usr/bin/awk '{print $10}'` 
hours4=`/usr/syno/bin/smartctl -A /dev/hdd | /bin/grep Power_On_Hours | /usr/bin/awk '{print $10}'` 
temperatur1=`/usr/syno/bin/smartctl -A /dev/hda | /bin/grep Temperature_Celsius | /usr/bin/awk '{print $10}'`
temperatur2=`/usr/syno/bin/smartctl -A /dev/hdb | /bin/grep Temperature_Celsius | /usr/bin/awk '{print $10}'`                                                                                                                                                                          
temperatur3=`/usr/syno/bin/smartctl -A /dev/hdc | /bin/grep Temperature_Celsius | /usr/bin/awk '{print $10}'`
temperatur4=`/usr/syno/bin/smartctl -A /dev/hdd | /bin/grep Temperature_Celsius | /usr/bin/awk '{print $10}'`
filesystem1=`df -h | grep /opt | awk '{print $6}'`                                                                                                                                                                                                                            
size1=`df -h | grep /opt | awk '{print $2}'`                                                                                                                                                                                                                                  
used1=`df -h | grep /opt | awk '{print $3}'`                                                                                                                                                                                                                                  
available1=`df -h | grep /opt | awk '{print $4}'`                                                                                                                                                                                                                             
percent1=`df -h | grep /opt | awk '{print $5}'`                                                                                                                                                                                                                               
datum=`date +"%d.%m.%y`
zeit=`date +"%H:%M`
up_time=`/opt/bin/uptime`
log() {
        echo `date +%c`: $1 >> $LOGFILE
}
/usr/syno/sbin/ddnsd -e
. /tmp/externalIP.result
IP=$externalIP                                                                                                                                                                                                                                                         
log "Temperatur 1: $temperatur1 °C, Temperatur 2: $temperatur2 °C, Temperatur 3: $temperatur3 °C, Temperatur 4: $temperatur4 °C, IP: $IP"
nachricht="Status der Diskstation vom $datum ($zeit): 
--------------------------------------------

[Speicherplatz in TB]
Groesse Datentraeger: $size1
Freier Speicher: $available1 
Belegter Speicher: $used1 ($percent1)

[Datentraeger]
Volume 1: $temperatur1 Grad, $hours1 Stunden Laufzeit
Volume 2: $temperatur2 Grad, $hours2 Stunden Laufzeit
Volume 3: $temperatur3 Grad, $hours3 Stunden Laufzeit
Volume 4: $temperatur4 Grad, $hours4 Stunden Laufzeit

[IP]
Externe IP: $IP

[Uptime]
Uptime: $up_time

"
echo "$nachricht" | /opt/bin/nail -s "Status Diskstation" ZIELUSER@PROVIDER.de


In diesem Script sind noch einige Dinge vereint, zum einen eine LOG-Datei für die Temperatur und das Ausschalten einiger LEDs an der DS.

Die Nachricht könnt ihr noch nach Belieben anpassen, allerdings funktionieren nur folgende Zeichen:

LEERZEICHEN ?!"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz{|}~


Vielleicht hilft es ja dem ein oder anderen weiter oder irgendwer hat Lust was draus zu basteln.
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Super! :) Kannst das bei Gelegenheit in unser Wiki kopieren? Danke schon mal jetzt.

Itari
 

maze128

Benutzer
Mitglied seit
03. Jan 2010
Beiträge
227
Punkte für Reaktionen
0
Punkte
16
Hi,

ja werd ich die Tage mal machen, vielleicht werde ich noch ein wenig warten ob jemand noch was beizutragen hat. Man kann diese Möglichkeit ja für ziemlich viele Dinge nutzen, egal ob Statusmail, Fehlermail, automatisches Versenden von LOGs, etc. Die Möglichkeiten sind da ja fast unbegrenzt :p
 

raymond

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
4.704
Punkte für Reaktionen
21
Punkte
118
Ich habe die wiki Seite mal etwas erweitert. Schaut mal rein und helft mit dieses weiter auszubauen.
 
Zuletzt bearbeitet:

Falco2

Benutzer
Mitglied seit
21. Okt 2010
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
hm...

bei mir kam: uptime: couldn't get boot time: No such file or directory

mal kurz geschaut und das hier gefunden...

Laut Tread muss man mit ls -l /opt/bin/uptime den symbolichen Link neu setzen. Habe ich auch gemacht... Nix passiert, selber Fehler !

Dann wird noch empfohlen mit ipkg install procps das zu installieren. Getan und uptime geht !!!!!

ABER !

Jetzt geht CPU-Auslastung nicht mehr :confused:
Meldung
in der Mail: CPU-Auslastung: VIRT
auf der Konsole: Unknown HZ value! (93) Assume 100.

Jemand ne Idee ?

Nachtrag !
Temperaturen werden auch nicht mehr angezeigt :-(
 
Zuletzt bearbeitet:

raymond

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
4.704
Punkte für Reaktionen
21
Punkte
118
Auf die Beta habe ich noch keine Lust. Ich schaue mir das genau mit der final an. Ich habe es ja mit "top -n1 | grep -m 1 CPU | awk '{print $6}'" gemacht.
Wenn du das in der Console eingibst kommt auch die Fehlermeldung?
Und wenn du die einzelnen Programme: top, grep und awk durchprobierst? Gehen diese einzeln?
 

Falco2

Benutzer
Mitglied seit
21. Okt 2010
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Auf die Beta habe ich noch keine Lust. Ich schaue mir das genau mit der final an. Ich habe es ja mit "top -n1 | grep -m 1 CPU | awk '{print $6}'" gemacht.
Wenn du das in der Console eingibst kommt auch die Fehlermeldung?
Und wenn du die einzelnen Programme: top, grep und awk durchprobierst? Gehen diese einzeln?

Ich habe gerade probiert das mit top -n1 | grep -m 1 Cpu die CPU angezeigt wird.

Wenn ich dann den Script starte kommen keine Fehler mehr in der Konsole, aber es wird ne bin Datei an die Mail angehangen statt den Text IN die Mail zu schreiben :confused:

Jetzt erst mal ein ipkg remove procps um wenigstens den alten Zustand wieder herzustellen...

Removing package procps from root...
update-alternatives: removing //opt/bin/free as no more alternatives exist for it
update-alternatives: Linking //opt/bin/kill to coreutils-kill
update-alternatives: removing //opt/bin/ps as no more alternatives exist for it
update-alternatives: removing //opt/bin/top as no more alternatives exist for it
update-alternatives: Linking //opt/bin/uptime to coreutils-uptime
update-alternatives: removing //opt/bin/watch as no more alternatives exist for it
Successfully terminated.

Danach....
ein uptime bringt: uptime: couldn't get boot time: No such file or directory
ein coreutils-uptime bringt: coreutils-uptime: couldn't get boot time: No such file or directory
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Existiert die Datei /var/run/utmp?

Itari
 

Falco2

Benutzer
Mitglied seit
21. Okt 2010
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Existiert die Datei /var/run/utmp?

Itari

Ja existiert.

Was mich aber auch wundert. Die CPU kommt in der Mail mit 0% daher.....
Online auf der Konsole:
top -n1 | grep -m 1 CPU
CPU: 28.5% usr 50.0% sys 0.0% nic 0.0% idle 14.2% io 0.0% irq 7.1% sirq
 

Falco2

Benutzer
Mitglied seit
21. Okt 2010
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Uptime geht auf einmal wieder (und ganz ehrlich ich habe nix gemacht !!!) ;-)

Aber CPU ist noch bei 0%....

Aber egal. Die Anzeige reicht mir so. Ich nehme die CPU einfach aus dem Script raus !

PS: Danke noch mal für das Script !
 

maze128

Benutzer
Mitglied seit
03. Jan 2010
Beiträge
227
Punkte für Reaktionen
0
Punkte
16
in der Mail: CPU-Auslastung: VIRT
auf der Konsole: Unknown HZ value! (93) Assume 100.

Jemand ne Idee ?

Nachtrag !
Temperaturen werden auch nicht mehr angezeigt :-(

Dieses Problem habe/hatte ich auch.
Tritt sporadisch mal auf, ich habe schon alles probiert, auch System komplett neu aufgesetzt. Aber ich habe ehrlich gesagt keine Ahnung woran es liegt.

Sehr seltsam....
 

Marshall_75

Benutzer
Mitglied seit
28. Okt 2007
Beiträge
37
Punkte für Reaktionen
0
Punkte
0
hallo,
habe grad auch mal das script ausporbiert.

bei mir kam: uptime: couldn't get boot time: No such file or directory
kam bei mir auch. hatte es aber vorher über die shell mal probiert, da hat es funktioniert. danach hatte ich aber noch die coreutils installiert. mit coreutils-uptime kam die gleiche meldung. also coreutils wieder gelöscht.
und uptime funktioniert auch wieder. ;)

so weit so gut... hab aber noch zwei kleinere probleme:
1. bei mir werden die Daten der Festplatte nicht ausgegeben.
[Speicherplatz in TB]
Groesse Datentraeger:
Freier Speicher:
Belegter Speicher: ()

Hat jemand eine Idee? ich muss dazu sagen, das ich das script noch so weit angepasst, dass ich die Abfragen für Volume 2-4 gelöscht habe. Da ich ja nur eine HD in meiner DS106 habe. Hat vorher aber auch nicht funktioniert.

2. wenn ich den script von der shell aus starte, kommt folgenden meldung.
warning: incomplete line - newline appended

Woran kann das liegen? kenne mich mit scripten leider nicht wirkich gut aus.
Ist ja anscheinend nur eine Warnmeldung, da das script ja ausgeführt wird, ich bekomme auch eine mail.

grüße,
 

Marshall_75

Benutzer
Mitglied seit
28. Okt 2007
Beiträge
37
Punkte für Reaktionen
0
Punkte
0
hat denn niemand eine idee, warum die festplatten daten nicht ausgelesen werden ??? :-(
 

QTip

Super-Moderator
Teammitglied
Mitglied seit
04. Sep 2008
Beiträge
2.341
Punkte für Reaktionen
13
Punkte
84
...
so weit so gut... hab aber noch zwei kleinere probleme:
1. bei mir werden die Daten der Festplatte nicht ausgegeben.


Hat jemand eine Idee? ich muss dazu sagen, das ich das script noch so weit angepasst, dass ich die Abfragen für Volume 2-4 gelöscht habe. Da ich ja nur eine HD in meiner DS106 habe. Hat vorher aber auch nicht funktioniert.

2. wenn ich den script von der shell aus starte, kommt folgenden meldung.


Woran kann das liegen? kenne mich mit scripten leider nicht wirkich gut aus.
Ist ja anscheinend nur eine Warnmeldung, da das script ja ausgeführt wird, ich bekomme auch eine mail.

grüße,
Überprüfe mal alle ´ ` und ', eins zu viel oder zu wenig kann der Grund dafür sein. Ich glaube die Meldung kommt vom awk, also schau mal in diese Zeilen und vergleiche mit dem Original.
 

Marshall_75

Benutzer
Mitglied seit
28. Okt 2007
Beiträge
37
Punkte für Reaktionen
0
Punkte
0
also daran lag es nicht!

weil der eigentliche Befehl auf der Shell ja funktioniert hat, habe ich einfach mal folgendes ausprobiert.
Rich (BBCode):
filesystem1=`df -h | grep /dev/hda3 | awk '{print $6}'`
size1=`df -h | grep /dev/hda3 | awk '{print $2}'`
used1=`df -h | grep /dev/hda3 | awk '{print $3}'`
available1=`df -h | grep /dev/hda3 | awk '{print $4}'`
percent1=`df -h | grep /dev/hda3 | awk '{print $5}'`

und siehe da es funktioniert. :D

kann mir jemand erkären, warum in dem original script
Rich (BBCode):
df -h | grep /opt
steht ???

die warning Meldung kommt zwar immer noch, stört aber nicht weiter.
vermute aber das diese meldung eher von Nail kommt.

grüße,
 

sonicwave3

Benutzer
Mitglied seit
12. Mrz 2011
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
hallo jungs,

das script funktioniert super
bin mir nur nicht sicher ob das so richtig ist

bei mir erzeugt das script ein attachment (reiner text)
in diesem text steht die nachricht welche eigentlich als nachricht im mailprogramm angezeigt werden sollte oder?!
 

maze128

Benutzer
Mitglied seit
03. Jan 2010
Beiträge
227
Punkte für Reaktionen
0
Punkte
16
Eigentlich schon, hast du das genau so geschrieben??

Rich (BBCode):
echo "$nachricht" | /opt/bin/nail -s "Status Diskstation" ZIELUSER@PROVIDER.de
 

sonicwave3

Benutzer
Mitglied seit
12. Mrz 2011
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
genau so
habe gemerkt das es nur auftritt sobald ich eine variable nach dem echo einfüge
also $nachricht, ohne die variable, praktisch nur mit text funktioniert es wunderbar

edit: habs... unix line endings
 
Zuletzt bearbeitet:

donkhan

Benutzer
Mitglied seit
22. Mai 2011
Beiträge
202
Punkte für Reaktionen
0
Punkte
16
Ich habe eine 151++, ich habe aber das Problem, das bei mir nicht der Belegte, und der freie Speicherplatz angezeigt wird.

#!/bin/sh
LOGFILE=/var/log/shutdown.log
model=`dmesg | grep -m 1 Model | awk '{print $4}'`
netstat=`netstat -tu`
eth0_rx=`ifconfig eth0 | grep "bytes" | awk '{print $1 " " $2 " " $3 " " $4}'`
eth0_tx=`ifconfig eth0 | grep "bytes" | awk '{print $5 " " $6 " " $7 " " $8}'`
hostname=`hostname`
hours1=`/usr/syno/bin/smartctl -A /dev/hda | /bin/grep Power_On_Hours | /usr/bin/awk '{print $10}'`
hours2=`/usr/syno/bin/smartctl -A /dev/hdb | /bin/grep Power_On_Hours | /usr/bin/awk '{print $10}'`
hours3=`/usr/syno/bin/smartctl -A /dev/hdc | /bin/grep Power_On_Hours | /usr/bin/awk '{print $10}'`
hours4=`/usr/syno/bin/smartctl -A /dev/hdd | /bin/grep Power_On_Hours | /usr/bin/awk '{print $10}'`
hours5=`/usr/syno/bin/smartctl -A /dev/hde | /bin/grep Power_On_Hours | /usr/bin/awk '{print $10}'`
temperatur1=`/usr/syno/bin/smartctl -A /dev/hda | /bin/grep Temperature_Celsius | /usr/bin/awk '{print $10}'`
temperatur2=`/usr/syno/bin/smartctl -A /dev/hdb | /bin/grep Temperature_Celsius | /usr/bin/awk '{print $10}'`
temperatur3=`/usr/syno/bin/smartctl -A /dev/hdc | /bin/grep Temperature_Celsius | /usr/bin/awk '{print $10}'`
temperatur4=`/usr/syno/bin/smartctl -A /dev/hdd | /bin/grep Temperature_Celsius | /usr/bin/awk '{print $10}'`
temperatur5=`/usr/syno/bin/smartctl -A /dev/hde | /bin/grep Temperature_Celsius | /usr/bin/awk '{print $10}'`
filesystem1=`df -h | grep /opt | awk '{print $6}'`
size1=`df -h | grep /opt | awk '{print $2}'`
used1=`df -h | grep /opt | awk '{print $3}'`
available1=`df -h | grep /opt | awk '{print $4}'`
percent1=`df -h | grep /opt | awk '{print $5}'`
datum=`date +"%d.%m.%y`
zeit=`date +"%H:%M`
up_time=`uptime`
cpu_auslastung=`top -n1 | grep -m 1 CPU | awk '{print $6}'`
log() {
echo `date +%c`: $1 >> $LOGFILE
}
/usr/syno/sbin/ddnsd -e
. /tmp/externalIP.result
IP=$externalIP
log "Temperatur 1: $temperatur1 ?C, Temperatur 2: $temperatur2 ?C, Temperatur 3: $temperatur3 ?C,
Temperatur 4: $temperatur4 ?C, Temperatur 5: $temperatur5 ?C, IP: $IP"

nachricht="Status der $hostname ($model) vom $datum ($zeit):
----------------------------------------------

[Speicherplatz in TB]
Groesse Datentraeger: $size1
Freier Speicher: $available1
Belegter Speicher: $used1 ($percent1)

[Datentraeger]
Volume 1: $temperatur1 Grad Celsius, $hours1 Stunden Laufzeit
Volume 2: $temperatur2 Grad Celsius, $hours2 Stunden Laufzeit
Volume 3: $temperatur3 Grad Celsius, $hours3 Stunden Laufzeit
Volume 4: $temperatur4 Grad Celsius, $hours4 Stunden Laufzeit
Volume 5: $temperatur5 Grad Celsius, $hours5 Stunden Laufzeit

[IP]
Externe IP: $IP

[Aktuelle Netzwerkverbindungen]
$netstat

[Netzwerkstatistik eth0]
$eth0_rx
$eth0_tx

[Uptime]
Uptime: $up_time
CPU-Auslastung: $cpu_auslastung

"
echo "$nachricht" | /opt/bin/nail -s "EMAIL-BETREFF" xxxxxx@xxx.de

und das bekomme ich als Email.

Status der Diskstation (DS-1511+) vom 24.07.11 (17:15):
----------------------------------------------

[Speicherplatz in TB]
Groesse Datentraeger:
Freier Speicher:
Belegter Speicher: ()

[Datentraeger]
Volume 1: 32 Grad Celsius, 2301 Stunden Laufzeit
Volume 2: 32 Grad Celsius, 2301 Stunden Laufzeit
Volume 3: 33 Grad Celsius, 2303 Stunden Laufzeit
Volume 4: 34 Grad Celsius, 1519 Stunden Laufzeit

[IP]
Externe IP: 79.24.xxxxx.xxx

[Aktuelle Netzwerkverbindungen]
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:51847 localhost:4700 ESTABLISHED
tcp 0 0 Diskstation:55454 192.168.2.107:62985 TIME_WAIT
tcp 0 0 localhost:4700 localhost:51847 ESTABLISHED
tcp 0 0 Diskstation:55453 192.168.2.107:62985 TIME_WAIT

[Netzwerkstatistik eth0]
RX bytes:2181777 (2.0 MiB)
TX bytes:1262984 (1.2 MiB)

[Uptime]
Uptime: 17:15:09 up 44 min, load average: 1.26, 1.09, 1.01
CPU-Auslastung: 25.5%
 

donkhan

Benutzer
Mitglied seit
22. Mai 2011
Beiträge
202
Punkte für Reaktionen
0
Punkte
16
Keiner der mir weiterhelfen kann ^^
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat