Erfolg / weitere Fragen zum Thema Scripting
Hast du denn ipkg überhaupt nicht installiert? Sonst müsste in $PATH irgendwas mit /opt auch vorkommen. In unserem Wiki steht mehr dazu wie man sich ipkg installieren kann. Erst damit kannst du dann Pakete wie z.B. bash nachinstallieren
Natürlich nicht
(hätte mich vielleicht doch vorher mal ein bisschen mehr mit diesen Sachen beschäftigen sollen...)
Das hat mich jetzt auch die letzten beiden Stunden beschäftigt. Und mit der Anleitung, die ich unter
http://www.synology-wiki.de/index.php/IPKG gefunden habe + der Recherche, welches Paket ich da brauche, habe ich es geschafft!
Ferner verfügen meine AdminTools jetzt über die installierte BASH.
Naja soviel zu den positiven Nachrichten...
Mittlerweile kämpfe ich damit ein Script, welches ich mir hier im Forum zusammengesucht und modifiziert habe für mein Shutdown-Problem zu testen.
Script (Autor ist glaube ich
NickRivers und unter
http://www.synology-forum.de/showthread.html?t=8769&page=9 zu finden.:
Rich (BBCode):
#!/bin/sh
# Automatischer PowerOff der DiskStation:
# Die DiskStation soll NICHT runterfahren solange nachfolgende Bedingungen erfüllt sind:
# - ein MagicPacket (Wol) wurde empfangen, dass z.B. von anderen Geräten mittels ether-wake, wakeonlan etc. zyklisch (z.B. CronJob) gesendet wurde
# - die IP's vordefinierter Rechner sind erreichbar
# - ein Download, Kopiervorgang oder Backup auf der DS läuft
#
# Warum so? Läuft der Rechner an dem man gerade arbeitet ist's nett wenn die DiskStation anbleibt. Sitzt man im Wohnzimmer und möchte
# z.B. Musik hören (Sonos ZoneBridge an Funksteckdose, FritzBox sendet WOL an DS) oder Bilder/Videos mittels DreamBox anschauen ist
# fein wenn die DS hochfährt aber noch feiner wenn die DS dann auch wieder runterfährt wenn man sie mal nicht braucht.
#
# Nicht alles was die DS am Leben halten kann ist geeignet diese auch aus der
# Ferne zu wecken, daher nachfolgend die Syntax mit der ich Erfolg hatte:
# wakelan -m MACADRESSE -p 9 (verwendet in DreamBox)
# ether-wake -b -i eth0 MACADRESSE (verwendet in FritzBox)
# Hier die IP's der Rechner eintragen, bei denen die DiskStation immer aktiv bleibt, bis alle IP's inaktiv
HOSTS="192.168.178.10 192.168.178.15"
# Pfad fürs Logfile
LOGFILE=/volume1/system/log/shutdown.log
log() {
echo `date +%c` $1 >> $LOGFILE
}
# Endlosschleife für dauerhafte Abfrage bis zum PowerOff (danach sind Abfragen nicht mehr möglich ;)
while true
do
LIFESIGNS=0
ONLINE=0
BACKUP=0
DOWNLOAD=1
log "-----------------------------------"
# Wenn ein Rechner mittels CronJob alle 120 Sekunden ein Packet sendet, dann muss die Abfragedauer
# >120 Sekunden (hier 180 Sekunden) sein damit man auch was davon mitbekommt.
vorher="$(date +%s)"
vergangene_sekunden=0
while [ $vergangene_sekunden -le 180 ]
do
DUMP=$(nohup tcpdump -q -n -l -p -c 1 -t -i eth0 )
# für die DreamBox mittels wakelan
if ( echo $DUMP | grep -q -o "discard: UDP, length 102" ); then
LIFESIGNS=1;
log "Lebenszeichen empfangen per UDP discard"
break
fi
# für Sonos bzw. FritzBox mittels ether-wake
if ( echo $DUMP | grep -q -o "Ethertype" ); then
LIFESIGNS=1;
log "Lebenszeichen empfangen per Ether-Wake"
break
fi
danach="$(date +%s)"
vergangene_sekunden="$(expr $danach - $vorher)"
done
# BackUp aktiv prüfen
if (ps aux | grep rsnapshot | grep -v grep) ; then
BACKUP=1
log "Backup aktiv!"
fi
# Download über HTTP aktiv
if ! netstat | grep 'http' > /dev/null; then
DOWNLOAD=0
else
DOWNLOAD=1
log "Download aktiv"
fi
# IP's prüfen
for host in $HOSTS ; do
if ping -c 1 -w 1 $host > /dev/null; then
ONLINE=1
log " $host ist online!"
fi
done
# Kopiervorgang aktiv prüfen
if (ps aux | grep ntfs-3g | grep -v grep | grep R); then
BACKUP=1
log "Kopiervorgang aktiv!"
fi
# PowerOff der DiskStation
if [ $ONLINE -eq 0 ] && [ $BACKUP -eq 0 ] && [ $DOWNLOAD -eq 0 ] && [ $LIFESIGNS -eq 0 ]; then
log "Diskstation wird heruntergefahren!"
sleep 5
# TEST fuer SHUTDOWN
# /sbin/poweroff
fi
# Wartezeit bis erneute Abfrage auf Lebenszeichen erfolgen soll
sleep 120
done
Tut mir leid, wenn die Frage jetzt zu banal ist, aber meine Linux-Ausflüge sind seit der UNI schon ne weile her.
Also wie kann ich das Script via Shell oder Telnet testen, um zu sehen, ob die Logausgaben korrekt sind, wenn einer der Rechner an ist bzw. ein Download läuft?
Soweit ich weis sollte dieses Script dann via cron-job laufen. Also z.B. nach 21:00. Ist das damit möglich?
Ach ja, danke nochmal für eure Hilfe!
C.