Danke, es funktioniert
Mein Fehler lag in Ultraedit, habe nicht UNIX Konform abgespeichert.
Kann ich das Script dann auch für mehrere HOSTS nehmen oder ist das nur beschränkt auf einen?
"Wenn keiner davon mehr erreichbar ist " wäre imho logischer.... Wenn einer davon nicht verfügbar ist, soll die NAS runterfahren, oder wie?
"Wenn keiner davon mehr erreichbar ist " wäre imho logischer.
... oder - um die Abfrage zu erleichtern - solange es noch einen verfügbaren Client gibt: Nicht runterfahren.
targetpingdevice=
targetpingdevice2=
targetpingdevice3=
waittime=
while true; do
ping -c 1 $targetpingdevice || ping -c 1 $targetpingdevice2 || ping -c 1 $targetpingdevice3 > /dev/null
if [ $? == 1 ]; then
sleep $waittime
ping -c 1 $targetpingdevice || ping -c 1 $targetpingdevice2 || ping -c 1 $targetpingdevice3 > /dev/null
if [ $? == 1 ]; then
# shutdown DS
poweroff
fi
fi
sleep $waittime
done;
Servus,
habs jetzt getestet und mit den IPs herumgespielt.
Funktioniert mit allen konstellationen...
Danke & Gruss
#!/opt/bin/bash
#
PC=192.168.xxx
LAPTOP=192.168.xxx
HANDY=192.168.xxx
waittime=300
LOGFILE=/tmp/autoshutdown.log
MAXRETRYS=5
log()
{
echo $1 `date +%c` >> $LOGFILE
}
#Sicherheitsreserve um evtl. das Script deaktivieren zu können.
sleep 600
for ((RETRY=1; RETRY<$[MAXRETRYS+1]; RETRY++)); do
printf "\n\n\n" >>/tmp/autoshutdown.log
log "===== Versuch Nr.: $RETRY ====="
ping -c 1 -W 1 $PC >> $LOGFILE || ping -c 1 -W 1 $LAPTOP >> $LOGFILE || ping -c 1 -W 1 $HANDY >> $LOGFILE
if [ $? == 0 ]; then
log "===== Mindestens ein Client ist erreichbar ====="
RETRY=0
fi
if [ $RETRY == $MAXRETRYS ]; then
break
fi
if [ $RETRY != 0 ]; then
log "===== Nächsten Versuch abwarten... ====="
fi
sleep $waittime
done
if [ $RETRY == $MAXRETRYS ]; then
log "===== DS wird heruntergefahren ====="
poweroff
exit
fi
#!/opt/bin/bash
#
PC=192.168.xxx
NOTEBOOK=192.168.xxx
HANDY=192.168.xxx
waittime=300
LOGFILE=/tmp/autoshutdown.log
MAXRETRYS=4
log()
{
echo "$1" `date +%c` >> $LOGFILE
}
printf "\n\n\n" >>$LOGFILE
log "===== Autoshutdown-Script wurde gestartet... ====="
#Sicherheitsreserve um evtl. das Script deaktivieren zu können.
sleep 600
for ((RETRY=1; RETRY<=$MAXRETRYS; RETRY++)); do
printf "\n\n\n" >>$LOGFILE
log "======= Versuch Nr.: $RETRY ================= "
ping -c 1 -W 2 $PC >/dev/null
if [ $? == 0 ]; then
log "== PC erreichbar : ja =========== "
PC_AKTIV=1
RETRY=0
else
log "== PC erreichbar : nein =========== "
PC_AKTIV=0
fi
ping -c 1 -W 2 $NOTEBOOK >/dev/null
if [ $? == 0 ]; then
log "== Notebook erreichbar: ja =========== "
NOTEBOOK_AKTIV=1
RETRY=0
else
log "== Notebook erreichbar: nein =========== "
NOTEBOOK_AKTIV=0
fi
ping -c 1 -W 2 $HANDY >/dev/null
if [ $? == 0 ]; then
log "== Handy erreichbar : ja =========== "
HANDY_AKTIV=1
RETRY=0
else
log "== Handy erreichbar : nein =========== "
HANDY_AKTIV=0
fi
/opt/bin/python /opt/pyload/pyLoadCli.py status |grep "No downloads running" >/dev/null
if [ $? == 1 ]; then
log "== Pyload aktiv : ja =========== "
PYLOAD_AKTIV=1
RETRY=0
else
log "== Pyload aktiv : nein =========== "
PYLOAD_AKTIV=0
fi
smbstatus -q|grep "192.168.100" >/dev/null
if [ $? == 0 ]; then
log "== Samba aktiv : ja =========== "
SAMBA_AKTIV=1
RETRY=0
else
log "== Samba aktiv : nein =========== "
SAMBA_AKTIV=0
fi
if [ $[PC_AKTIV+NOTEBOOK_AKTIV+HANDY_AKTIV+PYLOAD_AKTIV+SAMBA_AKTIV] == 0 ] && [ $RETRY == $MAXRETRYS ]; then
break
fi
if [ $RETRY = 0 ]; then
log "==== In $waittime Sek. geht's von vorne los == "
else
log "===== Nächsten Versuch abwarten... ===== "
fi
sleep $waittime
done
if [ $RETRY == $MAXRETRYS ]; then
log "===== DS wird heruntergefahren ========= "
poweroff
exit
fi
#!/opt/bin/bash
#
PC=192.168.xxx
LAPTOP=192.168.xxx
HANDY=192.168.xxx
waittime=300
LOGFILE=/tmp/autoshutdown.log
MAXRETRYS=4
log()
{
echo $1 `date +%c` >> $LOGFILE
}
log "===== Autoshutdown-Script wurde gestartet... ====="
#Sicherheitsreserve um evtl. das Script deaktivieren zu können.
sleep 600
for ((RETRY=1; RETRY<=$MAXRETRYS; RETRY++)); do
printf "\n\n\n" >>$LOGFILE
log "===== Versuch Nr.: $RETRY ====="
ping -c 1 -W 1 $PC >> $LOGFILE || ping -c 1 -W 1 $LAPTOP >> $LOGFILE || ping -c 1 -W 1 $HANDY >> $LOGFILE
if [ $? == 0 ]; then
log "===== Mindestens ein Client ist erreichbar ====="
RETRY=0
fi
if [ $RETRY == $MAXRETRYS ]; then
break
fi
if [ $RETRY != 0 ]; then
log "===== Nächsten Versuch abwarten... ====="
fi
sleep $waittime
done
if [ $RETRY == $MAXRETRYS ]; then
log "===== DS wird heruntergefahren ====="
poweroff
exit
fi
#!/bin/sh
HOSTS="xxx.xxx.xxx.xxx usw"
while true
do
ONLINE=0
DOWNLOAD=1
# Download über HTTP aktiv
if ! netstat | grep 'http' > /dev/null; then
DOWNLOAD=0
else
DOWNLOAD=1
fi
# IP's prüfen
for host in $HOSTS ; do
if ping -c 1 -w 1 $host > /dev/null; then
ONLINE=1
fi
done
# PowerOff der DiskStation
if [ $ONLINE -eq 0 ] && [ $DOWNLOAD -eq 0 ]; then
sleep 5
/sbin/poweroff
fi
sleep 300
done
#!/opt/bin/bash
#
PC=192.168.xxx
NOTEBOOK=192.168.xxx
HANDY=192.168.xxx
waittime=300
LOGFILE=/tmp/autoshutdown.log
MAXRETRYS=4
log()
{
echo "$1" `date +%c` >> $LOGFILE
}
printf "\n\n\n" >>$LOGFILE
log "===== Autoshutdown-Script wurde gestartet... ====="
#Sicherheitsreserve um evtl. das Script deaktivieren zu können.
sleep 600
for ((RETRY=1; RETRY<=$MAXRETRYS; RETRY++)); do
printf "\n\n\n" >>$LOGFILE
log "======= Versuch Nr.: $RETRY ================= "
ping -c 1 -W 2 $PC >/dev/null
if [ $? == 0 ]; then
log "== PC erreichbar : ja =========== "
PC_AKTIV=1
RETRY=0
else
log "== PC erreichbar : nein =========== "
PC_AKTIV=0
fi
ping -c 1 -W 2 $NOTEBOOK >/dev/null
if [ $? == 0 ]; then
log "== Notebook erreichbar: ja =========== "
NOTEBOOK_AKTIV=1
RETRY=0
else
log "== Notebook erreichbar: nein =========== "
NOTEBOOK_AKTIV=0
fi
ping -c 1 -W 2 $HANDY >/dev/null
if [ $? == 0 ]; then
log "== Handy erreichbar : ja =========== "
HANDY_AKTIV=1
RETRY=0
else
log "== Handy erreichbar : nein =========== "
HANDY_AKTIV=0
fi
/opt/bin/python /opt/pyload/pyLoadCli.py status |grep -e "No downloads running" -e "Could not establish connection to 192.168" >/dev/null
if [ $? == 1 ]; then
log "== Pyload aktiv : ja =========== "
PYLOAD_AKTIV=1
RETRY=0
else
log "== Pyload aktiv : nein =========== "
PYLOAD_AKTIV=0
fi
smbstatus -q|grep "192.168.100" >/dev/null
if [ $? == 0 ]; then
log "== Samba aktiv : ja =========== "
SAMBA_AKTIV=1
RETRY=0
else
log "== Samba aktiv : nein =========== "
SAMBA_AKTIV=0
fi
if [ $[PC_AKTIV+NOTEBOOK_AKTIV+HANDY_AKTIV+PYLOAD_AKTIV+SAMBA_AKTIV] == 0 ] && [ $RETRY == $MAXRETRYS ]; then
break
fi
if [ $RETRY = 0 ]; then
log "==== In $waittime Sek. geht's von vorne los == "
else
log "===== Nächsten Versuch abwarten... ===== "
fi
sleep $waittime
done
if [ $RETRY == $MAXRETRYS ]; then
log "===== DS wird heruntergefahren ========= "
poweroff
exit
fi
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.