Eigener Systemreport ohne IPKG und Nail

Status
Für weitere Antworten geschlossen.

dave82

Benutzer
Mitglied seit
25. Jan 2014
Beiträge
159
Punkte für Reaktionen
0
Punkte
22
Hi,

Ich finde Synology bietet mit dem DSM eines der besten NAS-Betriebssysteme derzeit an. Leider hatte mir bisher eine Funktion gefehlt, nämlich der Versand eines Systemreports. Der DSM informiert mich zwar, wenn z.B. eine Platte ausfällt, aber die Möglichkeit täglich eine kleine Übersicht über das System zu versenden hat mir bisher gefehlt. Ich kenne ähnliche Funktionen aus meinem Berufsalltag von sogenannten Enterprise Storage Systemen. Auf meiner DS habe ich diese bisher vermisst.

Es gibt schon einen Ansatz der hier im Forum bereits gepostet wurde (http://www.synology-forum.de/showthread.html?15219-Statusmail-von-der-Diskstation), leider setzt dieser IPKG sowie NAIL voraus. Da IPKG soweit ich weiß auf den Systemen mit ArmandaXP-CPU (z.B. DS414) noch nicht verfügbar ist, habe ich einen anderen Weg gewählt und möchte diesen euch mitteilen.

Ich nutze für den Mailversand die Mail Funktion von PHP welche ein Aktuelles DSM mitbringen sollte. Diese Funktion lässt sich auch super in Rsync-Backup-Skripte integrieren um über den Status eines Backups zu informieren.

Voraussetzung ist, dass ihr im DSM unter Systemsteuerung die Email-Benachrichtigung aktiviert ist und funktioniert.

Im Anhang habe ich zwei Dateien (systemreport.sh und statusmail.php) abgelegt, welche auf die DS hochgeladen werden müssen. Dies kann direkt über den DSM geschehen.

In der Datei systemreport.sh muss der Pfad angepasst werden, wo die Datei statusmail.php liegt.

Wichtig: Eventuell müssen die Befehle für die Volumes, Netzwerkports etc. angepasst werden. Das Skript ist auf mein Layout mit vier Festplatten und einem großem Volume1 ausgelegt. Zudem habe ich nur ein Lan-Port aktiv. Testen konnte ich bisher nur unter DSM 4.3.

In der Datei statusmail.php muss noch der Empfänger und der Header angepasst werden:

$to = 'empfänger@domain.de';
$header = 'From: NameDS <NameDS@domain.de>'


Anschließend muss noch unter DSM mit dem Aufgabenplaner ein Task angelegt werden, welcher das Skript systemreport.sh z.B. Täglich ausführt.

Hoffe ich kann mit meinem Post jemandem weiterhelfen der Ähnliches vor hat :)

Anhang:

Anhang anzeigen systemreport.zip
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.984
Punkte für Reaktionen
624
Punkte
484
Sehr schön! Vielen Dank dafür!

Mir kam auch (nach Update von 4.2 auf 4.3) der Gedanke, mich vom IPKG und nail zu trennen. Dann habe ich auch noch die Maschiene gewechselt und IPKG war damit dann eh geschichte (Armada XP).

Nach ein wenig Stöbern bin ich dann auch auf die Variante mit PHP gestossen und habe meine Statusmeldungen - soweit damals möglich - über eine PHP-Mail realisiert.

Funktioniert soweit sehr gut. Was nur etwas unglücklich ist, ist der Umstand, dass man nur den im DSM hinterlegten SMTP nutzen kann. Mit nail kann ich ja einen eigene definieren.

Aber sei's drum. So geht es auch.
 

dave82

Benutzer
Mitglied seit
25. Jan 2014
Beiträge
159
Punkte für Reaktionen
0
Punkte
22
Sehr schön! Vielen Dank dafür!

Mir kam auch (nach Update von 4.2 auf 4.3) der Gedanke, mich vom IPKG und nail zu trennen. Dann habe ich auch noch die Maschiene gewechselt und IPKG war damit dann eh geschichte (Armada XP).

Nach ein wenig Stöbern bin ich dann auch auf die Variante mit PHP gestossen und habe meine Statusmeldungen - soweit damals möglich - über eine PHP-Mail realisiert.

