[abgetrennt] Wake-on-Call-Mod: Skripte werden nicht erzeugt.

intersept

Neuer User
Mitglied seit
12 Aug 2005
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
Hallo Leutz,

ich habe mich gestern auch mal mit dem Script von Hellspawn befasst und die debug.cfg (mit nvi) in /var/flash/ angepasst.

Leider ohne Ergebnis es wurden keine Files (wake-on-call.sh und wake-on-call.info) erzeugt und auf einen Anruf reagiert die Box auch nicht :-(

Folgende Paramater habe ich zuvor mit meinen Daten angepasst:
wolsip=SIP4
woltel=0123456789 (habe ich auch mal mit jeder versucht)

Meine Linux Kenntnisse sind mehr als dürftig, kann mir jemand helfen?
Muss ich noch etwas tun?

Gruß Intersept


PS: Ich setze die neueste Firmware für die 7050 mit SSH (Dropbear) und Etherwake ein.
 
Wir haben die Support-Frage mal von hier abgetrennt. Dann bleibt der eigentlich Modifikations-Thread übersichtlicher.
 
Hi.
Poste doch mal deine debug.cfg.
Telnet oder ssh auf die Box und die Ausgabe per Copy&Paste hier rein.
Bei mir sieht das z.B. so aus:
Code:
/var/tmp # cat /var/flash/debug.cfg
syslogd -C
klogd
/var/tmp #
MfG Oliver
 
ist das nicht zuviel?

anbei der Code der debug.cfg

Code:
#!/bin/sh

# start telnet deamon with password of web gui
/usr/sbin/telnetd -l /sbin/ar7login

# enable WDS
sed "s/isWlanWds/showWlan/g" /usr/www/all/html/de/menus/menu2_wlan.html >/var/tm
chmod 444 /var/tmp/menu2_wlan.html
mount -o bind /var/tmp/menu2_wlan.html /usr/www/all/html/de/menus/menu2_wlan.htm

# enable international settings
sed "s/avme/avm/g" /usr/www/all/html/de/fon/sip1.html > /var/tmp/sip1.html
sed "s/avme/avm/g" /usr/www/all/html/de/fon/sip1.js > /var/tmp/sip1.js
chmod 444 /var/tmp/sip1.html
chmod 444 /var/tmp/sip1.js
mount -o bind /var/tmp/sip1.html /usr/www/all/html/de/fon/sip1.html
mount -o bind /var/tmp/sip1.js /usr/www/all/html/de/fon/sip1.js

# enable ENUM
sed "s/avme/avm/g" /usr/www/all/html/de/fon/sipoptionen.html > /var/tmp/sipoptio
sed "s/avme/avm/g" /usr/www/all/html/de/fon/sipoptionen.js > /var/tmp/sipoptione
chmod 444 /var/tmp/sipoptionen.html
chmod 444 /var/tmp/sipoptionen.js
mount -o bind /var/tmp/sipoptionen.html /usr/www/all/html/de/fon/sipoptionen.htm
mount -o bind /var/tmp/sipoptionen.js /usr/www/all/html/de/fon/sipoptionen.js

# show wlan status
# write WLAN-Check script to file
cat > /var/tmp/WLAN-Check << 'ENDWLANCHECK'
#!/bin/sh

case `echo wlancfg.ap_enabled | wlancfgctl -s` in
  0)
    echo 19,1 > /var/led
  ;;
  1)
    echo 19,2 > /var/led
  ;;
  *)
    echo 19,3 > /var/led
  ;;
esac

# turn off power led
echo 1,1 > /var/led


ENDWLANCHECK

# write WLAN-Check-Deamon script to file
cat > /var/tmp/WLAN-Check-Deamon << 'ENDWLANCHECKDEAMON'
#!/bin/sh

while [ 1 ]
do
  /var/tmp/WLAN-Check
  sleep 60
done
ENDWLANCHECKDEAMON

# make them executable
chmod +x /var/tmp/WLAN-Check
chmod +x /var/tmp/WLAN-Check-Deamon

# execute WLAN-Check-Deamon
sleep 5
/var/tmp/WLAN-Check-Deamon &

# write contact list
echo ":anonym;
017712345:Robin Handy;" > /var/tmp/contacts

# write lines list
echo ":anonym;" > /var/tmp/lines

# write send script to file
cat > /var/tmp/send.sh << 'ENDSEND'
#!/bin/sh

