Fb7270 - Wol & Cron

NickRivers

Neuer User
Mitglied seit
2 Dez 2006
Beiträge
12
Punkte für Reaktionen
0
Punkte
0
Hallo,

eigentlich wollte ich (WinUser) ja "nur" die FB so modifizieren, das meine LS Pro Duo aufwacht wenn 1-2 bestimmte Büchsen an meiner FB aktiv sind. Dazu habe ich hier schon verdammt lange gelesen und gestestet (ether-wake funzt ja leider nicht bei der LS). Mittlerweile habe ich auch schon alles was ich zum wachrütteln brauche in /var/tmp und ein erstelltes wol.sh-skript funktioniert prima. Leider stelle ich erst jetzt fest dass ohne zusätzliche Modifikation (Freetz) kein Cronjob auf der FB vorhanden ist.

Vielleicht kann mir ja jemand sagen wie viele Stunden man dafür wieder mit lesen verbringen muß, bis man dann nen Cron am laufen hat? Ich nehme an es gibt da keine schnelle und einfache Lösung?

Tom
 
hallo.

deine annahme ist zu deinem glück falsch: für cron bräuchtest du nur eine andere busybox, z.b. von meiner homepage. freetz ist nicht zwingend notwendig! somit musst du crond mit einer selbsterstellten crontab starten. je nach cron-kenntnissen bräuchte man dafür ca 5 bis 60 minuten, meiner meinung nach. dazu brauchst du noch ein telnet zugang und musst debug.cfg bearbeiten: dafür bräuchte man je nach kenntnissen auch ein wenig zeit. also relativ einfach zu implementieren :)

viel spaß

gruß
 
Hallo Radislav,

erstmal vielen Dank für deine Antwort.

Nach dem ich deine tolle Seite besucht habe gings echt gut vorwärts. Die von mir benötigten Daten (busybox, wol, wol.sh, bftpd, bftpd.conf) habe ich auf meine Internetseite gelegt und das Verzeichnis geschützt (htpasswd). Danach die debug.cfg überarbeitet.

Code:
DOWNLOADPAGE='http://user:[email protected]/files/'
TEMP=/var/tmp

while !(ping -c 1 www.google.de); do sleep 5; done

cd $TEMP
wget $DOWNLOADPAGE/busybox
chmod +x busybox
chmod 777 busybox
./busybox

wget $DOWNLOADPAGE/wol
chmod +x wol
chmod 777 wol

wget $DOWNLOADPAGE/wol.sh
chmod +x wol.sh
chmod 777 wol.sh

#Verzeichnis für Crontab erstellen und root schreiben und cron starten
mkdir /var/spool
mkdir /var/spool/cron
mkdir /var/spool/cron/crontabs
echo '*/2 * * * * /var/tmp/wol.sh' > /var/spool/cron/crontabs/root
/var/tmp/busybox crond
echo 'Cron gestartet'

#bftp laden und starten
wget $DOWNLOADPAGE/bftpd
chmod +x bftpd

wget $DOWNLOADPAGE/bftpd.conf
chmod 777 bftpd.conf

# bdftp Passwort festlegen und bftpd starten
echo user:password:0:0:root:/:null >> /var/tmp/passwd

#bftpd starten
/var/tmp/bftpd -d -c /var/tmp/bftpd.conf
echo 'bftpd gestartet'
Bin mir sicher, da ich nicht der Profi in Sachen Linux bin, dass die eine oder andere Zeile entweder überflüssig oder nicht ganz perfekt ist aber es scheint zumindest alles zu funktionieren.

Für weitere Tips bin ich jederzeit zu haben.

Vielen Dank :)

Tom
 
hallo

nur ein paar kleine bemerkungen: im "chmod 777" ist schon "chmod +x" mitdabei. außerdem macht "echo 'Cron gestartet' " und "echo 'bftpd gestartet' " auch nicht sehr viel sinn, da du diese meldungen eher nicht sehen wirst. somit kannst du insgesamt 4 zeilen sparen, die aber nicht stören.