Funktioniert soweit sehr gut. Was nur etwas unglücklich ist, ist der Umstand, dass man nur den im DSM hinterlegten SMTP nutzen kann. Mit nail kann ich ja einen eigene definieren.

Aber sei's drum. So geht es auch.

Hi Puppetmaster,

ja finde es auch blöd, dass nur der im DSM hinterlegte SMTP genutzt werden kann. Welche Werte prüfst du in deinem Statusskript so?

Gruß Dave
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.984
Punkte für Reaktionen
624
Punkte
484
Ich bin da leider noch nicht sehr weit gekommen. PHP ist auch nicht so mein Steckenpferd.

In der Hauptsache habe ein script, dass mir einige Ordner auf Veränderungen prüft. Aber alles noch sehr rudimentär.

Deine Lösung werde ich mir aber auf jeden Fall noch näher ansehen, sobald es die Zeit denn erlaubt.
 

dave82

Benutzer
Mitglied seit
25. Jan 2014
Beiträge
159
Punkte für Reaktionen
0
Punkte
22
Ich bin da leider noch nicht sehr weit gekommen. PHP ist auch nicht so mein Steckenpferd.

In der Hauptsache habe ein script, dass mir einige Ordner auf Veränderungen prüft. Aber alles noch sehr rudimentär.

Deine Lösung werde ich mir aber auf jeden Fall noch näher ansehen, sobald es die Zeit denn erlaubt.

Alles klar, würde mich über dein Feedback freuen. Vielleicht lässt sich das eine oder andere noch ergänzen.

Hab auch in der Richtung noch was vor, wo ich Änderungen an Ordnern und Files mitteilen will. Werde mithilfe von synodsmnotify Benachrichtigungen direkt im DSM verschicken. Klappt für meine Backupscripte hervorragend!

Gruß Dave
 

fraubi

Benutzer
Mitglied seit
25. Nov 2011
Beiträge
605
Punkte für Reaktionen
0
Punkte
42
@dave82

Hi Dave,

vielen Dank für die Dateien zum Systemreport. Leider habe ich selbst keine so grosse Ahnung von Linux etc., aber wäre es möglich, in den Systemreport noch einzubauen, dass alle Ordner der ersten Ebene eines bestimmten Verzeichnisses mit in der Mail auftauchen.

Soweit ich das ergooglen konnte, wäre die Befehlszeile unter putty dafür wohl irgendwas mit

find . -type d -maxdepth 1

Ich würde gerne in der Mail darüber informiert werden, welche Ordner sich unter 'photo' befinden.

Leider krieg ich es selbst nicht hin, weiss nichtmal, wie ich anfangen soll.........

Hättest Du eine Idee dazu ?

Viele Grüße und danke für Deine Mühe
Fraubi
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.151
Punkte für Reaktionen
1.115
Punkte
314
Hi!

Auch von mir ein großes Dankeschön. Auch ich hab mich vor einiger Zeit von IPKG und Nail verabschiedet. Irgendwie ist die Arbeit auf der Konsole nicht meins. Nichts desto trotz hätte ich schon gern auch weiterhin die "Statusmail" von meinen Diskstations gehabt. Das scheind ja dank deiner Mühen endlich wieder möglich zu sein, ohne IPKG einzurichten. (War bestimmt schon immer möglich, kannte nur den Weg nicht)

Werd das die Tage mal antesten

Tommes
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.984
Punkte für Reaktionen
624
Punkte
484
btw: weiss jemand, wie ich evtl. auch Systempemperatur und ggf. sogar die Festplattentemperaturen auslesen kann?
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.151
Punkte für Reaktionen
1.115
Punkte
314
btw: weiss jemand, wie ich evtl. auch Systempemperatur und ggf. sogar die Festplattentemperaturen auslesen kann?

Ich stöbern heut Abend mal in meinen Unterlagen. Ich meine wenigstens die Systemtemperatur ausgelesen zu haben. Bei den HDD's bin ich mir nicht mehr sicher.

Tommes
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.984
Punkte für Reaktionen
624
Punkte
484
Super, danke!
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.151
Punkte für Reaktionen
1.115
Punkte
314

dave82

Benutzer
Mitglied seit
25. Jan 2014
Beiträge
159
Punkte für Reaktionen
0
Punkte
22
@dave82

Hi Dave,

