WOC / LCR / autom. reboot

Homer Simpson

Neuer User
Mitglied seit
10 Feb 2006
Beiträge
141
Punkte für Reaktionen
0
Punkte
16
Hallo zusammen,

weiß leider nicht mehr weiter. FBF 7050, aktuelle firmware 14.04.15, gewünschte features:

  • FTP
  • SSH
  • WOL / Etherwake
  • WOC
  • TSB-LCR
  • automatischer reboot alle 7 Tage zu bestimmter Uhrzeit

FTP, SSH, WOL (mit putty) funktionieren prima. WOL bzw. Putty hab ich intern und extern erfolgreich getestet. Keine Probleme.

WOC, TSB-LCR und der automatische reboot machen aber Probleme. Einmal hatte ich bisher eine Reaktion in telnet bei einem Anruf einer zugelassenen Nummer. Fehlermeldungen:
  • telefon: '/var/calllog' script not found!
  • telefon: '/var/flash/calllog' script not found!

Beim nächsten Versuch kam keine Reaktion mehr in telnet. Der TSB-LCR scheint auch nicht geladen zu werden. Ebenso der Sleep-Job zum automatischen Reboot der FBF alle 7 Tage um 05:00. Vielleicht sind TSB-LCR und der Reboot ja Folgeprobleme von WOC.

Hier meine debug.cfg (Benutzernamen, Passwörter, MAC-Adressen und Telefonnummern sind natürlich nicht echt):

Code:
#####################################################
# Warten bis die FritzBox den Server erreichen kann #
#####################################################

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

#####################################################
# Installation FTP-Server, Etherwake und SSH-Server #
#####################################################

cd /var/tmp
wget http://www.tecchannel.de/download/432803/bftpd.conf
wget http://www.tecchannel.de/download/432803/bftpd

######################
# ausfuehrbar machen #
######################

chmod +x /var/tmp/bftpd
chmod 777 /var/tmp/bftpd.conf

##################################################
# Usernamen und den Passwort-Hash für FTP-Server #
##################################################

echo "Name:passwort-hash:0:0:root:/:null" >> /var/tmp/passwd
/var/tmp/bftpd -d -c /var/tmp/bftpd.conf

##########################################
# Etherwake laden und ausfuehrbar machen #
##########################################

wget http://www.tecchannel.de/download/432967/etherwake
chmod +x etherwake

#####################################################
# SSH-Server dropbear laden und ausfuerhrbar machen #
#####################################################

wget http://www.tecchannel.de/download/432967/dropbear
sleep 10
chmod +x /var/tmp/dropbear

##################
# Start dropbear #
##################

ln -s /var/tmp/dropbear dropbearkey
sleep 10
/var/tmp/dropbearkey -t rsa -f /var/tmp/dropbear_rsa_hostkey -s 512
cp -p /var/tmp/shadow /var/tmp/tmp_shadow

#####################################
# Hash des root-Passworts eintragen #
#####################################

sed -e "/root:/s#^root:[^:]*:#root:passwort-hash:#" /var/tmp/tmp_shadow > /var/tmp/shadow
sleep 5
/var/tmp/dropbear -r /var/tmp/dropbear_rsa_hostkey

###############
# Wake on LAN #
###############

############################################################################################
# Interface der Fritzbox eth0 oder eth1 und die MAC-Adresse des zu weckenden PCs eintragen #
############################################################################################

sleep 5
echo "/var/tmp/etherwake -i eth0 XX:XX:XX:XX:XX:XX" > /var/tmp/start_pc1

################################
# start_pc1 ausfuehrbar machen #
################################

sleep 15
chmod +x /var/tmp/start_pc1

#############################
# wake-on-call config START #
#############################

# Wenn ein Anruf auf diesem SIP Port erfolgt, dann soll mein Rechner gestartet werden
# SIP Port Nummer: FBF Web-Interface öffnen / Telefonie / Internettelefonie
# Beispiel: *124# ist dann z.B. SIP4
# Wenn Wake-On-Call deaktivert werden soll, dann irgendwas eintragen
wolsip=SIP5

# 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
woltel1=01xxxxxxxxx
woltel2=02xxxxxxxxx
woltel3=06xxxxxxxxx

# $wolsip, $woltel1, $woltel2 und $woltel3 lassen sich in $localdir/wake-on-call.info kontrollieren,
# denn manchmal wird die Nummer nicht so übermittelt 0123... sondern so +49123...
# Bitte kontrollieren und entsprechend hier eintragen

############################
# wake-on-call config ENDE #
############################


######################
# wake-on-call START #
######################