gruß
 
Hi,

jo beim chmod ist's hinterher eigentlich logisch. Klar echo-Ausgabe ist überflüssig aber beim 1. Testreboot der Box war's hilfreich.

Tom

PS: So und nun bastele ich wake on call rein ;)
 
Moin,

gibts hier Neuigkeiten?
Gibts WOC (Wake on Call) schon?


gr33z
 
Tach,
jo bei mir jetzt schon. Hatte hier irgendwo einen guten Vorschlag gefunden (leider weiß ich den Link nicht mehr, möge mir der Autor verzeihen) und diesen dann an meine Anforderungen angepasst (wg. der LS-Pro Duo). Bin kein Profi.

Benötigt oder modifiziert werden muß... (bftpd habe ich auskommentiert, brauche ich z.Z. nicht).
- debug.cfg
- woc.sh
- wol.sh
- woc_off.sh
- wol
- busybox

Die habe ich ein geschütztes Verzeichnis (.htaccess) auf meiner Internetseite geschoben.

debug.cfg:
Code:
DOWNLOADPAGE='http://Benutzer:[email protected]/files/'
TEMP=/var/tmp

while !(ping -c 1 www.google.de); do sleep 5; done

cd $TEMP
wget $DOWNLOADPAGE/busybox
chmod 777 busybox
./busybox

wget $DOWNLOADPAGE/wol
chmod 777 wol

wget $DOWNLOADPAGE/wol.sh
chmod 777 wol.sh

wget $DOWNLOADPAGE/woc.sh
cat /var/tmp/woc.sh > /var/flash/calllog

wget $DOWNLOADPAGE/woc_off.sh
chmod 777 woc_off.sh

#Verzeichnis für Crontab erstellen und root schreiben und cron starten
#alle 2 min ein WOL an die LS senden wenn gefordert
#nach 30 min LS ausschalten wenn zuvor WOC eingegangen
mkdir /var/spool
mkdir /var/spool/cron
mkdir /var/spool/cron/crontabs
echo '*/2 * * * * /var/tmp/wol.sh' > /var/spool/cron/crontabs/root
echo '*/30 * * * * /var/tmp/woc_off.sh' >> /var/spool/cron/crontabs/root
/var/tmp/busybox crond
echo 'Cron gestartet'

#bftp laden und starten
#wget $DOWNLOADPAGE/bftpd
#chmod +x bftpd

#wget $DOWNLOADPAGE/bftpd.conf
#chmod 777 bftpd.conf

# bdftp Passwort festlegen und bftpd starten
#echo Benutzer:CodedPassword:0:0:root:/:null >> /var/tmp/passwd

#bftpd starten
#/var/tmp/bftpd -d -c /var/tmp/bftpd.conf
#echo 'bftpd gestartet'

In wol.sh wird geprüft ob eine bestimmte IP (in diesem Fall meine Sonos Zonebridge) erreichbar ist oder ob die Datei 'woc_state_1' vorhanden ist. Falls ja wird ein WOL an meine LS gesendet. Wol.sh wird alle 2 min (vgl. debug.cfg bzw. crontab) durchlaufen.

wol.sh:
Code:
#!/bin/sh

#WOCDATEI
file="/var/tmp/woc_state_1"

#LINKSTATION
MACADR=00:00:00:00:00:00
IPADR=192.168.2.99

#SONOS
CHKIP1=192.168.2.98

#WOL Senden

dowol () {
./var/tmp/wol $MACADR -i $IPADR -p 9
}

WOLDONE=0

if [ $WOLDONE -eq 0 ]; then
   ping -c 1 $CHKIP1
   if [ $? -eq 0 -o -f "$file" ]; then
      WOC_STATE="1"
      echo "Sonos is alive..."
      dowol
      WOLDONE=1
   fi