vielen Dank für die Dateien zum Systemreport. Leider habe ich selbst keine so grosse Ahnung von Linux etc., aber wäre es möglich, in den Systemreport noch einzubauen, dass alle Ordner der ersten Ebene eines bestimmten Verzeichnisses mit in der Mail auftauchen.

Soweit ich das ergooglen konnte, wäre die Befehlszeile unter putty dafür wohl irgendwas mit

find . -type d -maxdepth 1

Ich würde gerne in der Mail darüber informiert werden, welche Ordner sich unter 'photo' befinden.

Leider krieg ich es selbst nicht hin, weiss nichtmal, wie ich anfangen soll.........

Hättest Du eine Idee dazu ?

Viele Grüße und danke für Deine Mühe
Fraubi

Hi fraubi,

dein Ansatz ist schonmal richtig. Ich würde folgenden Befehl einbauen:

find /volume1/photos/ -maxdepth 1 -type d | grep -Eo '[^/]+/?$' | cut -d / -f1

Dieser listet dir die nur die Ordner ohne Pfad in erster ebene auf.

Gruß David
 

dave82

Benutzer
Mitglied seit
25. Jan 2014
Beiträge
159
Punkte für Reaktionen
0
Punkte
22
btw: weiss jemand, wie ich evtl. auch Systempemperatur und ggf. sogar die Festplattentemperaturen auslesen kann?

Hi Puppetmaster,

die SMART-Werte der einzelnen Datenträger kannst du mithilfe von

/usr/syno/bin/smartctl -A /dev/hdX


auslesen.

/usr/syno/bin/smartctl -A /dev/hdX | /bin/grep Temperature_Celsius | /usr/bin/awk '{print $10}'

Gibt nur die Temperatur aus.

Die Systemtemperatur konnte ich bisher nur über SNMP auslesen.

Edit: Über SNMP geht das bei mir mit

snmpwalk -v 1 -c syno localhost .1.3.6.1.4.1.6574.1.2 | awk '{print $4}'

Gruß David
 
Zuletzt bearbeitet:

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.151
Punkte für Reaktionen
1.115
Punkte
314
Ich hatte damals das Script aus dem Wiki für meine DS212+ etwas umgeschrieben. Darunter dann halt auch die Ausgabe der Systemtemperatur sowie der HDD-Temperaturen.

Habs länger jetzt nicht mehr benutzt und weiß nicht, ob noch alles läuft. Der Einfachheit halber hier mal das komplette Script

Rich (BBCode):
#!/bin/sh
DSIP="XXX.XXX.XXX.XXX" # IP der Diskstation
USER="XXXXX"           # Username für Login
PASS="XXXXXXXXXXXXXX"  # Passwort für Login
RESULT="/tmp/sysinfo"  # temporäre Datei für Ergebnis
SYSTEMP="systemtemp"   # Variable die im Anschluss die Systemtemperatur enthält
#------------------------------------------------------------------------------

/usr/syno/bin/wget --no-check-certificate --cookies=on --keep-session-cookies --save-cookies=cookie -q -O $RESULT "https://${DSIP}:5001/webman/modules/login.cgi?username=${USER}&passwd=${PASS}"
/usr/syno/bin/wget --no-check-certificate --cookies=on --keep-session-cookies --load-cookies=cookie -q -O $RESULT "https://${DSIP}:5001/webman/modules/SystemInfoApp/SystemInfo.cgi?query=overview"
SYSTEMP=`/bin/cat $RESULT | /bin/grep \""systemp\"" | /usr/bin/cut -d "," -f1 | /usr/bin/cut -d ":" -f2 | /bin/sed 's/^ *//g`
rm -f $RESULT


