Statusmail

Status
Für weitere Antworten geschlossen.

Reservist

Benutzer
Mitglied seit
09. Nov 2009
Beiträge
436
Punkte für Reaktionen
0
Punkte
0
Hallo,

gibt es eigentlich die Möglichkeit, dass mir die DS täglich so ne Statusmail verschickt?

Also quasi ne Zusammenfassung der Protokolle. Da soll dann da drinstehen, z.B. gestern waren die und die und die Nutzer eingeloggt, die 23 GB an Daten kopiert haben und insgesamt sind im Moment 65% der DS belegt etc pp.


Danke schonmal!
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Nö - gibt es nicht. Wär aber doch mal ein schöner Featurevorschlag für Synology...
 

raymond

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
4.704
Punkte für Reaktionen
21
Punkte
118

Christian72D

Benutzer
Mitglied seit
29. Apr 2010
Beiträge
715
Punkte für Reaktionen
12
Punkte
44
Kann man den Beitrag nicht mal aktualisieren?

Bei mir werden massig Fehler im Script angezeigt: die Ausgabe sieht SO aus:

Status der Diskstation (DS212 (DS-212)) vom 01.01.12 (11:16):
--------------------------------------------

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

[Auslastung]
CPU-Auslastung: 0%
Memory: 89%
Swap: 0%
Indexing Queue:
Thumbs Queue:
FLV Queue:

[Datentraeger]
Volume 1: 26 Grad, 2151 Stunden Laufzeit
Volume 2: 28 Grad, 2027 Stunden Laufzeit

[IP]
Externe IP: 0.0.0.0
Interne IP: 192.168.1.5

[Aktuelle Netzwerkverbindungen]
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 DS212:4662 p4FDD6E9C.dip.t-dialin.net:2568 TIME_WAIT
tcp 0 0 localhost:46935 localhost:4712 ESTABLISHED
tcp 0 0 localhost:4712 localhost:46935 ESTABLISHED
tcp 0 0 DS212:3260 Christian-PB.local:55371 ESTABLISHED

[Netzwerkstatistik eth0]
RX bytes:3550327838 (3.3 GiB)
TX bytes:989894167 (944.0 MiB)

[Uptime]
Uptime: Stunden

[Wetter]
Temperatur: <?xml version="1.0"?><xml_api_reply version="1"><weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0" ><problem_cause data=""/></weather></xml_api_reply> Grad C
Luftfeuchtigkeit:<?xml version="1.0"?><xml_api_reply version="1"><weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0" ><problem_cause data=""/></weather></xml_api_reply>%
Vorhersage: <?xml version="1.0"?><xml_api_reply version="1"><weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0" ><problem_cause data=""/></weather></xml_api_reply>

Ich bin leider echt kein Linux-Freak, sonst könnte ich das ein oder andere evtl. selbst machen.
 

sinus65

Benutzer
Mitglied seit
19. Jul 2012
Beiträge
207
Punkte für Reaktionen
0
Punkte
0
Hallo,
muss der interne Mailserver aktiv sein wenn man eine Statusmail, wie oben beschrieben, verschicken möchte ?
Gruß thomas
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.155
Punkte für Reaktionen
1.116
Punkte
314
Gegenfrage! Hast du dir das Wiki auch richtig durchgelsen? Steht ziemlich am Anfang unter "Vorraussetzungen"

Tommes!
 

sinus65

Benutzer
Mitglied seit
19. Jul 2012
Beiträge
207
Punkte für Reaktionen
0
Punkte
0
Gegenfrage! Hast du dir das Wiki auch richtig durchgelsen? Steht ziemlich am Anfang unter "Vorraussetzungen"

Tommes!

Danke für deine schnelle Antwort
Ja habe ich,

Generell sollte mal wissen
wie man sich per Telnet/SSH auf die DS einloggt
wie man den vi-Editor bedient, alternativ den Editor des AdminTool
IPKG muss installiert sein
nail [1] muss installiert sein zum Versenden von E-Mails

Das heißt, das nail nur funktioniert wenn der Mailserver läuft, verstehe ich das richtig?
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.155
Punkte für Reaktionen
1.116
Punkte
314
Das heißt, das nail nur funktioniert wenn der Mailserver läuft, verstehe ich das richtig?

Eher umgekehrt. Wenn du nail nicht installiert hast, kannst du als "root" keine Mails verschicken. Der Benutzer "root" hat nämlich standardmäßig keine Mailadresse auf der DS, sondern nur der "admin"! Und da du in der Regel die Scripte als "root" ausführst mußt du "root" noch eine Mail verpassen und das geht beispielsweise mit nail! Siehe auch hier...

Das hat jedoch nicht mit dem Mailserver des DSM zu tun.

Tommes!
 

sinus65

