.titleBar { margin-bottom: 5px!important; }

Bei Anruf auf FritzBox auf Receiver ein Befehl ausführen?

Dieses Thema im Forum "FRITZ!Box Fon: Modifikationen" wurde erstellt von bolle, 15 Feb. 2009.

  1. bolle

    bolle Aktives Mitglied

    Registriert seit:
    10 Apr. 2006
    Beiträge:
    1,437
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Hi zusammen,

    wie kann ich das realisieren dass bei einem Anruf auf der Fritzbox ein bestimmter Befehl auf meinem Receiver ausgeführt wird?

    das ist die bisherige debug bzw der wichtige Teil davon , wo ich davon ausgehe, dass mein Vorhaben da irgendwo rein muss. Was schon realisiert ist, ist die Tatsache, dass die Fritz auf meine Handynummer reagiert und einen Neustart auslöst. Geht sowas auch für ein anderes Gerät das im Netzwerk vorhanden ist?

    Code:
    
    LED_DEVICE=/proc/led_mod/led
    if [ ! -f /proc/led_mod/led  ] ; then
      LED_DEVICE=/var/led
      echo "set led: ${LED_DEVICE}"
    fi
    # start internet phone led flashing
    echo "set internet phone led to blink (modul=14, state=3)"
    echo 14,3 > ${LED_DEVICE}
    
    # check kernel version
    KERNEL_VERSION=`uname -r | grep 2.6`
    if [ -z "${KERNEL_VERSION}" ]
    then
      KERNEL_VERSION="linux24"
      ETHERWAKE="etherwake"
    else
      KERNEL_VERSION="linux26"
      ETHERWAKE="ether-wake"
    fi
    
    # init busybox var
    BUSYBOX="/bin/busybox"
    
    # wait to be able to interrupt in case of emergency
    sleep 50
    
    major=`grep tffs /proc/devices`
    tffs_major=${major%%tffs}
    #write calllog
    cat > /var/calllog << 'ENDCALLLOG'
    #!/bin/sh
    
    CALLER=${1}
    LINE=${3}
    if [ -z "${LINE}" ]
    then
      LINE=${2}
    fi
    if [ "${LINE}" = "ISDN" ]
    then
      LINE=${2}
    fi
    if [ -z "${LINE}" ]
    then
      LINE=${1}
      CALLER=""
    fi
    
    sh /var/tmp/parse_telefon.sh "${LINE}" "${CALLER}" &
    
    ENDCALLLOG
    
    # save /var/calllog
    mknod /var/flash/calllog c $tffs_major $((0x77))
    cp /var/calllog /var/flash/calllog
    
    # write dummy callmessage script
    echo "#!/bin/sh" > /var/tmp/callmessage.sh
    # make it executable
    chmod +x /var/tmp/callmessage.sh
    
    # write WakeOnCall script
    cat > /var/tmp/woc.sh << 'ENDWOC'
    #!/bin/sh
    
    pcaller="016xxxxxxxxx"
    pcalled="SIP1"
    pcalled_reboot="SIP2"
    # read params
    caller=$2
    called=$1
    
    # check if woc is permitted for caller and called
    if [ "${pcaller}" = "all" ]
    then
      if [ "${pcalled}" = "all" ]
      then
        /var/tmp/startpc
      elif [ "${pcalled}" = "${called}" ]
      then
        /var/tmp/startpc
      fi
    elif [ "${pcaller}" = "${caller}" ]
    then
      if [ "${pcalled}" = "all" ]
      then
        /var/tmp/startpc
      elif [ "${pcalled}" = "${called}" ]
      then
        /var/tmp/startpc
        
    	elif [ "${pcalled_reboot}" = "${called}" ]
    	then
    		/sbin/reboot
    	fi
    
    fi
    
    ENDWOC
    
    # make it executable
    chmod +x /var/tmp/woc.sh
    
    # write parse_telefon script to file
    cat > /var/tmp/parse_telefon.sh << 'ENDPARSETEL'
    #!/bin/sh
    
    trap "" SIGCHLD
    
    prefix=
    caller="$2"
    called="$1"
    called=${called%%#*}
    
    # normalize caller
    case ${caller} in
      0049*)
        caller=0${caller#*0049}
      ;;
      49????????*)
        caller=0${caller#*49}
      ;;
      [1-9]????????*)
        caller=0${caller}
      ;;
      [1-9]*)
        caller=${prefix}${caller}
      ;;
    esac
    
    # exec woc.sh
    /var/tmp/woc.sh ${called} ${caller} &
    # exec callmessage.sh
    /var/tmp/callmessage.sh ${called} ${caller} &
    
    ENDPARSETEL
    
     
  2. princenewton007

    princenewton007 Mitglied

    Registriert seit:
    23 Aug. 2008
    Beiträge:
    313
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hört dein Receiver auf eine TCP-Verbindung?
    Dann könnte dies interessant sein.

    rawmsg aus dem Callmonitor Nachrichten über „rohe“ TCP-Verbindungen senden
     
  3. bolle

    bolle Aktives Mitglied

    Registriert seit:
    10 Apr. 2006
    Beiträge:
    1,437
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Hi danke für die Antowrt, aber veilleicht hat noch jemand anderes eine Idee?

    Ich will das ganze über die debug.cfg lösen ohne den Callmonitior. Callmessage etc. ist ja schon vorbereitet. Jetzt möchte ich, dass bei Anruf auf einer bestimmten Nummer von einer bestimmten Nummer ein Ordner auf dem Receiver angelegt wird. Der Receiver ist eine Dbox2 mit Linux.

    Vielleicht weiß ja jemand wie das geht?!

    Gruß
     
  4. Telefonmännchen

    Telefonmännchen IPPF-Promi

    Registriert seit:
    22 Okt. 2004
    Beiträge:
    5,393
    Zustimmungen:
    2
    Punkte für Erfolge:
    38
    Ort:
    Nordwürttemberg
    Es ist vielleicht einfacher, den Callmonitor auf der dBox (ja, gibts dafür auch) laufen zu lassen und dann bei einem Anruf entsprechend reagieren zu lassen. Dein Vorhaben ist etwas tricky, da Du hierbei auch noch die Verfügbarkeit der box vorher abchecken muß u.ä.. Ich denke, es wäre einfacher, ein entsprechendes Script auf der dBox laufen zu lassen. Diese hat ja auch direkten Zugriff auf ihre eigene Verzeichnisstruktur und besitzt auch die dementsprechenden Rechte, Verzeichnisse und Dateien anzulegen.

    Mit dem einfachen Senden von ein paar Befehlen per TCP/IP ist es ja nicht getan, denn dann müßte auf der dBox ja ein Progamm auch die Befehle lauschen und entsprechend reagieren. In Deiner Art Weise müßtest Du das entsprechende Verzeichnis in den Verzeichnisbaum Deiner FritzBox r/w reinmounten und könntest dann Dateien u.ä. anlegen. Beim diesbzüglichen Scripten kann ich Dir aber mangels Erfahrung nicht helfen (kann nur ein wenig VBA).

    Gruß Telefonmännchen
     
  5. bolle

    bolle Aktives Mitglied

    Registriert seit:
    10 Apr. 2006
    Beiträge:
    1,437
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    ok danke für die bisherigen antowten!!! So wie es aussieht ist das nicht wirklich zu realisieren - für mich jedenfalls nicht.

    Aber gut jetzt weiß ich zumindest bescheid!