LOGFILE=/var/log/shutdown.log
echo 6 > /dev/ttyS1
echo 7 > /dev/ttyS1
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 -s`
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}'`
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}'`
filesystem1=`df -h | /bin/grep /dev/md2 | /usr/bin/awk '{print $6}'`
size1=`df -h | /bin/grep /dev/md2 | /usr/bin/awk '{print $2}'`
used1=`df -h | /bin/grep /dev/md2 | /usr/bin/awk '{print $3}'`
available1=`df -h | /bin/grep /dev/md2 | /usr/bin/awk '{print $4}'`
percent1=`df -h | /bin/grep /dev/md2 | /usr/bin/awk '{print $5}'`
filesystem2=`df -h | /bin/grep /dev/md3 | /usr/bin/awk '{print $6}'`
size2=`df -h | /bin/grep /dev/md3 | /usr/bin/awk '{print $2}'`
used2=`df -h | /bin/grep /dev/md3 | /usr/bin/awk '{print $3}'`
available2=`df -h | /bin/grep /dev/md3 | /usr/bin/awk '{print $4}'`
percent2=`df -h | /bin/grep /dev/md3 | /usr/bin/awk '{print $5}'`
datum=`date +"%d.%m.%y`
zeit=`date +"%H:%M`
up_time=`/usr/bin/uptime | sed 's/^.*up //' | sed 's/, load.*$//'`
CPU=`/usr/bin/top -b -n 1 |awk 'NR>7&&NR<30 {s+=$9} END {printf("%2d",s)}'`
INT_IP=`ifconfig eth0 | grep inet | sed 's/^ *..........//' | sed 's/ .*$//' | sed 's/:$//'`
IP=`if [ -f /tmp/externalIP.result ];then /bin/get_key_value /tmp/externalIP.result externalIP;else echo 0.0.0.0;fi`
FREE=`free`
MEM=`echo "$FREE" | awk 'NR==2{printf("%2d",$3/$2*100)}'`
SWAP=`echo "$FREE" | awk 'NR==3{printf("%2d",$3/$2*100)}'`
IQ=`cat /var/spool/syno_indexing_queue* | wc -l`; IQ1=100; if [ $IQ -lt 100 ]; then IQ1=$IQ; fi
TQ=`cat /var/spool/thumb_create.queue* | wc -l`; TQ1=100; if [ $TQ -lt 100 ]; then TQ1=$TQ; fi
FQ=`cat /var/spool/flv_create_queue* | wc -l`; FQ1=100; if [ $FQ -lt 100 ]; then FQ1=$FQ; fi
MSG=`tail -1 /var/log/messages`
LASTMSG=`echo $MSG | cut -b 1-78`
log() {
echo `date +%c`: $1 >> $LOGFILE
}
log "Temperatur 1: $temperatur1 °C, Temperatur 2: $temperatur2 °C, Temperatur 3: $temperatur3 °C, Temperatur 4: $temperatur4 °C, IP: $IP"
nachricht="Status der Diskstation ($hostname ($model)) vom $datum ($zeit):
----------------------------------------------------------------------------------

[Datentraeger]
Datentraeger: $filesystem1
Temperatur: $temperatur1 Grad
Laufzeit gesamt: $hours1 Stunden
Datentraegerkapazitaet: $size1
Freier Speicher: $available1
Belegter Speicher: $used1 ($percent1)

Datentraeger: $filesystem2
Temperatur: $temperatur2 Grad
Laufzeit gesamt: $hours2 Stunden
Datentraegerkapazitaet: $size2
Freier Speicher: $available2
Belegter Speicher: $used2 ($percent2)


[Auslastung]
CPU-Auslastung: ${CPU}%
Systemtemperatur: $SYSTEMP Grad
Memory: ${MEM}%
Swap: ${SWAP}%
Indexing Queue: $IQ
Thumbs Queue: $TQ
FLV Queue: $FQ

[IP]
Externe IP: $IP
Interne IP: $INT_IP

[Aktuelle Netzwerkverbindungen]
$netstat

[Netzwerkstatistik eth0]
$eth0_rx
$eth0_tx

[Uptime]
Uptime:$up_time Stunden

[Letzte Nachrichten]
$LASTMSG

"
echo "$nachricht" | /opt/bin/nail -s "Status Diskstation" MAIL-ADRESSE@DOMAIN.TLD
echo 2 >/dev/ttyS1
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hi Puppetmaster,

ja finde es auch blöd, dass nur der im DSM hinterlegte SMTP genutzt werden kann. Welche Werte prüfst du in deinem Statusskript so?

Gruß Dave
das stimmt so nicht ganz :) Das betrifft nur die Fkt mail().
Man kann Mails jedoch auch anders verschicken und dabei beliebige SMTP nutzen. Schau dir fsockopen() und Co an
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.984
Punkte für Reaktionen
624
Punkte
484
Ja, danke für den Tipp!
Ich sagte ja schon, dass mein Wissen in dem Bereich durchaus noch ausbaufähig ist. ;)
 
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