# wake-on-call.sh erstellen
cat > /var/tmp/wake-on-call.sh << 'END'
#!/bin/sh
trap "" SIGCHLD
# stdin: Ausgabe vom Telefon Daemon wird erwartet
while read line
do
case ${line} in
*IncomingCall:*)
caller=${line#*caller: \"}
caller=${caller%%\"*}
called=${line#*called: \"}
called=${called%%\"*}
echo Angerufene Nummer = $called  > /var/tmp/wake-on-call.info
echo Nummer des Anrufers = $caller >> /var/tmp/wake-on-call.info
END
echo "# Pruefen ob die angerufende Nr die WOL-SIP ist" >> /var/tmp/wake-on-call.sh
echo "if [ "$"called = $wolsip ]; then" >> /var/tmp/wake-on-call.sh
echo "# Prüfen ob der caller den Recher wecken darf" >> /var/tmp/wake-on-call.sh
echo "if [ jeder = $woltel1 -o "$"caller = $woltel1 -o "$"caller = $woltel2 -o "$"caller = $woltel3 ]; then" >> /var/tmp/wake-on-call.sh
echo "/var/tmp/start_pc1" >> /var/tmp/wake-on-call.sh
echo "fi" >> /var/tmp/wake-on-call.sh
echo "fi" >> /var/tmp/wake-on-call.sh
cat >> /var/tmp/wake-on-call.sh << 'END';;
esac
done
END
sleep 5
chmod +x /var/tmp/wake-on-call.sh

#wake-on-call einbinden
# Telefon Daemon neu starten; Ausgabe ge-piped nach wake-on-call.sh
if [ -x /var/tmp/wake-on-call.sh ]
then
sleep 4
# Telefon Daemon sicher stoppen
killall -15 telefon
sleep 4
killall -9 telefon
rm -f /var/run/telefon.pid
sleep 4
# Telefon Daemon starten
telefon 1 a127.0.0.1 | /var/tmp/wake-on-call.sh &
fi

#####################
# wake-on-call ENDE #
#####################


#######################
# Telefonsparbuch LCR #
#######################

sleep 20
/bin/update_led_on
while !(ping -c 1 lcr.telefonsparbuch.de); do sleep 5; done;
wget -qO /var/tmp/tsbinstaller http://lcr.telefonsparbuch.de/software/fritzbox/ xrelease_lcr_updater_installer
sleep 10
chmod 755 /var/tmp/tsbinstaller
/var/tmp/tsbinstaller
/bin/update_led_off
/var/tmp/tsb/tsbdaemon &

############################
# Telefonsparbuch LCR Ende #
############################


##########################################################
# automatischer Reboot der Fritzbox alle 7 Tage um 05:00 #
##########################################################

sleep <590000>; await() {
  local day=$((60*60*24))
  sleep $(( ($(date -d $(date +%m%d$1%Y) +%s) - $(date +%s) + $day) % $day ))
}
(await 0500; reboot) &

#############################
# automatischer Reboot Ende #
#############################

Hoffe, daß ich hier Hilfe bekomme. und sich jemand meiner debug.cfg annimmt. Spielt die Reihenfolge der einzelnen Features eine Rolle? Sollte diese vielleicht in der debug.cfg geändert werden? Sollten zusätzliche sleeps eingebaut werden? Wenn ja, wo sinnvollerweise? Sind vielleicht Befehle für die firmware-Version anders?

Vielen Dank schonmal, Gruß

Homer Simpson

P.S: das Forum ist echt spitze! Juhu (OT Homer Simpson) :cool:
 
Eine Signatur wäre hilfreich ...

Wenn du ne akt. FW hast, dann muss der WOC-Teil geändert werden,
das Neustarten von telefon und Anlegen von wake-on-call.sh ist dann nicht mehr nötig bzw. muss geändert werden.
"Programme durch Anruf starten" kann man über die Datei /var/flash/calllog.

Wenn noch nix drin, dann mit "echo > /var/flash/calllog" erst anlegen ... dann mit nvi bearbeiten

siehe dazu z.B. auch http://www.ip-phone-forum.de/showthread.php?t=96876
oder http://www.ip-phone-forum.de/showthread.php?t=116838
 
Zuletzt bearbeitet:
WOC etwa so?

Hallo u.g.,

danke für die Rückmeldung und den Hinweis mit der Signatur. Hab ich nun erstellt. Könnte die Lösung für WOC etwa so aussehen?:

Code:
#############################
# wake-on-call config START #
#############################

# Wenn ein Anruf auf diesem SIP Port erfolgt, dann soll mein Rechner gestartet werden
# SIP Port Nummer: FBF Web-Interface öffnen / Telefonie / Internettelefonie
# Achtung: SIP-Nr. ist eins kleiner, als Auswahl
# Beispiel: *124# ist dann z.B. SIP3
# Wenn Wake-On-Call deaktivert werden soll, dann irgendwas eintragen
wolsip="SIP4"

# 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
woltel1=016xxxxxxxx
woltel2=02xxxxxxxxx
woltel3=06xxxxxxxxx

# $wolsip, $woltel1, $woltel2 und $woltel3 lassen sich in /var/tmp/woc.info kontrollieren,
# denn manchmal wird die Nummer nicht so übermittelt 0123... sondern so +49123...
# Bitte kontrollieren und entsprechend oben eintragen

############################
# wake-on-call config ENDE #
############################


######################
# wake-on-call START #
######################

# calllog erstellen
cat > /var/tmp/calllog << 'END'
#!/bin/sh
# 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 [ "$woltel1" = "jeder" ]; then
/var/tmp/start_pc1
statuscode="OK: alle Anrufer sind zugelassen"
else
# Ansonsten darf es wohl nur eine bestimmte Nummer
# Prüfen ob es eine der erlaubten Nummern ist
if [ "$1" = "$woltel1" -o "$1" = "$woltel2" -o "$1" = "$woltel3" ]; then
/var/tmp/start_pc1
statuscode="OK: der Anrufer ist zugelassen"
else
statuscode="Fehler: der Anrufer ist nicht zugelassen"
fi
fi
else
statuscode="Info: kein WOC"
fi
# Ausgabe in woc.info:
echo "Nummer des Anrufers: $1, $2, Angerufene Nummer: $3, $4, $5, $statuscode" >> /var/tmp/woc.info
END
# calllog fertig

##############################
# calllog ausfuehrbar machen #
##############################

chmod +x /var/flash/calllog

#####################
# wake-on-call ENDE #
#####################

Wichtig ist mir, daß es mehrere zugelassene Rufnummern gibt. Wofür stehen "$1" bis "$5"? Sind das die Zeilennummern in einem Anrufprotokoll? Wenn ja, wo finde ich dieses? Wenn es Variablen wären, kann ich nirgends die Definition dazu finden :noidea:

Funktioniert die Ausgabe in der woc.info so?

Danke, Gruß

Homer Simpson
 
Homer Simpson schrieb:
Wofür stehen "$1" bis "$5"? Sind das die Zeilennummern in einem Anrufprotokoll?
Das sind die Argumente mir denen das Script aufgerufen wird, $1 das erstem $2 das zweite... $0 der name des Scriptes selbst.

Tschö, Jojo
 
Hallo jojo-Schmitz,

versteh ich auf Anhieb nicht so ganz. Müssen diese Argumente dann nicht irgendwo definiert sein oder vorkommen??? In dem obigen Sript sind dann also $2, $4 und $5 für die Ausgabe in /var/tmp/woc.info überflüssig, da diese Argumente nicht verwendet werden?

Versteh ich das richtig:
  • $3 = wolsip = SIP4 ($3 ist Platzhalter für wolsip und das wiederum für SIP4)?
  • $1 = woltel1 od. woltel2 od. woltel3 = 016xxxxxxxx od. 02xxxxxxxxx od. 06xxxxxxxxx ($1 ist Platzhalter für woltel1 od. 2 od. 3 und diese wiederum für die 3 zugelassenen Telefonnummern)?

Ist die Ausgabe dann für die woc.info so korrekt:
echo "Nummer des Anrufers: $1, Angerufene Nummer: $3, $statuscode" >> /var/tmp/woc.info

Kannst ansonsten die Funktionalität des WOC-Scripts nachvollziehen? Danke für Deine Bemühungen!

Gruß, Homer Simpson
 
$<n> sind Variablen der Shell, daher brauchen die nicht im Script definiert werden.
Ebenso $? (exits status des letzten Kommandos), $# (Anzahl der Argument), $! (PID des letzten Hintergrund Prozesses), $@ und $* (jeweils die gesammte Argumentenliste)

Wenn ein Script "A" heißt und mit "./A B C D" aufgerufen wird, enthält $0 eben ./A, $1 enthält B, $2 enhält C usw. $# enthält dann 3.

/var/flash/calllog wird von der Box, falls vorhanden, mit bis zu 5 Argumenten aufgerufen. Ausser für eine Ausgabe (per 'echo' nach woc.info) werden dort anscheinen nur $1 und $3 verwendet. Ob die Ausgabe der anderen in woc.info sinnvoll ist oder nicht, ist alleine Deine Entscheidung.

Soweit ich das sehen kann, wird calllog nur mit max. 3 Argumenten aufgerufen, der Nummer des Anrufenden (wenn unbekannt bzw. unterdrückt, sind's nur 2 Argumente), die angerufene Nummer und die Schnittstelle (SIP0 oder POTS).

Tschö, Jojo
 
@ Homer:

Leg dir einfach erstmal mit nvi /var/flash/calllog mit folgendem Inhalt an:
echo "1=$1# 2=$2# 3=$3# 4=$4# 5=$5#" >> /var/tmp/tel.log

Ruf dann von der gewünschten Rufnr (zb 017xxx) auf die anzurufende an (zb 030xxx) und kuck
dir dann /var/tmp/tel.log an.

Dann brauchste im Prinzip nur deine calllog zu ersetzen/ergänzen durch:
Code:
if [ "$1" = "017xxx ] && [ "$2" = "030xxx" ] ; then
  [FONT=monospace]/var/tmp/start_pc1
fi[/FONT]

Und den Block dann jeweils für andere zugelassene Nummern kopieren
und anpassen (unschön, aber so viel Nummern werden es nicht sein, oder?)

EDIT zu #3:
Du erzeugst /var/tmp/calllog. Wozu ?
Der evtl. angepasste Inhalt bzw. obiges muss in /var/flash/calllog.
Deren Inhalt überlebt einen Neustart, daher brauchst du das Anlegen davon nicht jedesmal über die debug.cfg zu machen.


 
Zuletzt bearbeitet:
Hallo u.g,

dank nochmal für Deine Rückmeldung. Hab jetzt im Script den LCR und den reboot erstmal rausgeschmissen und noch ein bißchen an dem WOC-Teil weitergemacht. Den Fehler mit dem erzeugen des calllog im var-Verzeichnis habe ich auch gefunden und korrigiert. Jetzt sieht der WOC-Teil so aus:

Code:
#############################
# wake-on-call config START #
#############################

# Wenn ein Anruf auf diesem SIP Port erfolgt, dann soll mein Rechner gestartet werden
# SIP Port Nummer: FBF Web-Interface oeffnen / Telefonie / Internettelefonie
# Achtung: SIP-Nr. ist eins kleiner, als Auswahl
# Beispiel: *124# ist dann z.B. SIP3
# Wenn Wake-On-Call deaktivert werden soll, dann irgendwas eintragen
wolsip="SIP4"

# Wer darf den PC per WOL ueber Tel aufwecken?
# jeder  Jeder der die Nummer $wolsip anruft, darf den Rechner aufwecken
# TelNummer, wenn es nur eine bestimmte Tel-Nummer darf
woltel1=01xxxxxxxxx
woltel2=02xxxxxxxxx
woltel3=06xxxxxxxxx

# $wolsip, $woltel1, $woltel2 und $woltel3 lassen sich in /var/tmp/woc.info kontrollieren,
# denn manchmal wird die Nummer nicht so uebermittelt 0123... sondern so +49123...
# Bitte kontrollieren und entsprechend oben eintragen

############################
# wake-on-call config ENDE #
############################


######################
# wake-on-call START #
######################

# calllog erstellen
cat > /var/flash/calllog << 'END'
#!/bin/sh
# Pruefen ob die angerufende Nr. die WOL-SIP ist
if [ "$3" = "$wolsip" ]; then
# Pruefen ob jeder den Rechner wecken darf. Wenn "jeder" dann wecken
if [ "$woltel1" = "jeder" ]; then
/var/tmp/start_pc1
statuscode="OK: alle Anrufer sind zugelassen"
else
# Ansonsten darf es wohl nur eine bestimmte Nummer
# Pruefen ob es eine der erlaubten Nummern ist
if [ "$1" = "$woltel1" -o "$1" = "$woltel2" -o "$1" = "$woltel3" ]; then
/var/tmp/start_pc1
statuscode="OK: der Anrufer ist zugelassen"
else
statuscode="Fehler: der Anrufer ist nicht zugelassen"
fi
fi
else
statuscode="Info: kein WOC"
fi
# Ausgabe in woc.info:
echo "Datum/Uhrzeit: 'date +\"%d.%m.%y %H:%M\"', Nummer des Anrufers: $1, $2, Angerufene Nummer: $3, $4, $5, $statuscode" >> /var/tmp/woc.info
END
# calllog fertig

##############################
# calllog ausfuehrbar machen #
##############################

sleep 30
chmod +x /var/flash/calllog

#####################
# wake-on-call ENDE #
#####################

Bekomme im telnet dann bei einem Anruf (mit einer zugelassenen Nummer) die angehängte Fehlermeldung. Das mit /var/calllog versteh ich nicht. Da ist nie die Rede von im Script. Warum also die Fehlermeldung? Was sagt mir die zweite Fehlermeldung? Was muss ich ändern?

Müsste es zum Start des PC nicht besser heissen:

cd /var/tmp
./start_pc1

Ein Aufruf im telnet mit /var/tmp/start_pc1 führt zu der Fehlermeldung, daß die Datei nicht existiere. Der Weg mi "./" funktioniert aber.

Was passiert, wenn ich am Ende des WOC-Scripts weitermachen will? Das steht momentan das Ende meiner debug. Wie kann ich sicherstellen, dass das nicht auch in den calllog geschrieben wird?

Danke, Gruß

Homer Simpson
 

Anhänge

  • telnet_woc_21112006.jpg
    telnet_woc_21112006.jpg
    68.9 KB · Aufrufe: 16
Homer Simpson schrieb:
Bekomme im telnet dann bei einem Anruf (mit einer zugelassenen Nummer) die angehängte Fehlermeldung. Das mit /var/calllog versteh ich nicht. Da ist nie die Rede von im Script. Warum also die Fehlermeldung? Was sagt mir die zweite Fehlermeldung? Was muss ich ändern?
Die Box scheint sowohl /var/calllog als auch /var/flash/calllog aufzurufen, /var/calllog existiert aber nicht -> Fehlermeldung. Diese stört aber nicht weiter, da ja im nächsten Veruch das Script in /var/flas/callog gefunden wird. Falls es Dich dennoch stört, erzeuge Dir eine symlink /var/calllog der nach /var/flash/callog zeigt. Das allerdings nach jedem reboot...

Die zweite Fehlermeldung verstehe ich auch nicht, ich kann keinen Fehler entdecken. Vergleiche nochmal exakt dein Script mit dem das Du heir gepostet hast. Ein paar Einrückungen zwischen den if ... else ... fi könnten die Übersichtlichkeit erhöhen...
ein 'set -x' (bzw. #!/bin/sh -x)' schaltet den debug output ein, man sieht evtl. wo das Script langrennt und warum.

Das 'sleep 30' scheint mir überflüssig zu sein.

Die Fehlermeldung deutet auf Zeile 35 des Scripts calllog, Dein hier gepostetes ist aber kürzer!


Homer Simpson schrieb:
Müsste es zum Start des PC nicht besser heissen:

cd /var/tmp
./start_pc1

Ein Aufruf im telnet mit /var/tmp/start_pc1 führt zu der Fehlermeldung, daß die Datei nicht existiere. Der Weg mi "./" funktioniert aber.
'/var/tmp/start_pc' und 'cd /var/tmp;./start_pc' bewirken exakt dasselbe. Sollte es zumindest...

Homer Simpson schrieb:
Was passiert, wenn ich am Ende des WOC-Scripts weitermachen will? Das steht momentan das Ende meiner debug. Wie kann ich sicherstellen, dass das nicht auch in den calllog geschrieben wird?
Das ist doch schon sichergestellt. Du arbeitest mit einem 'here-document'
Code:
cat << 'END'
some text
END
END ist hier das EOF des here-documents.

Tschö, Jojo
 
Hallo jojo-schmitz,

danke für Deine Geduld und Deine Rückmeldung.

1. wie funktioniert das mit dem Symlink?
2. das hier gepostete Script ist aus der debug.cfg 1:1herauskopiert; ich hab lediglich die Telefonnummern unkenntlich gemacht
3. #!/bin/sh ergänze ich mal mit -x
4. sleep 30: habe festgestellt, daß es häufig etwas länger dauert, bis Dateirechte gesetzt werden. Deshalb dies als Puffer.
5. ein Aufruf der start_pc1 funktioniert wirklich nur mit cd /var/tmp; ./start_pc1 (habs mehrfach versucht)
6. bevor ich LCR und reboot rausgeschmissen hatte, standen diese hinter dem WOC-Teil. Das END hat leider nicht das bewirkt, was Du geschrieben hast. Der LCR- und Reboot-Teil wurden auch in calllog geschrieben. Warum auch immer... Ich habe auch gedacht, daß alles bis zu dem END in den callog geschrieben wird und was danach folgt nicht mehr. Muss vielleicht irgendwo noch ein Befehl oder ein Komma/Strichpunkt gesetzt werden?
7. ich habe auch verzweifelt nach Zeile 35 gesucht... (ich nehme mal an, daß Kommentar- und Leerzeilen nicht zum script gehören).

Ich versuch mal, das mit dem einrücken zu machen und poste dann das Ergebnis wieder. Ich hoffe weiter auf Deine Geduld :rolleyes: :rolleyes: :rolleyes:

Danke, Gruß

Homer Simpson
 
Homer Simpson schrieb:
1. wie funktioniert das mit dem Symlink?
ln -s /var/flash/calllog /var/calllog
Homer Simpson schrieb:
2. das hier gepostete Script ist aus der debug.cfg 1:1herauskopiert; ich hab lediglich die Telefonnummern unkenntlich gemacht
mit 'cat'? Schau's Dir mal mit nvi an. Siehst Du ^M an den Zeilenenden?
Homer Simpson schrieb:
3. #!/bin/sh ergänze ich mal mit -x
4. sleep 30: habe festgestellt, daß es häufig etwas länger dauert, bis Dateirechte gesetzt werden. Deshalb dies als Puffer.
Glaube ich nicht, wenn chmod zurückkomt, hat es seine Arbeit erledigt und wenn nicht gibt's 'ne Fehlermeldung.
Homer Simpson schrieb:
5. ein Aufruf der start_pc1 funktioniert wirklich nur mit cd /var/tmp; ./start_pc1 (habs mehrfach versucht)
Wie genau sieht start_pc1 aus?
Homer Simpson schrieb:
6. bevor ich LCR und reboot rausgeschmissen hatte, standen diese hinter dem WOC-Teil. Das END hat leider nicht das bewirkt, was Du geschrieben hast. Der LCR- und Reboot-Teil wurden auch in calllog geschrieben. Warum auch immer... Ich habe auch gedacht, daß alles bis zu dem END in den callog geschrieben wird und was danach folgt nicht mehr. Muss vielleicht irgendwo noch ein Befehl oder ein Komma/Strichpunkt gesetzt werden?
Nein. Aber bist Du sicher, dass dort im UNIX Formant (LF only) und nicht im DOS/Windows Format (CR/LF) gearbeitet wird?
Homer Simpson schrieb:
7. ich habe auch verzweifelt nach Zeile 35 gesucht... (ich nehme mal an, daß Kommentar- und Leerzeilen nicht zum script gehören).
Kommentar- und Leerzeilen zählen mit. Wenn dein END nocht beachtet wird, stimmen die 35 Zeilen auch...
Dieses END muss ganz alleine auf einer Zeile stehen, nix davor und nix dahinter (auch kein CR, nur ein LF!)

Ich habe das Script (mit kleinen Anpassungen) mal unter UNIX laufen gelassen: es funktioniert!

Mit was, sprich mit welchem Editor, hast Du Dein Script erzeugt? Ich habe schwer den Verdacht, dass Du hier ein CR/LR Problem hast...

Tschö, Jojo
 
Hallo jojo schmitz,

bin Dir sehr dankbar!!!

Ich bearbeite die debug.cfg immer mit Notepad2 und speicher auch im Unix-Format (s. Anlage). So habe ich auch den WOC-Teil dort mit der Maus markiert und mit Strg + C herauskopiert und als Code hier im thread eingefügt. Mit vi kenn ich mich leider überhaupt nicht aus... Finde den Notepad2-Editor wesentlich praktischer.

Die start_pc1 sieht folgendermassen aus und funktioniert auch mit putty (Mac-Adresse ist hier natürlich falsch):

Code:
############################################################################################
# Interface der Fritzbox eth0 oder eth1 und die MAC-Adresse des zu weckenden PCs eintragen #
############################################################################################

sleep 5
echo "/var/tmp/etherwake -i eth0 XX:XX:XX:XX:XX:XX" > /var/tmp/start_pc1

################################
# start_pc1 ausfuehrbar machen #
################################

sleep 15
chmod +x /var/tmp/start_pc1

Hab das Script mal leicht geändert ('-x' gesetzt, sleep 30 raus, 'ln -s /var/flash/calllog /var/calllog' gesetzt, '/var/tmp/start_pc1' durch 'cd /var/tmp; start_pc1' ersetzt) und optisch mit Leerzeichen eingerückt. Änderungen sind in roter Schrift.

Hier das Ergebnis:

Code:
#############################
# wake-on-call config START #
#############################

# Wenn ein Anruf auf diesem SIP Port erfolgt, dann soll mein Rechner gestartet werden
# SIP Port Nummer: FBF Web-Interface oeffnen / Telefonie / Internettelefonie
# Achtung: SIP-Nr. ist eins kleiner, als Auswahl
# Beispiel: *124# ist dann z.B. SIP3
# Wenn Wake-On-Call deaktivert werden soll, dann irgendwas eintragen
wolsip="SIP4"

# Wer darf den PC per WOL ueber Tel aufwecken?
# jeder  Jeder der die Nummer $wolsip anruft, darf den Rechner aufwecken
# TelNummer, wenn es nur eine bestimmte Tel-Nummer darf
woltel1=01xxxxxxxxx
woltel2=02xxxxxxxxx
woltel3=06xxxxxxxxx

# $wolsip, $woltel1, $woltel2 und $woltel3 lassen sich in /var/tmp/woc.info kontrollieren,
# denn manchmal wird die Nummer nicht so uebermittelt 0123... sondern so +49123...
# Bitte kontrollieren und entsprechend oben eintragen

############################
# wake-on-call config ENDE #
############################


######################
# wake-on-call START #
######################

# calllog erstellen
cat > /var/flash/calllog << 'END'
#!/bin/sh [COLOR="Red"]-x[/COLOR]
# Pruefen ob die angerufende Nr. die WOL-SIP ist
if [ "$3" = "$wolsip" ]; then
 # Pruefen ob jeder den Rechner wecken darf. Wenn "jeder" dann wecken
 if [ "$woltel1" = "jeder" ]; then
   [COLOR="Red"]cd /var/tmp; start_pc1[/COLOR]
   statuscode="OK: alle Anrufer sind zugelassen"
 else
   # Ansonsten darf es wohl nur eine bestimmte Nummer
   # Pruefen ob es eine der erlaubten Nummern ist
   if [ "$1" = "$woltel1" -o "$1" = "$woltel2" -o "$1" = "$woltel3" ]; then
     [COLOR="Red"]cd /var/tmp; start_pc1[/COLOR]
     statuscode="OK: der Anrufer ist zugelassen"
   else
     statuscode="Fehler: der Anrufer ist nicht zugelassen"
   fi
 fi
else
statuscode="Info: kein WOC"
fi
# Ausgabe in woc.info:
echo "Datum/Uhrzeit: 'date +\"%d.%m.%y %H:%M\"', Nummer des Anrufers: $1, $2, Angerufene Nummer: $3, $4, $5, $statuscode" >> /var/tmp/woc.info
END
# calllog fertig

##############################
# calllog ausfuehrbar machen #
##############################

[COLOR="Red"]ln -s /var/flash/calllog /var/calllog[/COLOR]
chmod +x /var/flash/calllog

#####################
# wake-on-call ENDE #
#####################

Gruß, Homer Simpson
 

Anhänge

  • notepad2.jpg
    notepad2.jpg
    39.5 KB · Aufrufe: 16
Du zeigst wie Deine debug.cfg aussieht, ich wollte aber wissen wie Deine start_pc1 und Deine calllog aussieht...

Funktioniert es denn jetzt?

Tschö, Jojo
 
Hallo jojo schmitz,

was meinst Du genau mit "wie die aussieht"? Hab nur den Teil aus der debug.cfg. Hab mir mal in Notepad2 die "line endings" anzeigen lassen. Nur LF zu sehen.

Ob das funktioniert kann ich erst heute abend ausprobieren (nach 21:00). Bis dahin bin ich unterwegs.

Gruß, Homer Simpson
 
- die debug.cfg postest Du hier immer nur abschnitweiese , nie komplett.
- die debug.cfg soll start_pc1 und calllog erzeugen, ob sie das richtig tut, läßt sich nur nur zeigen in dem man sich diese Dateien anguckt.

Schonmal dran gedacht die ganze "Schmutzarbeit" von The Construct erledigen zu lassen? Evtl. auch von der Beta Version?

Tschö, Jojo
 
Hallo jojo schmitz,

der Rest der debug.cfg (FTP, Etherwake/WOL, Dropbear/SSH) funktioniert ja bereits zuverlässig und ist gegenüber Post #1 unverändert (ausser dem LCR- und Reboot-Teil, die ich rausgeschmissen habe, weil ich bei WOC hängengeblieben bin; diese Sachen nehme cih mir dann vor, wenn WOC funzt.). Wo es halt jetzt gehakt hat ist die WOC-Geschichte. Deshalb habe ich auch immer nur diesen Teil in den nachfolgenden Posts gezeigt.

Im Prinzip ist das mit "The construct" ja gut und schön. Ich möchte aber "verstehen" was passiert und probier halt gerne selbst aus, wie es geht. Ich gehe dabei immer Schritt für Schritt vor, d.h. ich mache erst weiter, wenn ich einen Punkt als funktionierend abhaken kann. Aber vielleicht mach ich das ja mal und vergleiche es mit dem, was ich bisher so fabriziert habe.

Gruß, Homer Simpson
 
Ich nehme immer gerne etwas existierendes und versuche das zu verstehen und zu verändern, daher wäre hier meine Vorgehensweise mit The Constuct anzufangen.

Tschö, Jojo
 
@ jojo-schmitz

Hallo jojo-schmitz,

habe gestern Abend einige Teilerfolge erzielt. In der Tat hattest Du mit Deiner Vermutung recht, daß sich irgendwo noch ein paar CR tummeln. Zwar nicht im WOC-Teil, aber am Anfang der debug.cfg. Die habe ich nun rausgeschmissen und es läuft besser. Auch geht jetzt /var/tmp/start_pc1. Der Umweg mit "./" ist nicht mehr notwendig.

Die woc.info wird nun auch gefüllt (s. Anlage). Allerdings bleibt das Script an der Stelle "# telefon: SIGCHLD received!" stehen und der Cursor blinkt in der nächsten Zeile. Liegt das an dem "#!/bin/sh -x"? Vielleicht bin ich auch etwas zu ungeduldig, aber 2 Minuten sollten doch reichen... Ich denke, ich bin kurz vorm Ziel...

Die Einträge in der woc.info sind richtig, aber es passiert nichts. Der Rechner bleibt aus. In der woc.info steht auch: kein WOC. Welche Dinge müssen in Anfürhrungszeichen in den WOC-Teil? Der begriff "SIP4" und die zugelassenen Rufnummern? In der woc.info würde ich gerne noch den Wochentag in der Form Mo. bis So. sowie Datum und Uhrzeit in der Form dd.mm.yyyy, hh:mm ausgeben.

Bsp.

Datum/Uhrzeit: Fr., 24.11.2006 07:00,

Kannst Du mir auf die Sprünge helfen?

Hier die komplette debug.cfg (ohne Benutzername, Passwort, Mac-Adresse und Telefonnummern):

Code:
#####################################################
# Warten bis die FritzBox den Server erreichen kann #
#####################################################

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

#####################################################
# Installation FTP-Server, Etherwake und SSH-Server #
#####################################################

cd /var/tmp
wget http://www.tecchannel.de/download/432803/bftpd.conf
wget http://www.tecchannel.de/download/432803/bftpd

######################
# ausfuehrbar machen #
######################

chmod +x /var/tmp/bftpd
chmod 777 /var/tmp/bftpd.conf

##################################################
# Usernamen und den Passwort-Hash fuer FTP-Server #
##################################################

echo "benutzer:passwort-hash:0:0:root:/:null" >> /var/tmp/passwd
/var/tmp/bftpd -d -c /var/tmp/bftpd.conf

##########################################
# Etherwake laden und ausfuehrbar machen #
##########################################

wget http://www.tecchannel.de/download/432967/etherwake
chmod +x etherwake

#####################################################
# SSH-Server dropbear laden und ausfuerhrbar machen #
#####################################################

wget http://www.tecchannel.de/download/432967/dropbear
sleep 10
chmod +x /var/tmp/dropbear

##################
# Start dropbear #
##################

ln -s /var/tmp/dropbear dropbearkey
sleep 10
/var/tmp/dropbearkey -t rsa -f /var/tmp/dropbear_rsa_hostkey -s 512
cp -p /var/tmp/shadow /var/tmp/tmp_shadow

#####################################
# Hash des root-Passworts eintragen #
#####################################

sed -e "/root:/s#^root:[^:]*:#root:passwort-hash:#" /var/tmp/tmp_shadow > /var/tmp/shadow
sleep 5
/var/tmp/dropbear -r /var/tmp/dropbear_rsa_hostkey

###############
# Wake on LAN #
###############

############################################################################################
# Interface der Fritzbox eth0 oder eth1 und die MAC-Adresse des zu weckenden PCs eintragen #
############################################################################################

sleep 5
echo "/var/tmp/etherwake -i eth0 xx:xx:xx:xx:xx:xx" > /var/tmp/start_pc1

################################
# start_pc1 ausfuehrbar machen #
################################

sleep 15
chmod +x /var/tmp/start_pc1


#############################
# wake-on-call config START #
#############################

# Wenn ein Anruf auf diesem SIP Port erfolgt, dann soll mein Rechner gestartet werden
# SIP Port Nummer: FBF Web-Interface oeffnen / Telefonie / Internettelefonie
# Achtung: SIP-Nr. ist eins kleiner, als Auswahl
# Beispiel: *124# ist dann z.B. SIP3
# Wenn Wake-On-Call deaktivert werden soll, dann irgendwas eintragen
wolsip="SIP4"

# Wer darf den PC per WOL ueber Tel aufwecken?
# jeder  Jeder der die Nummer $wolsip anruft, darf den Rechner aufwecken
# TelNummer, wenn es nur eine bestimmte Tel-Nummer darf
woltel1="01xxxx"
woltel2="02xxxx"
woltel3="06xxxx"

# $wolsip, $woltel1, $woltel2 und $woltel3 lassen sich in /var/tmp/woc.info kontrollieren,
# denn manchmal wird die Nummer nicht so uebermittelt 0123... sondern so +49123...
# Bitte kontrollieren und entsprechend oben eintragen

############################
# wake-on-call config ENDE #
############################


######################
# wake-on-call START #
######################

# calllog erstellen
cat > /var/flash/calllog << 'END'
#!/bin/sh -x
# Pruefen ob die angerufende Nr. die WOL-SIP ist
if [ "$3" = "$wolsip" ]; then
 # Pruefen ob jeder den Rechner wecken darf. Wenn "jeder" dann wecken
 if [ "$woltel1" = "jeder" ]; then
   /var/tmp/start_pc1
   statuscode="OK: alle Anrufer sind zugelassen"
 else
   # Ansonsten darf es wohl nur eine bestimmte Nummer
   # Pruefen ob es eine der erlaubten Nummern ist
   if [ "$1" = "$woltel1" -o "$1" = "$woltel2" -o "$1" = "$woltel3" ]; then
     /var/tmp/start_pc1
     statuscode="OK: der Anrufer ist zugelassen"
   else
     statuscode="Fehler: der Anrufer ist nicht zugelassen"
   fi
 fi
else
statuscode="Info: kein WOC"
fi
# Ausgabe in woc.info:
echo "Nummer des Anrufers: $1, Angerufene Nummer: $2, $3, $statuscode" >> /var/tmp/woc.info
END
# calllog fertig

##############################
# calllog ausfuehrbar machen #
##############################

ln -s /var/flash/calllog /var/calllog
chmod +x /var/flash/calllog

#####################
# wake-on-call ENDE #
#####################

Danke, Gruß

Homer Simpson
 

Anhänge

  • telnet_woc_23112006.jpg
    telnet_woc_23112006.jpg
    12.7 KB · Aufrufe: 12
  • woc_info_23112006.jpg
    woc_info_23112006.jpg
    31.6 KB · Aufrufe: 15
Das calllog Script läuft offensichtlich immer durch den äußersten else Zweig, d.h. die erste if Bedingung triff nie zu.
Hmm, nur wo bleibt der debug output von calllog? ... Scheint daran zu liegen wie die Box das Script aufruft, füge in der 2. Zeile (von calllog) mal folgendes ein:
Code:
exec 2>/var/tmp/calllog.err"
Dann sieh Dir das Ergebnis an.
Ausserdem würde ich immer noch gerne mal Dein calllog sehen...

Das mit dem '# telefon: SIGCHLD received!" ist völlig normal, drücke mal RETURN und du bekommest einen frischen Prompt.

Wg. Datum und Uhrzeit:
Code:
echo "Datum/Uhrzeit: '$(date +"%a, %d.%m.%Y %H:%M")', Nummer des Anrufers: $1, Angerufene Nummer: $2, $3, $statuscode" >> /var/tmp/woc.info

Tschö, Jojo
 
Zuletzt bearbeitet:
Hallo jojo-schmitz,

werde das mit dem jeder mal rausschmeissen oder muss es vielleicht "elif" statt "else" heissen? Hab ich auch schon irgendwo gesehen. "jeder" trifft ja eh nicht zu, weil ich das auch nicht möchte. Den exec-Befehl werde ich auch mal reintun. Datum und Uhrzeit, danke! Habs gestern nicht hinbekommen. Kann aber erst wieder heute abend testen. Ich denke aber, daß ich dank Deiner geduldigen Hilfe knapp vorm Ziel bin :noidea:

Ich weiss leider immer noch nicht, was du damit meinst, daß Du den calllog sehen willst. Meinst Du damit den reinen Inhalt via "cat /var/flash/calllog" oder das Ergebnis, welches calllog nach einer Ausführung ausgibt? Der Inhalt steht so schon in der debug.cfg?!? Wie rufe ich ggf. das Ergebnis dazu auf?

Danke, Gruß

Homer Simpson
 
Zuletzt bearbeitet:
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.