fi

Die woc.sh wird bereits in der debug.cfg in die Datei calllog geschrieben. Calllog wird aufgerufen, sobald ein Anruf eingeht. Ich wähle z.B. mit nem Handy meine Internetrufnummer an. Schaltet dann die LS sofort ein und legt eine Datei 'woc_state_1' an, dessen Vorhandenheit in wol.sh abgefragt wird. Man könnte sich das sofortige einschalten auch sparen, würde ohnehin von wol.sh erledigt aber warum max. 2min warten (crontab)?

woc.sh (calllog):
Code:
#!/bin/sh

# MAC Adresse fuer das Wecken eines PC
MACADR="00:00:00:00:00:00"

# NIC für das senden des WoL-Packages
# LAN1 = eth0 usw.
IPADR="192.168.2.99"

# Kommando zum wecken des PC's
startpc="/var/tmp/wol $MACADR -i $IPADR -p 9"

# Wenn ein Anruf auf diesem SIP Port erfolgt, dann soll er meinen Rechner starten
# SIP Port Nummer gibts hier: FBF Web-Interface öffnen / Telefonie / Internettelefonie
# Achtung: SIP-Nummer ist eins kleiner als der Wert unter "Auswahl", zumindest bei mir.
# Beispiel: Wenn *123# der Internetrufnummer 12345 zugeordnet ist
# Wenn Wake-On-Call deaktivert werden soll, dann irgendwas eintragen
wolsip="SIP0#012341234567"

# Wer darf den PC per WOL über Tel aufwecken?
# jeder      Jeder der die Nummer $wolsip anruft, darf den Rechner aufwecken
# TelNummer  Wenn es nur eine bestimmte Tel-Nummer darf
woltel="01231234567"

# $wolsip und $woltel lassen sich im $logfile kontrollieren
# Denn manchmal wird die Nummer nicht so übermittelt 0123... sondern so +49123...
# Bitte kontrollieren und entsprechend hier eintragen

localdir="/var/tmp"
logfile="/var/tmp/woc.log"

# Pruefen ob die angerufende Nr die WOL-SIP ist
if [ "$3" = "$wolsip" ]; then
 # Prüfen ob jeder den Rechner wecken darf. Wenn "jeder" dann wecken
 if [ "$woltel" = "jeder" ]; then
   $startpc
   statuscode="OK:EVERYONE_ALLOWED"
 else
   # Dann darf es wohl nur eine bestimmte Nummer
   # Prüfen ob es die bestimmte Nummer ist
   if [ "$1" = "$woltel" ]; then
     $startpc
     statuscode="OK:ALLOWED_USER"
     touch /var/tmp/woc_state_1
   else
     statuscode="FAIL:INTRUDER"
   fi
 fi
else
 statuscode="INFO:NO_WOC"
fi
# Im Produktiv-Einsatz auskommentieren:
# echo "$1 ($woltel),$2,$3 ($wolsip),$4,$5,$statuscode" >>$logfile

Nun schalte ich ja nach einer Zeit (30min) die LS wieder aus. Kann ja jeder halten wie er will..., dazu wird alle 30min die Datei woc_off.sh durchlaufen und eine evtl. vorhandene Datei 'woc_state_1' (wenn WOC eingegangen) gelöscht.

woc_off.sh:
Code:
#!/bin/sh

#WOCDATEI
file="/var/tmp/woc_state_1"

if [ -f "$file"  ]; then rm $file; fi

Zusammenfassung:
Zwei Cronjobs laufen, alle 2 min wird wol.sh aufgerufen und alle 30 min woc_off.sh. Ist eine bestimmte IP erreichbar, wird in spätestens 2 min die LS per WOL geweckt. LS bleibt dann solange wach bis IP offline.

ODER/UND