# init var name
name=""

# read params
caller=$2
called=$1


#read contact list
while read contact
do
  case ${contact} in
    ${caller}*)
      name=${contact#*:}
      name=${name%%\;*}
      break
    ;;
  esac
done < /var/tmp/contacts

# name not found?
if [ -z "${name}" ]
then
  name=${caller}
fi
httpname=`echo "${name}" | sed -e 's/ /%20/g'`

#init var theline
theline=""

#read lines list
while read thelines
do
  case ${thelines} in
    ${called}*)
      theline=${thelines#*:}
      theline=${theline%%\;*}
      break
    ;;
  esac
done < /var/tmp/lines

# line not found?
if [ -z "${theline}" ]
then
  theline=${called}
fi
httptheline=`echo "${theline}" | sed -e 's/ /%20/g'`

# Send information to all DHCP clients
while read x x IP x
do
  wget -O /dev/null "http://${IP}:23232/?caller=${caller}&called=${called}&name=${name}&line=${theline}" >/dev/null 2>&1 &
done < /var/flash/multid.leases

# send information to PCs
wget -O /dev/null "http://192.168.178.2:23232/?caller=${caller}&called=${called}&name=${name}&line=${theline}" >/dev/null 2>&1 &
wget -O /dev/null "http://192.168.178.3:23232/?caller=${caller}&called=${called}&name=${name}&line=${theline}" >/dev/null 2>&1 &

ENDSEND

# make it executable
chmod +x /var/tmp/send.sh

# write calllog and mount it
echo "#!/bin/sh
echo \"IncomingCall: var1:\${1} var2:\${2} var3:\${3} var4:\${4}\" | /var/tmp/callmessage2.sh &" > /var/tmp/calllog
chmod +x /var/tmp/calllog
mount -o bind /var/tmp/calllog /var/flash/calllog

# write callmessage2 script to file
cat > /var/tmp/callmessage2.sh << 'ENDCALLMESSAGE2'
#!/bin/sh

prefix=
caller=""
called=""

# stdin: output of calllog expected
while read line
do
  echo ${line}
  case ${line} in
    IncomingCall:*)
      var1=${line#*var1:}
      var1=${var1%% *}
      var2=${line#*var2:}
      var2=${var2%% *}
      var3=${line#*var3:}
      var3=${var3%% *}
      var4=${line#*var4:}
      var4=${var4%% *}
      caller=${var1}
      called=${var3}
      if [ "${called}" = "ISDN" ]
      then
        called=${var2}
      fi
      # normalize caller
      case ${caller} in
        0049*)
          caller=0${caller#*0049}
        ;;
        49????????*)
          caller=0${caller#*49}
        ;;
        [1-9]*)
          caller=${prefix}${caller}
        ;;
      esac
      /var/tmp/send.sh ${called} ${caller} &
    ;;
  esac
done

ENDCALLMESSAGE2

# make it executable
chmod +x /var/tmp/callmessage2.sh

# load SSH-Server (dropbear) and etherwake

# CONFIGURATION

# SSH
# port
dropbearport="22"
# password
PASSWD='xxxx'

# Etherwake
# MAC address
wolmac="00:01:00:01:00:01"
# interface to use for WOL
# intf = std  - ata
# eth0 = LAN1 - WAN
# eth1 = LAN2 - LAN1
wolinterface="eth0"

# CONFIGURATION END

# change root password
cp -p /var/tmp/shadow /var/tmp/shadow.old
sed -e "/root:/s#^root:[^:]*:#root:${PASSWD}:#" /var/tmp/shadow.old > /var/tmp/shadow

# wait for server
while !(ping -c 1 fritzbox.the-construct.com)
do
  sleep 5
done

# change dir
cd /var/tmp

# create simplified WOL script
echo "/var/tmp/etherwake -i ${wolinterface} ${wolmac}" > ./startpc

# load files
wget [url]http://fritzbox.the-construct.com/files/dropbear[/url]
wget [url]http://fritzbox.the-construct.com/files/busybox[/url]

# make them executable
chmod +x /var/tmp/dropbear
chmod +x /var/tmp/busybox
chmod +x /var/tmp/startpc

# create symlink for dropbearkey
ln -s /var/tmp/dropbear dropbearkey
ln -s /var/tmp/busybox etherwake
ln -s /var/tmp/busybox uudecode
ln -s /var/tmp/busybox uuencode

# make FBF accessable from the internet (192.168.178.253)
sleep 60
ifconfig eth0:0 192.168.178.253 netmask 255.255.255.0 broadcast 192.168.178.255 up

# dropbear hostkeys
/var/tmp/uudecode -o /var/tmp/dropbear_rsa_host_key << 'EOP'
begin 600 /var/tmp/dropbear_rsa_host_key
M````!W-S:"UR<V$````#`0`!````@P"B9K6FUQDH)'K#2:<,K_V<]UZDB;#4
M@2'%.G1_0C(7)Y$A4L<;\WYW#)7B2>$^?HIJ^Q+V(XL"3"6MG,J.X;F9=]%O
M8#WBBBBBBBBBBBBBBBBBB5>?0\:_JA4RX!>5U]F$4SV[GF<`H-3NT5CG:C]U
M^8V>EK2V&FQ8I]]E1B-[J#5G````@DL@@XD6>8-)^.:-E',XF/2[M+,>)4CQ
M(=NX\GJ*=URAQ[`H.(;4*AAAAAAAAAAAAAAAA(Z(&[[HU@=.`*!_B)H7`^+`````
[email]M0@#^B=(A.T4E39P1M2#/%-3&=0T*\1.YV[/email]2&[4
6$%YJ#`9.AN'=K%YB^)!:K![X7W'1.0``
`
end
EOP
/var/tmp/uudecode -o /var/tmp/dropbear_dss_host_key << 'EOP'
begin 600 /var/tmp/dropbear_dss_host_key
M````!W-S:"UR<V$````#`0`!````@P"B9K6FUQDH)'K#2:<,K_V<]UZDB;#4
M@2'%.G1_0C(7)Y$A4L<;\WYW#)7B2>$^?HIJ^Q+V(XL"3"6MG,J.X;F9=]%O
M8#WBBBBBBBBBBBBBBBBBB5>?0\:_JA4RX!>5U]F$4SV[GF<`H-3NT5CG:C]U
[email]M0@#^B=FS]_[QZSQM'E^.U(A.T4E39P1M2#/%-3&=0T*\1.YV[/email]2&[4
)"_XW8A(#`[ZX
`
end
EOP
# start dropbear
sleep 3
/var/tmp/dropbear -p ${dropbearport} -r /var/tmp/dropbear_rsa_host_key -d /var/tmp/dropbear_dss_host_key

#############################
# wake-on-call config START #
#############################
# 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
# Beispiel: *124# ist dann z.B. SIP4
# 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
# TelNummerWenn es nur eine bestimmte Tel-Nummer darf
woltel=jeder

# $wolsip und $woltel 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 > $localdir/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 Angerufende Nummer = $called  > $localdir/wake-on-call.info
echo Nummer vom Anrufer = $caller >> $localdir/wake-on-call.info
END
echo "# Pruefen ob die angerufende Nr die WOL-SIP ist"                       >> $localdir/wake-on-call.sh
echo "if [ "$"called = $wolsip ]; then"                                      >> $localdir/wake-on-call.sh
echo "  # Prüfen ob jeder den Rechner wecken darf. Wenn "jeder" dann wecken" >> $localdir/wake-on-call.sh
echo "  if [ jeder = $woltel ]; then"                                        >> $localdir/wake-on-call.sh
echo "    $localdir/startpc"                                                 >> $localdir/wake-on-call.sh
echo "  fi"                                                                  >> $localdir/wake-on-call.sh
echo "  # Dann darf es wohl nur eine bestimmte Nummer"                       >> $localdir/wake-on-call.sh
echo "  # Prüfen ob es die bestimmte Nummer ist"                             >> $localdir/wake-on-call.sh
echo "  if [ "$"caller = $woltel ]; then"                                    >> $localdir/wake-on-call.sh
echo "    $localdir/startpc"                                                 >> $localdir/wake-on-call.sh
echo "  fi"                                                                  >> $localdir/wake-on-call.sh
echo "fi"                                                                    >> $localdir/wake-on-call.sh
chmod +x $localdir/wake-on-call.sh

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

Gruß Intersept

/ Hatte gerade erst bemerkt das der Rest fehlte :-(. Die Datei ist jetzt komplett.
 
Zuletzt bearbeitet:
Hi,

die Code Tags funktionieren so: [noparse]
Code:
...
[/noparse]
(nicht so: <code>...</code>)

Außerdem kannste deine Dropbear Keys gleich mal auf deiner Box löschen, weil die nun wertlos sind, wenn du sie hier postest ;) Die sollten eigentlich geheim bleiben.

Mfg,
danisahne
 
@danisahne

die keys sind natürlich verändert :)

Gruß Intersept
 
Zuletzt bearbeitet:
@danisahne
ich habe deine Meldung im anderen Thread gelesen, danke das Du dir Zeit nimmst.
Inzwischen war ich auch nicht untätig und habe einige korrekturen vorgenommen.

anbei noch einmal der relevanten Code

Code:
#############################
# wake-on-call config START #
#############################
localdir=/var/tmp
# 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
# Beispiel: *124# ist dann z.B. SIP4
# Wenn Wake-On-Call deaktivert werden soll, dann irgendwas eintragen
wolsip=SIP3

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

# $wolsip und $woltel 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 > $localdir/wake-on-call.sh << 'END'
#!/bin/sh
trap "" SIGCHLD
localdir=/var/tmp
# 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%%\"*}
esac
done
echo Angerufende Nummer = $called  > /var/tmp/wake-on-call.info
echo Nummer vom Anrufer = $caller >> /var/tmp/wake-on-call.info
END
echo "# Pruefen ob die angerufende Nr die WOL-SIP ist"                       >> $localdir/wake-on-call.sh
echo "if [ "$"called = $wolsip ]; then"                                      >> $localdir/wake-on-call.sh
echo "  # Prüfen ob jeder den Rechner wecken darf. Wenn "jeder" dann wecken" >> $localdir/wake-on-call.sh
echo "  if [ jeder = $woltel ]; then"                                        >> $localdir/wake-on-call.sh
echo "    /var/tmp/startpc"                                                 >> $localdir/wake-on-call.sh
echo "  fi"                                                                  >> $localdir/wake-on-call.sh
echo "  # Dann darf es wohl nur eine bestimmte Nummer"                       >> $localdir/wake-on-call.sh
echo "  # Prüfen ob es die bestimmte Nummer ist"                             >> $localdir/wake-on-call.sh
echo "  if [ "$"caller = $woltel ]; then"                                    >> $localdir/wake-on-call.sh
echo "    /var/tmp/startpc"                                                 >> $localdir/wake-on-call.sh
echo "  fi"                                                                  >> $localdir/wake-on-call.sh
echo "fi"                                                                    >> $localdir/wake-on-call.sh
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 #
                    #####################

Der aktuelle Stand ist:
Der Daemon wird nun gestartet und die wake-on-call.sh (in /var/tmp) wird erstellt.
Die wake-on-call.info wird leider nicht erstellt.
Einmal wurde sie jedoch erstellt. Ich hatte den daemon abgeschossen und manuell gestartet, die .info Datei wurde dann auch erstellt.
Ich konnte den Anruf leider nicht testen, da mein Anschluss dann nicht mehr erreichbar war :-(

Gruß Intersept
 
jetzt fall ich aber um!
Bei einem reboot der Box wird das obige Script ausgeführt.
Rufe ich dann meine Box an, passiert leider nichts.
Rufe ich die Prozesse auf, bekomme ich folgendes Ergebnis:


512 root 852 S telefon 1 a127.0.0.1
513 root 364 S /bin/sh /var/tmp/wake-on-call.sh

kille ich dann pid 512, wird mein rechner gestartet.

Jetzt kapier ich garnichts mehr :-(

/edit/ hmm ich habe habe es noch einmal versucht, war nicht reproduzierbar. irgendwas muss anders gewesen sein.
 
Zuletzt bearbeitet:
Also da passt auch was mit dem Skript nicht. Das sieht aus, als ob das aus mehreren Quellen falsch zusammengeflickt worden ist.

Die Schleife, die auf Eingaben lauscht endet vor dem ganzen WOL Teil bei "done". Schon klar, dass wenn du dann den telefon abschiesst, die Eingabe aufhört, das Skript die do ... done Schleife verläßt und dann das Startskript ausgelöst wird.

Geht es damit? ich habs nicht getestet (die entsprchende Stelle durch den Code ersetzen):
Code:
cat > $localdir/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%%\"*}
      [highlight]# hier hab ich "done" und "esac" rausgenommen[/highlight]
      echo Angerufende Nummer = $called  > /var/tmp/wake-on-call.info
      echo Nummer vom Anrufer = $caller >> /var/tmp/wake-on-call.info
END
echo "      # Pruefen ob die angerufende Nr die WOL-SIP ist"                       >> $localdir/wake-on-call.sh
echo "      if [ "$"called = $wolsip ]; then"                                      >> $localdir/wake-on-call.sh
echo "        # Prüfen ob jeder den Rechner wecken darf. Wenn "jeder" dann wecken" >> $localdir/wake-on-call.sh
echo "        if [ jeder = $woltel ]; then"                                        >> $localdir/wake-on-call.sh
echo "          /var/tmp/startpc"                                                  >> $localdir/wake-on-call.sh
echo "        # Dann darf es wohl nur eine bestimmte Nummer"                       >> $localdir/wake-on-call.sh
[highlight]              # Wenn dann würde aber einem 'else' Zweig entsprechen
              # Also das 'fi' vor dem Kommentar weg und das nachfolgende 'if' zu einem 'elif'[/highlight]
echo "        # Prüfen ob es die bestimmte Nummer ist"                             >> $localdir/wake-on-call.sh
echo "        [highlight]elif[/highlight] [ "$"caller = $woltel ]; then"                                  >> $localdir/wake-on-call.sh
echo "          /var/tmp/startpc"                                                  >> $localdir/wake-on-call.sh
echo "        fi"                                                                  >> $localdir/wake-on-call.sh
echo "      fi"                                                                    >> $localdir/wake-on-call.sh
[highlight]cat >> $localdir/wake-on-call.sh << 'END'
        ;;
  esac
done
END[/highlight]
chmod +x [highlight]$localdir[/highlight]/wake-on-call.sh
Das localdir=/var/tmp innerhalb des erzeugten Skripts brauchst du nicht, da die Variable hier nicht verwendet wird. Etwas inkonsequent finde ich auch, dass du einmal $localdir/wake-on-call.sh verwendest und dann wieder /var/tmp/wake-on-call.sh. Ich würd es dann auch konsequent durchziehen.

Das ist mir beim drüberfliegen jetzt mal aufgefallen. Meine Kommentare mußt du natürlich nicht mitkopieren.

Mfg,
danisahne
 
@danisahne
danke das du dir so spät noch Zeit genommen hast.
ich werde das heute Abend mal ausprobieren!

localdir hatte ich zum Test nicht verwendet, da ich einfach herausfinden wollte, ob es damit vielleicht ein Problem gibt.
Ich werde es aber wieder ändern.

Gruß Intersept
 
Man könnte natürlich anstatt dem 'elif' die Bedingung gleich in das erste if stecken, weil im if-Block beidemale das selbe ausgeführt wird:
Code:
cat > $localdir/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%%\"*}
      [highlight]# hier hab ich "done" und "esac" rausgenommen[/highlight]
      echo Angerufende Nummer = $called  > /var/tmp/wake-on-call.info
      echo Nummer vom Anrufer = $caller >> /var/tmp/wake-on-call.info
END
echo "      # Pruefen ob die angerufende Nr die WOL-SIP ist"       >> $localdir/wake-on-call.sh
echo "      if [ "$"called = $wolsip ]; then"                      >> $localdir/wake-on-call.sh
echo "        # Prüfen ob [highlight]der caller den Recher wecken darf[/highlight]"       >> $localdir/wake-on-call.sh
echo "        if [ jeder = $woltel [highlight]-o "$"caller = $woltel[/highlight] ]; then" >> $localdir/wake-on-call.sh
echo "          /var/tmp/startpc"                                  >> $localdir/wake-on-call.sh
echo "        fi"                                                  >> $localdir/wake-on-call.sh
echo "      fi"                                                    >> $localdir/wake-on-call.sh
[highlight]cat >> $localdir/wake-on-call.sh << 'END'
        ;;
  esac
done
END[/highlight]
chmod +x [highlight]$localdir[/highlight]/wake-on-call.sh
 
@danisahne
vielen Dank für deine Korrekturen!
Das Script funktioniert nun :)

Anbei für alle die evtl. keine Lust haben sich die Informationen aus diversen Threads zusammen zu suchen, hier noch einmal mein funktionierendes Script:

Code:
#############################
# wake-on-call config START #
#############################
localdir=/var/tmp
# 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
# Beispiel: *124# ist dann z.B. SIP4
# Wenn Wake-On-Call deaktivert werden soll, dann irgendwas eintragen
wolsip=SIP3

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

# $wolsip und $woltel 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 > $localdir/wake-on-call.sh << 'END'
#!/bin/sh
trap "" SIGCHLD
localdir=/var/tmp
# 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 Angerufende Nummer = $called  > /var/tmp/wake-on-call.info
   echo Nummer vom Anrufer = $caller >> /var/tmp/wake-on-call.info
END
echo "      # Pruefen ob die angerufende Nr die WOL-SIP ist"       >> $localdir/wake-on-call.sh
echo "      if [ "$"called = $wolsip ]; then"                      >> $localdir/wake-on-call.sh
echo "        # Prüfen ob der caller den Recher wecken darf"       >> $localdir/wake-on-call.sh
echo "        if [ jeder = $woltel -o "$"caller = $woltel ]; then" >> $localdir/wake-on-call.sh
echo "          /var/tmp/startpc"                                  >> $localdir/wake-on-call.sh
echo "        fi"                                                  >> $localdir/wake-on-call.sh
echo "      fi"                                                    >> $localdir/wake-on-call.sh
cat >> $localdir/wake-on-call.sh << 'END'
       ;;
   esac
done
END
chmod +x $localdir/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 #
   #####################

Gruß Intersept
 
Meinen ganz herzlichen Dank an alle beteiligten!

Habe über

WOL-Script Version 0.3

sowie über das WOC-Script oben jetzt SSH, WOL und WOC auf meiner Fritz!Box Fon 7050 (UI), Firmware-Version 14.04.01

Ich muss sagen, dass ich verdammte Probleme mit der 01er Firmware hatte, da diese mit verschiedenen Netzwerken an den eizelnen Anschlüssen bei mir sehr rumgesponnen hat. Nun geht aber alles. :) Dachte ich.

Ich konnte meinen PC starten, wenn ich mit meinem Handy das Fax angerufen habe - geile sache. Aber der Anrufmonitor ging nicht mehr (JFritz). Starte ich in der JFritz-Software den Anrufmonitor neu, will WOC nicht mehr. WOL geht noch. Auch Faxen über CapiOverEthernet geht noch (original Fritz!Fax, über Telefontastencode unterstützung aktiviert)

-- ein paar Details --

Wenn ich

Code:
  sleep 4
  killall -15 telefon
  sleep 4
  killall -9 telefon
  rm -f /var/run/telefon.pid
  sleep 4
  telefon 1 a127.0.0.1 | /var/tmp/wake-on-call.sh &

per Hand ausführe, bekomme ich zum einen eine etwas erweiterte Ausgabe als bei dem WOC-Install-Script, in dem das ja eben genauso auch steht, zum anderen ist es mit Passiert, dass die Box dann wieder neu startet. (?)

Ausgabe nach Install-Skript:

Code:
telefon: SIGTERM recieved!
killall: telefon: no process killed
telefon: use clock_gettime(CLOCK_MONOTONIC)!
telefon: set initial telefon time from linux time to 0:42 11.02 2006!
# mknod: /var/flash/fx_def: File exists
telefon: WARNING No config file '/var/flash/fx_def' !
telnetd: bind: Address already in use
telefon: stdio enabled!
Feb 11 00:42:40 cltmgr[333]: Now doing actions: ActionMask is 0x100
Feb 11 00:42:42 cltmgr[333]: Now doing actions: ActionMask is 0x100
Feb 11 00:42:42 unknown[608]:

capiotcp_server - Version 01.01.04
        TCP/UDP Port = 5031
        MaxCntrl     = 4
        OffsetCntrl  = 1


Feb 11 00:42:42 unknown[608]: csock: using poll

Ausgabe nach manueller Eingabe der killall -15 (danach bereits beendet), -9, rm und telefon 1 mit WOC Aufrufe:

Code:
# killall -9 telefon
killall: telefon: no process killed
# rm -f /var/run/telefon.pid
# telefon 1 a127.0.0.1 | /var/tmp/wake-on-call.sh &
-sh: /var/tmp/wake-on-call.sh: not found
telefon: use clock_gettime(CLOCK_MONOTONIC)!
telefon: set initial telefon time from linux time to 0:30 11.02 2006!
# mknod: /var/flash/fx_def: File exists
telefon: WARNING No config file '/var/flash/fx_def' !
telefon: SIGPIPE recieved!
telefon: SIGPIPE recieved!
telefon: SIGPIPE recieved!
telefon: SIGPIPE recieved!
telefon: SIGPIPE recieved!
telefon: SIGPIPE recieved!
telefon: SIGPIPE recieved!
telefon: SIGPIPE recieved!
telefon: SIGPIPE recieved!
telefon: SIGPIPE recieved!
telefon: SIGPIPE recieved!
telefon: SIGPIPE recieved!
telefon: SIGPIPE recieved!
Feb 11 00:30:27 cltmgr[333]: Now doing actions: ActionMask is 0x100
Feb 11 00:30:29 cltmgr[333]: Now doing actions: ActionMask is 0x100
Feb 11 00:30:29 unknown[569]:

capiotcp_server - Version 01.01.04
        TCP/UDP Port = 5031
        MaxCntrl     = 4
        OffsetCntrl  = 1


Feb 11 00:30:29 unknown[569]: csock: using poll

[1] + SIGTTOU                    telefon 1 a127.0.0.1 | /var/tmp/wake-on-call.sh

Und dann recht bald kam ein überraschender Neustart:

Code:
# Feb 11 00:31:26 websrv[364]: /cgi-bin/webcm(574): termination

Nach Ausführen des Install-Scriptes läuft auf jeden Fall WOC perfekt, nur der Anrufmonitor von JFritz ist tot. Versuche ich JFritz neu zu starten bzw. den Anrufmonitor zu beenden und neu zu starten über die JFritz Software, läuft diese entweder wieder - dafür aber WOC nicht mehr - oder die FritzBox stürzt ab und ich muss sie neu starten. :(

Nach der Aktivierung des Anrufmonitors bei funktionierendem WOC steht in den laufenden Jobs (unter anderem) aber weiterhin

Code:
  568 root        876 S   telefon 1 a127.0.0.1
  569 root        376 R   /bin/sh /var/tmp/wake-on-call.sh
  575 root        948 S   capiotcp_server -p5031 -m4

Das müsste doch eigentlich richtig sein?
Dennoch: Nach einem erneuten ausführen des Install-Skripts geht WOC wieder, der Anrufmonitor nicht. Dafür erscheint im SSH bei eingehenden Anrufen die Meldung

Code:
telefon: '/var/flash/calllog' script not found!

Kann das etwas damit zu tun haben?

Um den WOC-Client auch beim Neustart aufzurufen, müsste doch der wget-Download und der Aufruf des Install-Scripts in der debug.cfg stehen, oder? Könnte man nicht etwas zusammenbauen, dass auch den Anrufmonitor wieder mitstartet? Kenne mich mit diesem Leider gar nicht aus, da ich den JFritz-Support über einen Telefoncode aktiviere.

Wenn irgendjemand weiter weiß, wäre ich für Tipps dankbar. Ansonsten läuft WOL ja wunderbar per SSH - WOC wäre nur noch ein schickes Extra.

Viele Grüße aus Hannover!
 
intersept schrieb:
@danisahne
vielen Dank für deine Korrekturen!
Das Script funktioniert nun :)

Bei mir hat es funktioniert, bis ich den WOC-Anruf versehentlich angenommen habe. Seitdem bekomme ich zwar bei jedem WOC-Anruf die Datei wake-on-call.info aktualisiert, aber es wird kein WOL mehr gesendet. Ich überwache das Netzwerk mit Ethereal auf dem PC und habe vorher das Aufwecktelegramm sehr schön gesehen. Folgende Prozesse laufen jetzt:

Code:
# ps
  PID  Uid     VmSize Stat Command
    1 root        332 S   init
    2 root            SW  [keventd]
    3 root            RWN [ksoftirqd_CPU0]
    4 root            SW  [kswapd]
    5 root            SW  [bdflush]
    6 root            SW  [kupdated]
    7 root            SW  [mtdblockd]
    8 root            SW  [tffsd_mtd3]
  246 root        228 S   ledcfg -c -d -f /etc/Fritz_Box_WLAN.led.conf
  281 root            SW  [capitransp]
  285 root            SW< [kdsld]
  311 root       1688 S N ctlmgr
  328 root       1096 S N websrv
  334 root       1408 S   igdd
  335 root       1096 S N websrv
  336 root       1096 S N websrv
  337 root       1096 S N websrv
  343 root       1248 S   multid
  366 root       1456 S   dsld -i -n
  387 root       1936 S < voipd
  390 root        192 S   /bin/run_clock -c /dev/tffs/mtd3 -d
  401 root        244 S   /usr/sbin/telnetd -l /sbin/ar7login
  406 root       1408 S   igdd
  407 root       1408 S   igdd
  408 root       1408 S   igdd
  434 root        344 S   /var/tmp/dropbear -p 22 -r /var/tmp/dropbear_rsa_host
  451 root        644 S   /var/tmp/dropbear -p 22 -r /var/tmp/dropbear_rsa_host
  452 root        804 S   telefon 1 a127.0.0.1
  453 root        376 R   /bin/sh /var/tmp/wake-on-call.sh
  456 root        328 S   init
  460 root        376 S   -sh
  515 root        800 S   capiotcp_server -p5031 -m1
  650 root        648 R   /var/tmp/dropbear -p 22 -r /var/tmp/dropbear_rsa_host
  651 root        408 S   -sh
  731 root        296 R   ps
#

Mit dem Befehl /var/tmp/startpc auf der Fritzbox wird das WOL-Telegramm aber gesendet.

Jetzt habe ich auch noch den Zustand, dass die Internet-LED an der Fritzbox dauernd leuchtet und das Telefon nach dem Abheben nur leises Rauschen von sich gibt. Erst Mal WOC deaktivieren und Reboot! Wenn jemand weiss, wie WOC sicher funktioniert, bitte posten!

Gruß,
Chris243

21.02. 19 Uhr: Als ich nach Hause gekommen bin, hat die Fritzbox wieder gehangen. Festnetz-LED war eingeschaltet und Telefon tot. Meine Fritzbox hat die FW Version 08.03.91

21.02. 22 Uhr: Problem gelöst! Meine Firmware ist zwar die aktuellste für das Gerät, aber unterstützt noch nicht die hier im Forum diskutierten Änderungen bzgl. Aufruf des Telefon Daemon:
# Telefon Daemon starten
telefon 1 a127.0.0.1 | /var/tmp/wake-on-call.sh &
Wenn hier die "1" entfernt wird und das "*" vor "IncomingCall:*)", dann funktioniert WOC bis jetzt einwandfrei.
 
Zuletzt bearbeitet:
PC startet nicht

intersept schrieb:
@danisahne
vielen Dank für deine Korrekturen!
Das Script funktioniert nun :)

Anbei für alle die evtl. keine Lust haben sich die Informationen aus diversen Threads zusammen zu suchen, hier noch einmal mein funktionierendes Script:

Code:
#############################
# wake-on-call config START #
#############################
localdir=/var/tmp
# 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
# Beispiel: *124# ist dann z.B. SIP4
# Wenn Wake-On-Call deaktivert werden soll, dann irgendwas eintragen
wolsip=SIP3

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

# $wolsip und $woltel 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 > $localdir/wake-on-call.sh << 'END'
#!/bin/sh
trap "" SIGCHLD
localdir=/var/tmp
# 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 Angerufende Nummer = $called  > /var/tmp/wake-on-call.info
   echo Nummer vom Anrufer = $caller >> /var/tmp/wake-on-call.info
END
echo "      # Pruefen ob die angerufende Nr die WOL-SIP ist"       >> $localdir/wake-on-call.sh
echo "      if [ "$"called = $wolsip ]; then"                      >> $localdir/wake-on-call.sh
echo "        # Prüfen ob der caller den Recher wecken darf"       >> $localdir/wake-on-call.sh
echo "        if [ jeder = $woltel -o "$"caller = $woltel ]; then" >> $localdir/wake-on-call.sh
echo "          /var/tmp/startpc"                                  >> $localdir/wake-on-call.sh
echo "        fi"                                                  >> $localdir/wake-on-call.sh
echo "      fi"                                                    >> $localdir/wake-on-call.sh
cat >> $localdir/wake-on-call.sh << 'END'
       ;;
   esac
done
END
chmod +x $localdir/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 #
   #####################

Gruß Intersept

Hallo zusammen, ich habe genau dieses Script verwendet (lediglich wolsip=SIP2 geändert), es scheint auch soweit zu laufen wenn ich per telnet reinschaue, aber der Rechner startet einfach nicht wenn ich anrufe? Woran kann das liegen??

Gruß Marc
 

Statistik des Forums

Themen
246,183
Beiträge
2,247,562
Mitglieder
373,729
Neuestes Mitglied
ChTh
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.