Benutzer
Mitglied seit
19. Jul 2012
Beiträge
207
Punkte für Reaktionen
0
Punkte
0
Habe ich verstanden, ich habe eine Testmail gesendet und diese ist auch angekommen. :p ich lerne dazu :p
Nun habe ich das Skript von der Wiki "Statusmail" übernommen und habe es insoweit geändert das ich nur meine email eingetragen habe und das Skript unter /usr/bin/Status Diskstation gespeichert.

Im Cronjobs habe ich den Path /usr/bin/Status Diskstation (siehe Anhang)
leider funktioniert der Versandt nicht.

Das Skript legt doch irgendwo eine .log Datei ab und diese wird doch verschickt oder nicht?
Mein angegebener Path leitet zum Skript, rein theoretisch würde Cronjobs die Skript-Datei Unbenannt.jpg

Edit: Die oberen 5 Jobs waren schon aktiv beim installieren von Crownjobs
 
Zuletzt bearbeitet:

sinus65

Benutzer
Mitglied seit
19. Jul 2012
Beiträge
207
Punkte für Reaktionen
0
Punkte
0
Ich glaube ich habe es mit dem Skript verstanden, crownjobs sorgt dafür dass, das Skript ausgeführt wird. Dann werde ich in der Konf. von crown einen Fehler haben.
 

Tommes

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

Erstmal... ich bin kein Konsolen bzw. Linux Profi! Aber ich handhabe das immer so...

Erstmal einen zusammenhängenden Dateinamen, ohne Sonderzeichern wählen, also z.B. DSMStatusmail.sh ! Das .sh hänge ich immer hinten dran. Ob das so sein muß, kann ich nicht sagen.
Dann muß das Script "ausführbar" sein. Das erledigt man auf der Konsole mit diesem Befehl hier...

Code:
chmod 755 /opt/bin/DSMStatusmail.sh.sh

... wobei der Pfad zum Script erstmal nebensache ist. Du hast es ja unter /usr/bin/

Im Cron-Daemon gibst du dann das Script unter "Command" an, mit /opt/bin/DSMStatusmail.sh ! Dann sollte es eigentlich laufen. Naja, du mußt den cron natürlich auch noch so einstellen, wie oft und wann du gerne deine Mails hättest.

Tommes!
 

sinus65

Benutzer
Mitglied seit
19. Jul 2012
Beiträge
207
Punkte für Reaktionen
0
Punkte
0
Hallo,
die Statusmail startet über cown nicht, was mache ich falsch, mein Script sieht wie folgt aus


Rich (BBCode):
#!/bin/sh
LOCATION=Rheine
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}'`
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=`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`
WEATHER=`wget -O - "http://www.google.com/ig/api?weather="$LOCATION
2>/dev/null`
TEMP=`echo $WEATHER | sed -e 's/^.*temp_c
data=\"\\([0-9-][0-9\]*\\)\".*/\\1/'`
COND=`echo $WEATHER | sed -e 's/^.*condition data="\(.*\)".*/\\1/'`
HUM=`echo $WEATHER | sed -e 's/^.*humidity
data="Humidity:\(.*\)%.*/\\1/'`

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):
--------------------------------------------

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

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

