Statusmail von der Diskstation: Unterschied zwischen den Versionen

Aus
(→‎Erstellen des Scripts: Hinzufügen von Netzwerkstatistik)
Zeile 88: Zeile 88:
model=`dmesg | grep -m 1 Model | awk '{print $4}'`
model=`dmesg | grep -m 1 Model | awk '{print $4}'`
netstat=`netstat -tu`
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`
hostname=`hostname`
hours1=`/usr/syno/bin/smartctl -A /dev/hda | /bin/grep Power_On_Hours | /usr/bin/awk '{print $10}'`                                                                                                                                                                             
hours1=`/usr/syno/bin/smartctl -A /dev/hda | /bin/grep Power_On_Hours | /usr/bin/awk '{print $10}'`                                                                                                                                                                             
Zeile 133: Zeile 135:
[Aktuelle Netzwerkverbindungen]                                               
[Aktuelle Netzwerkverbindungen]                                               
$netstat
$netstat
[Netzwerkstatistik eth0]                           
$eth0_rx                                           
$eth0_tx


[Uptime]
[Uptime]

Version vom 14. November 2010, 13:04 Uhr

Die Installation von Fremdsoftware erfolgt immer auf eigenes Risiko.

Fehler bei der Installation können zum Datenverlust und zur Neuinstallation der Diskstation
führen, daher erfolgen sämtliche Änderungen auf eigenes Risiko.

In diesem Artikel geht es darum der Diskstation zu ermöglichen z.B. täglich eine Statusmail mit diversen Infos zu verschicken.

Grundsätzlich kann diese Möglichkeit allerdings zum Versenden von allen Möglichen Infos/Warnungen per E-Mail genutzt werden.

Voraussetzungen

Generell sollte mal wissen

  • IPKG muss installiert sein
  • nail [1] muss installiert sein zum Versenden von E-Mails

Hinweis

Die versendete Statusmail sieht als Beispiel so aus:

Status der DiskStation (DS-209) 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

[Aktuelle Netzwerkverbindungen]
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
tcp        0      0 DiskStation:ssh         12.34.56.78:51324     ESTABLISHED 
tcp        0      0 DiskStation:afpovertcp  12.34.56.78:49155     ESTABLISHED 
tcp        0      0 localhost:47627         localhost:4700          ESTABLISHED 
tcp        0      0 DiskStation:ssh         12.34.56.78:51500     ESTABLISHED 
tcp        0      0 localhost:4700          localhost:47627         ESTABLISHED 
tcp        0      0 localhost:36696         localhost:4700          ESTABLISHED 
tcp        0      0 localhost:4700          localhost:36696         ESTABLISHED 

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

Installation

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, die Datei liegt in /opt/etc/ (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 (z.B. per CronTab)

Erstellen des Scripts

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.

In diesem Script wird zusätzlich noch ein log-file angelegt um sich eventuell den Temperaturverlauf im Nachhinein anzusehen.

#!/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}'` 
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`
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 $hostname ($model) 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

[Aktuelle Netzwerkverbindungen]                                               
$netstat

[Netzwerkstatistik eth0]                             
$eth0_rx                                             
$eth0_tx

[Uptime]
Uptime: $up_time

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

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

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

Ende

Diese Möglichkeit zum Versenden von Informationen kann wie bereits angesprochen für alle möglichen Dinge auf der DS genutzt werden, ich nutze es z.B. auch für die Überwachung der Temperatur und zum Versenden einer E-Mail als Warnung wenn ein bestimmter Schwellenwert überschritten ist.

Ich hoffe ich konnte dem ein oder anderen helfen, vielleicht kommt sogar die ein oder andere neue Idee zum modden der Diskstation auf.