GELÖST!!!Eigenes Skript bei Anruf asuführen lassen?!

bolle

Aktives Mitglied
Mitglied seit
10 Apr 2006
Beiträge
1,437
Punkte für Reaktionen
0
Punkte
36
Hi zusammen,
ich habe auf meiner 7170 woc und ssh (über Construct) erfrogreich am laufen.
Nun stellt sich mir die Frage ob es eine Möglichkeit gibt zu wo noch ein weiteres eigenes Script hinzuzufügen.

Ich habe mir das so vorgestellt.:
Wenn ich mit einer bestimmten Nummer eine auf der Fritz registrierte Voipnummer anrufe ein Befhel ausgeführt wird...z.B. dass ein resrt der Box durchgeführt wird.

Ist das möglich und wenn ja wie muss ich das in die vorhandene debug einbauen?!

Code:
#!/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="01xxxxx"
pcalled="all"

# 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
  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

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

# load SSH-Server (dropbear) and etherwake

# CONFIGURATION

# SSH
# port
dropbearport="xxx"
# password
PASSWD=xxxxxxxxxxxxxx
# Etherwake
# MAC address
wolmac="xxxxxxxxxxxx"
# interface to use for WOL
# intf = std  - ata
# eth0 = LAN1 - WAN
# eth1 = LAN2 - LAN1
wolinterface="lan:2"

# CONFIGURATION END

# try to load files from USB drive
for f in /var/media/ftp/*
do
  if [ -f ${f}/files/${KERNEL_VERSION}/dropbear ]
  then
    echo "${f}/files/${KERNEL_VERSION}/dropbear"
    cp ${f}/files/${KERNEL_VERSION}/dropbear /var/tmp/dropbear
  fi
done
# check if file already exists
if [ ! -f /var/tmp/dropbear ]
then
  # wait for server
  while !(ping -c 1 ftp.the-construct.com)
  do
    sleep 5
  done
  # load files
  wget -qO /var/tmp/dropbear http://ftp.the-construct.com/files/${KERNEL_VERSION}/dropbear
fi

# try to load files from USB drive
for f in /var/media/ftp/*
do
  if [ -f ${f}/files/${KERNEL_VERSION}/busybox ]
  then
    echo "${f}/files/${KERNEL_VERSION}/busybox"
    cp ${f}/files/${KERNEL_VERSION}/busybox /var/tmp/busybox
  fi
done
# check if file already exists
if [ ! -f /var/tmp/busybox ]
then
  # wait for server
  while !(ping -c 1 ftp.the-construct.com)
  do
    sleep 5
  done
  # load files
  wget -qO /var/tmp/busybox http://ftp.the-construct.com/files/${KERNEL_VERSION}/busybox
fi

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

# set busybox var
BUSYBOX="/var/tmp/busybox"

# change root password
 
Zuletzt bearbeitet:
Code:
cat > /var/tmp/woc.sh << 'ENDWOC'
#!/bin/sh

pcaller="01xxxxx"
pcalled="all"

# 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
    [COLOR=RED]# HIER KÖNNTEST DU DEN REBOOT MACHEN
    /sbin/reboot[/COLOR]
  fi
fi

ENDWOC
 
Dort, wo jetzt "/var/tmp/startpc" steht, kannst Du Deinen eigenen Skripte einfügen.


Gruß,
Wichard
 
Danke für die Antworten!

Aber ich will sowohl WOC nutzen und zusätzlich das eigene Skript.
Also für woc soll auf Voip1 regaiert werden, und für eingehende Anrufe auf Voip2 soll das Skript ausgeführt werden.

Gruß Bolle
 
Code:
cat > /var/tmp/woc.sh << 'ENDWOC'
#!/bin/sh

pcaller="01xxxxx"
pcalled="all"
[COLOR="Red"]pcalled_reboot="01yyyyy"[/COLOR]  # Reboot-Rufnummer

# 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
  [s]fi[/s]
[COLOR="Red"]  elif [ "${pcalled_reboot}" = "${called}" ]
  then
    /sbin/reboot
  fi[/COLOR]
fi

ENDWOC
(Ohne Gewähr, einfach mal ausprobieren)


Gruß,
Wichard
 
Zuletzt bearbeitet:
Ok habe es mal so versucht wie oben beschrieben . Funktioniert leider nicht!
Das Orginal ist ja so , dass auf Anrufe der PC gestartet werden soll.
Ersetze ich das "all" durch die Voip1 Nummer passiert nicht..wie musss der Eintrag dort aussehen?

1. muss da noch 0049 ortsvohrwahl Rufnummer oder wie muss ich das eintragen?

2. Wenn ich das Sklript so schriebe dass er anstatt StartPC ein Reboot durchführen soll macht er das auch nicht!

Jemand eine Idee?
 
Die erste VoIP-Nummer ist "SIP0", die zweite Nummer "SIP1" und so weiter.

Gruß,
Wichard
 
ahh das werde ich glkeich mal versuchen! Danke!!

Edit:

so mein Code sieht jetzt so aus:!

Code:
#!/bin/sh

pcaller="01xxxxx"
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
  [s]fi[/s]
elif [ "${pcalled_reboot}" = "${called}" ]
  then
    /sbin/reboot


fi

Es funktioniert !! Vielen DanK!!
 
Zuletzt bearbeitet von einem Moderator:
mm doch noch nicht gelöst!.Vorhin ging es einmal..hab das gleiche Skript wie oben gepostet verwednet?

Ich kapiers grad nicht mehr! Die Nummer ist registriert!

WakeUP PC geht mit SIP1!

EDIT:
Habe jetzt schon alles versucht bekomme es nicht mehr hin. Wie gesagt auf SIP1 wird reagiert, d.h. woc funzt!
Wenn ich nun SIP2 anrufe kommt nur folgende Meldung aber nix passiert:
Code:
Mar 30 19:50:10 telefon[763]: SIGCHLD received!
 
Hi Marco,

ja ich habe drei Nummern,die esret also SIP0 ist für mein Faxgerät, die SIP1 dann für Woc und SIP2 sollte für Reboot stehen...

EDIT: Habe den Fehler gefunden. es war ein fi zuviel (s.h. rote markiert). Deshalb wurde auf SIP2 nicht reagiert.

/var/tmp/startpc
fi
elif [ "${pcalled_reboot}" = "${called}" ]
then
/sbin/reboot
 
Zuletzt bearbeitet:
Super, Danke für die Rückmeldung! Ich habe das überzählige fi in meinem Posting oben (und Deinem ebenfalls) durchgestrichen, falls noch einmal jemand den selben Wunsch haben sollte.


Gruß,
Wichard
 
ich habe zu danken!!
GrußBolle
 
also ich habe den Code am ende der Debug.cfg angehangen und rebootet

Code:
#Test reboot bei Anruf!

pcaller="0176XXXXX"  #<=Handynummer die den Reboot auslösen darf
pcalled="all"
pcalled_reboot="018****"  # Reboot-Rufnummer, die Nummer auf der der Anruf von Handy erfolgen muss

# 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
  fi
  elif [ "${pcalled_reboot}" = "${called}" ]
  then
    /sbin/reboot
  fi
fi

oder ist da noch was falsch, eigentlich kenne ich mich mit der Programmiersprache nicht aus, ich brauche nur den Reboot per Telefon ohne WOL

Danke und Grüße
 
Kostenlos!

Neueste Beiträge

Statistik des Forums

Themen
248,853
Beiträge
2,302,879
Mitglieder
378,501
Neuestes Mitglied
Dalle85