Geht ein bestimmter Anruf ein, wird calllog aufgerufen und LS geweckt. Gleichzeitig wird leere Datei woc_state_1 angelegt. Nach spätestens 2min wird LS wach. Nach 30min wird woc_state_1 gelöscht und kurz danach geht LS aus.

Gruß
Tom
 
Hallo, wie müßte die wol.sh aussehen, um die Aktivität mehrerer Computer zu prüfen, also in der Art WENN PC1 oder PC2 oder PC3 da DANN wecke die LS. Ich habe leider wenig Ahnung von linux shell scripting.
 
Lange Variante, einfach Script verlängern...

Code:
#!/bin/sh

#WOCDATEI
file="/var/tmp/woc_state_1"

#LINKSTATION
MACADR=00:00:00:00:00:00
IPADR=192.168.2.99

#PC1
CHKIP1=192.168.2.10

#PC2
CHKIP2=192.168.2.11

#PC3
CHKIP3=192.168.2.12

#WOL Senden
dowol () {
./var/tmp/wol $MACADR -i $IPADR -p 9
}

WOLDONE=0

if [ $WOLDONE -eq 0 ]; then
   ping -c 1 $CHKIP1
   if [ $? -eq 0 -o -f "$file" ]; then
      WOC_STATE="1"
      echo "PC1 is alive..."
      dowol
      WOLDONE=1
   fi
fi


if [ $WOLDONE -eq 0 ]; then
    ping -c 1 $CHKIP2
    if [ $? -eq 0 ]; then
       echo "PC3 is alive..."
       dowol
       WOLDONE=1
    fi
fi

if [ $WOLDONE -eq 0 ]; then
   ping -c 1 $CHKIP3
    if [ $? -eq 0 ]; then
       echo "PC3 is alive..."
       dowol
       WOLDONE=1
    fi
fi

Kurze Variante (ungetestet):

Code:
#!/bin/sh

#WOCDATEI
file="/var/tmp/woc_state_1"

#LINKSTATION
MACADR=00:00:00:00:00:00
IPADR=192.168.2.99

HOSTS="192.168.2.10 192.168.2.11 192.168.2.12" 

#WOL Senden
dowol () {
./var/tmp/wol $MACADR -i $IPADR -p 9
}

WOLDONE=0

# IP's prüfen
if [ $WOLDONE -eq 0 ]; then
		for host in $HOSTS ; do
			if ( ping -c 1 -w 1 "$host" ) > /dev/null; then
				dowol
       			        WOLDONE=1
			fi	
		done 
fi
 
loop von IP 20 bis 50

Danke, ich habe inzwischen das gebastelt und es geht (auf dem PC)
Code:
WOLDONE=0
let x=20

if [ $WOLDONE -eq 0 ]; then
  while [[ $x != 51 ]]
  do
    ping -c 1 192.168.10.$x
   
    if [ $? -eq 0 -o -f "$file" ]; then
      WOC_STATE="1"
      echo "$x is alive..."
      dowol
      WOLDONE=1
      else
      echo "$x is down..."
    fi
    let "x = x + 1"
  done
fi
 
WOL will nicht

Hallo, irgendwie will das bei mir nicht stabil laufen. :mad: Ich habe es nach o. g. script aktiv und der cron job läuft auch brav, aber ein aufzuweckender PC will par tout nicht starten sein Befehl & Antwort lautet
Code:
# $TEMP/wol 00:19:99:70:8D:4A -i 192.168.10.20 -p 9
Waking up 00:19:99:70:8D:4A...
Der Knopf "Computer starten" der Fritzbox-Oberfläche weckt ihn aber zuverlässig auf.
Wie bekomme ich genau das hin, was der Knopf macht?
 
tja...scheinbar frisst die FB das Magic Paket...ich kann vom Laptop aus auch mein NAS nicht aufwecken (von der FB direkt aus gehts). Weiterhelfen kann in diesem Forum scheinbar niemand...
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.