[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
Interne IP: $INT_IP

[Aktuelle Netzwerkverbindungen]
$netstat

[Netzwerkstatistik eth0]
$eth0_rx
$eth0_tx

[Uptime]
Uptime:$up_time Stunden

[Wetter]
Temperatur: ${TEMP} Grad C
Luftfeuchtigkeit:${HUM}%
Vorhersage: $COND

[Letzte Nachrichten]
$LASTMSG

"
echo "$täglicher DS212+ Status" | /opt/bin/nail -s "Status Diskstation"  balou3@gmx.de
echo 2 >/dev/ttyS1

#!/bin/bash
cp DSMStatusmail.sh /opt/bin

mein cown Eintrag so:

Unbenannt.jpg

mein nail Eintrag:
Rich (BBCode):
# Konfiguration des Kontos
set smtp-auth=login
set smtp=smtp.web.de
set pop=pop3.web.de
set from=thomas@web.de
set smtp-auth-user=thomas@web.de
set smtp-auth-password=***********
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.155
Punkte für Reaktionen
1.116
Punkte
314
Ich meine, bei HOUR muß es */2 heißen, nicht nur /2 !

Hast du das Script ausführbar gemacht und es auf der Konsole mal aufgerufen? Läuft es dann? Hast du eine Dateiendung wir .sh verwendet? Wenn ja, dann muss die auch in der crontab aufgeführt sein!

Tommes

PS: ist das da deine echte E-Mail Adresse? Suchst du neue Freunde?
 

sinus65

Benutzer
Mitglied seit
19. Jul 2012
Beiträge
207
Punkte für Reaktionen
0
Punkte
0
Hallo Tommes,
Ich habe das script in crown auch schon versucht um 16:45 oder eine andere Uhrzeit auszuführen. Mit und ohne .sh. Wie ich es manuell in der Konsole autrufen kann weiß, ich leider nicht. Ausführbar habe ich es in der Konsole gemacht.
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.155
Punkte für Reaktionen
1.116
Punkte
314
Wenn dein Script so nicht funktioniert, funktioniert es auch nicht im crontab. Um das Script zu testen, führ es auf der Konsole einfach mal aus indem du den Pfad, gefolgt vom Scriptnamen inkl. Erweiterung eintippst. Also z.B. /usr/bin/DSMStatusmail.sh oder wie und wo auch immer dein Script liegt und heißt!

Ach ja, Vergleich mal die letzten zwei Zeilen in deinem Script mit dem Orginal. Fällt dir da was auf?

Tommes
 

sinus65

Benutzer
Mitglied seit
19. Jul 2012
Beiträge
207
Punkte für Reaktionen
0
Punkte
0
Wenn dein Script so nicht funktioniert, funktioniert es auch nicht im crontab. Um das Script zu testen, führ es auf der Konsole einfach mal aus indem du den Pfad, gefolgt vom Scriptnamen inkl. Erweiterung eintippst. Also z.B. /usr/bin/DSMStatusmail.sh oder wie und wo auch immer dein Script liegt und heißt!

Ach ja, Vergleich mal die letzten zwei Zeilen in deinem Script mit dem Orginal. Fällt dir da was auf?

Ja es ist passiert weil ich unter nano den Path angeben wollte und den allerdings vor dem Speichern angegeben habe, wusste nicht das ich ihn nach dem Speichern angeben muss

Tommes

Ich glaube das Script ist voller Fehler,
Rich (BBCode):
DiskStation> /root/DSMStatusmail.sh
BusyBox v1.16.1 (2012-07-06 16:11:52 CST) multi-call binary.

Usage: grep [-HhnlLoqvsriFE] [-m N] [-A/B/C N] PATTERN/-e PATTERN.../-f FILE [FILE]...

Search for PATTERN in FILEs (or stdin)

Options:
        -H      Add 'filename:' prefix
        -h      Do not add 'filename:' prefix
        -n      Add 'line_no:' prefix
        -l      Show only names of files that match
        -L      Show only names of files that don't match
        -c      Show only count of matching lines
        -o      Show only the matching part of line
        -q      Quiet. Return 0 if PATTERN is found, 1 otherwise
        -v      Select non-matching lines
        -s      Suppress open and read errors
        -r      Recurse
        -i      Ignore case
        -F      PATTERN is a literal (not regexp)
        -E      PATTERN is an extended regexp
        -m N    Match up to N times per file
        -A N    Print N lines of trailing context
        -B N    Print N lines of leading context
        -C N    Same as '-A N -B N'
        -e PTRN Pattern to match
        -f FILE Read pattern from file

/root/DSMStatusmail.sh: line 22: Temperature_Celsius: not found
BusyBox v1.16.1 (2012-07-06 16:11:52 CST) multi-call binary.

Usage: grep [-HhnlLoqvsriFE] [-m N] [-A/B/C N] PATTERN/-e PATTERN.../-f FILE [FILE]...

Search for PATTERN in FILEs (or stdin)

Options:
        -H      Add 'filename:' prefix
        -h      Do not add 'filename:' prefix
        -n      Add 'line_no:' prefix
        -l      Show only names of files that match
        -L      Show only names of files that don't match
        -c      Show only count of matching lines
        -o      Show only the matching part of line
        -q      Quiet. Return 0 if PATTERN is found, 1 otherwise
        -v      Select non-matching lines
        -s      Suppress open and read errors
        -r      Recurse
        -i      Ignore case
        -F      PATTERN is a literal (not regexp)
        -E      PATTERN is an extended regexp
        -m N    Match up to N times per file
        -A N    Print N lines of trailing context
        -B N    Print N lines of leading context
        -C N    Same as '-A N -B N'
        -e PTRN Pattern to match
        -f FILE Read pattern from file

/root/DSMStatusmail.sh: line 24: Temperature_Celsius: not found
BusyBox v1.16.1 (2012-07-06 16:11:52 CST) multi-call binary.

Usage: grep [-HhnlLoqvsriFE] [-m N] [-A/B/C N] PATTERN/-e PATTERN.../-f FILE [FILE]...

Search for PATTERN in FILEs (or stdin)

Options:
        -H      Add 'filename:' prefix
        -h      Do not add 'filename:' prefix
        -n      Add 'line_no:' prefix
        -l      Show only names of files that match
        -L      Show only names of files that don't match
        -c      Show only count of matching lines
        -o      Show only the matching part of line
        -q      Quiet. Return 0 if PATTERN is found, 1 otherwise
        -v      Select non-matching lines
        -s      Suppress open and read errors
        -r      Recurse
        -i      Ignore case
        -F      PATTERN is a literal (not regexp)
        -E      PATTERN is an extended regexp
        -m N    Match up to N times per file
        -A N    Print N lines of trailing context
        -B N    Print N lines of leading context
        -C N    Same as '-A N -B N'
        -e PTRN Pattern to match
        -f FILE Read pattern from file

/root/DSMStatusmail.sh: line 26: Temperature_Celsius: not found
BusyBox v1.16.1 (2012-07-06 16:11:52 CST) multi-call binary.

Usage: grep [-HhnlLoqvsriFE] [-m N] [-A/B/C N] PATTERN/-e PATTERN.../-f FILE [FILE]...

Search for PATTERN in FILEs (or stdin)

Options:
        -H      Add 'filename:' prefix
        -h      Do not add 'filename:' prefix
        -n      Add 'line_no:' prefix
        -l      Show only names of files that match
        -L      Show only names of files that don't match
        -c      Show only count of matching lines
        -o      Show only the matching part of line
        -q      Quiet. Return 0 if PATTERN is found, 1 otherwise
        -v      Select non-matching lines
        -s      Suppress open and read errors
        -r      Recurse
        -i      Ignore case
        -F      PATTERN is a literal (not regexp)
        -E      PATTERN is an extended regexp
        -m N    Match up to N times per file
        -A N    Print N lines of trailing context
        -B N    Print N lines of leading context
        -C N    Same as '-A N -B N'
        -e PTRN Pattern to match
        -f FILE Read pattern from file

/root/DSMStatusmail.sh: line 28: Temperature_Celsius: not found
sed: unmatched '/'
/root/DSMStatusmail.sh: line 42: /tmp/externalIP.result: Permission denied
awk: cmd. line:1: Division by zero
cat: can't open '/var/spool/syno_indexing_queue*': No such file or directory
sh: missing ]
/root/DSMStatusmail.sh: line 47: 100: not found
cat: can't open '/var/spool/thumb_create.queue*': No such file or directory
sh: missing ]
/root/DSMStatusmail.sh: line 49: 100: not found
cat: can't open '/var/spool/flv_create_queue*': No such file or directory
sh: missing ]
/root/DSMStatusmail.sh: line 51: ]: not found
--2012-08-24 03:33:28--  http://www.google.com/ig/api?weather=MEINE_STADT
Resolving www.google.com... 173.194.35.145, 173.194.35.146, 173.194.35.148, ...
Connecting to www.google.com|173.194.35.145|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/xml]
Saving to: `STDOUT'

    [ <=>                                   ] 15          --.-K/s   in 0s

2012-08-24 03:33:28 (638 KB/s) - written to stdout [15]

sed: unmatched '/'
sed: unmatched '/'
/root/DSMStatusmail.sh: line 66: C,: not found
/root/DSMStatusmail.sh: line 66: C,: not found
Cannot convert from ANSI_X3.4-1968 to iso-8859-1
Invalid or incomplete multibyte or wide character
"/root/dead.letter" 1/24
. . . message not sent.

Die Befehle: $temperature und $hours laut Wiki ergeben bei mir nichts.
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.155
Punkte für Reaktionen
1.116
Punkte
314
Wenn ich das Script aus dem Wiki 1 zu 1 kopiere und es auf meiner DS ausführe erhalte ich folgende Meldungen...

Code:
DS-212> /opt/bin/DSMStatusmail.sh
uptime: couldn't get boot time: No such file or directory
cat: /var/spool/syno_indexing_queue*: No such file or directory
cat: /var/spool/thumb_create.queue*: No such file or directory
cat: /var/spool/flv_create_queue*: No such file or directory

... nicht mehr und nicht weniger! Im Wiki steht aber auch, wie du ja bereits gelesen hast...

ZITAT aus dem WIKI...Das Script muss je nach Version der Diskstation noch angepasst werden, besonders die Werte $hours und $temperatur. Daher diese Werte am besten vorher mal im Terminal ausprobieren und schauen ob bei dem verwendeten Befehl etwas sinnvolles raus kommt.

Was auf meiner DS geht, muß folglich auf deiner noch lange nicht gehen, oder du machst etwas falsch! Ich kann dir dabei auch nicht wirklich helfen, da ich nicht weiß bei welcher Firmware Version bzw. Diskstation welche Werte ausgeworfen werden. Vielleicht kann dir der Verfasser oder jemand der an diesem Wiki mitgewirkt hat, weiterhelfen.

Tommes!
 
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