Nachtschaltung für einzelne VoIP-Accounts!?

Hatte leider in obigem Script vergessen, wieder einzustellen, dass es am WE nicht schaltet :(. Also muss die Zeile
Mon|Tue|Wed|Thu|Fri|Sat|Sun)
wieder in
Mon|Tue|Wed|Thu|Fri)
geändert werden.

Korrigiere es jetzt noch da oben.

@ inovate:
Wenns dann funktioniert, dann solltest du das Script nochmal mit
log=0
aufspielen, damit keine Logdatei mehr geschrieben wird.

EDIT 11.03.:
Außerdem war noch ein kleiner Fehler in ParseWebsite() (Log-Eintrag) [ist jetzt korrigiert in #78]

EDIT2 11.03.:
Also bei mir hat das Ab- u. Anschalten auch zum 2. mal geklappt (in FBF geprüft). Gestern um 12 Uhr gestartet, NS von 13 bis 14 Uhr.
# grep DoIt test.log
DoIt: 5 1 Sat Mar 10 12:12:07 CET 2007
DoIt: 5 0 Sat Mar 10 13:00:06 CET 2007
DoIt: 5 1 Sat Mar 10 14:00:05 CET 2007
DoIt: 5 0 Sun Mar 11 13:00:08 CET 2007
DoIt: 5 1 Sun Mar 11 14:00:06 CET 2007
 
Zuletzt bearbeitet:
u.g schrieb:
Hatte leider in obigem Script vergessen, wieder einzustellen, dass es am WE nicht schaltet :(. Also muss die Zeile
Mon|Tue|Wed|Thu|Fri|Sat|Sun)
wieder in
Mon|Tue|Wed|Thu|Fri)
geändert werden.

Ja kein Problem .. habe ich gesehen ... => wollte die Zeile (mit Sa&So) drinlassen, damit ich es am WE auch testen kann bzw. nicht erst bis Montag warten muss (damit ich weiß ob es funktioniert od. nicht).

Ich werde berichten ob es geklappt hat. Hoffen wirs :rock:

Das mit dem log=0 habe ich verstanden ;)
 
Hallo u.g,

habe leider wieder eine schlechte Nachricht. Das Skript ist erneut nur einmal ausgeführt worden .. Am heutigem Sonntag ist keine Nachtschaltung erfolgt.

Die LOG Datei sagt folgendes :

Code:
# cat test.log
===================
init: 1300 1400 1343 Sat Mar 10 13:43:26 CET 2007
NS_start: Sat Mar 10 13:43:27 CET 2007
TestIt: Sat Mar 10 13:43:27 CET 2007
await: 1400 993 Sat Mar 10 13:43:27 CET 2007
SipState: Sat Mar 10 13:43:28 CET 2007
DoIt: 2 0 Sat Mar 10 13:43:28 CET 2007
NS_ende: Sat Mar 10 14:00:00 CET 2007
TestIt: Sat Mar 10 14:00:00 CET 2007
await: 1300 82800 Sat Mar 10 14:00:00 CET 2007
SipState: Sat Mar 10 14:00:01 CET 2007
DoIt: 2 1 Sat Mar 10 14:00:01 CET 2007

Zeiten waren :

von=1300 # Format: 'hhmm' (Format wird nicht geprueft!) #
bis=1400 # Format: 'hhmm' (Format wird nicht geprueft!) #

Denke die Endlosschleife wird verlassen ? Hast du eine Idee woher der Fehler kommt?

Also das Skript funktioniert somit 2 mal (aber leider nicht dauerhaft).

Gruß INOVATE

P.S.: Habe natürlich dein (Mon|Tue|Wed|Thu|Fri|Sat|Sun)-Skript genutzt!
 
inovate schrieb:
await: 1300 82800 Sat Mar 10 14:00:00 CET 2007
Is ja komisch, bei mir gings. Nach obiger Zeile hätte bei dir seit gestern 14 Uhr ein "sleep 82800" mit "ps ax" angezeigt worden sein.
Kann es sein, dass der irgendwann heute vor 13 Uhr schon nicht mehr auftauchte? ... Ich denke nochmal drüber nach ...

EDIT: Habe Script in #78 nochmal gering modifiziert. Aktualisierst du es nochmal auf deiner Box und probierst es nochmal und kuckst mal nach 1. Ab/Anschalten öfters mit "ps ax", ob noch ein "sleep 82800" (oder ähnlich) läuft (morgen,heute abend)? Bin aber erstmal ratlos ...

EDIT2:
Ich starte meine NS jetzt auch mal über die debug.cfg statt über separates Script, mal sehn, obs was ändert ...
 
Zuletzt bearbeitet:
Hey U.g,

wollte grad die neue debug.cfg erstellen lassen (http://www.the-construct.de/), bevor ich deinen "edit 2" gelesen habe.

Würdest du mir mal deine debug.cfg anhängen od. wie söllte ich Sie starten?
 
Ist schon ok, lass dich nicht verwirren :)
Ich meinte damit: ich habe den Inhalt des Scriptes jetzt auch in meine debug.cfg geschrieben und Box neu gestartet, vorher hatte ich es über ein separates Script gestartet ohne FB-Neustart (damit die Bedingungen genauso wie bei dir sind).
 
Ich habe soeben dein modifiziertes Skript auf die FB gespielt.

von=1905 # Format: 'hhmm' (Format wird nicht geprueft!) #
bis=1930 # Format: 'hhmm' (Format wird nicht geprueft!)

gestartet um 18:55 Uhr (SIP war AUS).. nach 2 Minuten Wartezeit funktioniert das einschalten.

==> Ich werde den Post hier ergänzen

jeweils mit "anderen Uhrzeiten"

11.03 - 19:05 : Auschalten funktionierte um 19:05 ( 926 root 248 S sleep 1499)
11.03 - 19:38 : Einschalten funktionierte um 19:30 ( 1147 root 248 S sleep 84900)
11.03 - 21:50 : Sleep-Befehl noch da (1147 root 248 S sleep 84900)
12.03 - 06:55 : Sleep-Befehl noch da (1147 root 248 S sleep 84900)
12.03 - 15:55 : Sleep-Befehl noch da (1147 root 248 S sleep 84900)

(bald wirds spannend ;-)



außerdem aktualisiere ich die test.log - Datei : (Stand: 12.03 - 15:55)

Code:
# cat test.log
===================
init: 1905 1930 1859 Sun Mar 11 18:59:10 CET 2007
NS_ende: Sun Mar 11 18:59:10 CET 2007
TestIt: Sun Mar 11 18:59:10 CET 2007
ParseWebsite: Sun Mar 11 18:59:10 CET 2007
await: 1905 350 Sun Mar 11 18:59:10 CET 2007
SipState: Sun Mar 11 18:59:11 CET 2007
DoIt: 2 1 Sun Mar 11 18:59:11 CET 2007
await: 1905 350 ende Sun Mar 11 19:05:00 CET 2007
NS_start: Sun Mar 11 19:05:00 CET 2007
TestIt: Sun Mar 11 19:05:00 CET 2007
ParseWebsite: Sun Mar 11 19:05:01 CET 2007
await: 1930 1499 Sun Mar 11 19:05:01 CET 2007
SipState: Sun Mar 11 19:05:02 CET 2007
DoIt: 2 0 Sun Mar 11 19:05:02 CET 2007
await: 1930 1499 ende Sun Mar 11 19:30:00 CET 2007
NS_ende: Sun Mar 11 19:30:00 CET 2007
TestIt: Sun Mar 11 19:30:00 CET 2007
ParseWebsite: Sun Mar 11 19:30:00 CET 2007
await: 1905 84900 Sun Mar 11 19:30:00 CET 2007
SipState: Sun Mar 11 19:30:01 CET 2007
DoIt: 2 1 Sun Mar 11 19:30:01 CET 2007
 
Zuletzt bearbeitet:
Lösung mit cron

Hier noch eine Alternativ-Lösung, die das An-/Abschalten (die Nachtschaltung) mit cron(d) erledigt.
Voraussetzung: ein für die jeweilige FB-FW vorhandenes busybox-Binary, das crond enthält.
Dieses muss als "busybox" auf dem eigenen Webspace abgelegt werden, da es über die debug.cfg beim Starten von dort geholt wird.
Eine passende busybox mit crond gibt es vielleicht hier?

Der Einstellungsteil am Anfang muss natürlich angepasst werden.
Die Beispiel-Einstellungen bewirken folgendes:
- busybox liegt hier: http://www.example.com/busybox (busybox=...)
- zu schaltender SIP-Account ist 2 (sip=...)
- Nachtschaltung startet Mo-Fr (tag=...) um 07:30 (vonstd/vonmin)
- Nachtschaltung endet Mo-Fr (tag=...) um 18:30 (bisstd/bismin)
- Nachtschaltungs-Skript legt keine Log-Datei an (log)
- Fritz Box ist nicht passwortgeschützt (pass)

Jeder Tag wäre tag="*", mo+mi wäre tag="1,3" (siehe Handbuchseite crontab).

Hier die debug.cfg:
Code:
#!/bin/sh 

###################################################################
vonstd=07
vonmin=30
bisstd=18
bismin=30
tag="1-5"
sip=2
log=0
pass=""
busybox="http://www.example.com/busybox"
###################################################################

von="$vonstd$vonmin"
bis="$bisstd$bismin"

mkdir /var/spool
mkdir /var/spool/cron
mkdir /var/spool/cron/crontabs

cat <<EOP > /var/spool/cron/crontabs/root
#* * * * * echo Aktion zur vollen Minute... >> /var/tmp/crontab.log
$vonmin $vonstd * * $tag /var/tmp/nachtschalt.sh START $sip
$bismin $bisstd * * $tag /var/tmp/nachtschalt.sh STOP $sip
EOP

max=10
i=0
while [ $i -lt $max ]; do
    if ping -c 1 www.heise.de >/dev/null; then
            break
    fi
    let i=$i+1
    sleep 15
done
sleep 20

cd /var/tmp

cat <<EOP > /var/tmp/nachtschalt.sh
#!/bin/sh 
##############################################################
log=$log     # Logdatei fuehren (0=nein,1=ja)
pass=$pass   # Passwort Fritzbox (""=keins) 
EOP
cat <<\EOP >> /var/tmp/nachtschalt.sh
##############################################################
logit() {
  if [ $log -eq 1 ]; then
      echo "$1" >> /var/tmp/test.log
  fi     
}
TestIt () {
logit "TestIt: `date`"
case $(date +%a) in
  Mon|Tue|Wed|Thu|Fri|Sat|Sun)
    SipS=`ParseWebsite` # Daten einlesen
    SipState $SipS      # Ist irgend ein Sip-Acount verbunden?
    if [ $verbunden -eq 1 ]
    then
       logit "TestIt: verbunden ... `date`" 
       (sleep 20; TestIt $1 $2) &
    else
       DoIt $1 $2
    fi
  ;;
esac
}
flogin() {
  if [ -n "$pass" ]; then
     logit "flogin: `date`"
     export REQUEST_METHOD="POST"
     export REMOTE_ADDR="127.0.0.1"
     export CONTENT_TYPE="application/x-www-form-urlencoded"
     POST_DATA="login:command/password=$pass"
     export CONTENT_LENGTH=${#POST_DATA}
     echo -n "$POST_DATA" | /usr/www/html/cgi-bin/webcm > /dev/null
     sleep 3
  fi  
}
ParseWebsite() {
  logit "ParseWebsite: `date`" 
  flogin    
  export REQUEST_METHOD="GET"
  export REMOTE_ADDR="127.0.0.1"
  export QUERY_STRING="getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=home&var:pagename=home"
  cd /usr/www/html/cgi-bin
  ./webcm | sed -n 's/^.*sip:status.sip[0-9].connect.*value="\([0-9]\).*/\1/p'
}
SipState() {
  local i
  logit "SipState: `date`"
  verbunden=0
  for i in $*
  do
    if [ $i -eq 3 ]
    then
      verbunden=1
    fi
  done
}
DoIt() {
  logit "DoIt: $1 $2 `date`"
  flogin  
  export REQUEST_METHOD="POST"
  export REMOTE_ADDR="127.0.0.1"
  export CONTENT_TYPE="application/x-www-form-urlencoded"
  POST_DATA="sip:settings/sip$1/activated=$2"
  export CONTENT_LENGTH=${#POST_DATA}
  echo -n "$POST_DATA" | /usr/www/html/cgi-bin/webcm > /dev/null
}
#################################################
# Hauptschleife. Einstieg automatisch ue�ber init()
NS_start() {
  logit "NS_start: `date`"
  TestIt $sip 0  
}
NS_ende() {
  logit "NS_ende: `date`" 
  TestIt $sip 1 
}
#################################################

sip=$2

if [ "$1" = "START" ]; then
    NS_start
else
    NS_ende
fi    

EOP
chmod a+x /var/tmp/nachtschalt.sh

wget $busybox
sleep 3
chmod a+x busybox
./busybox crond

/var/tmp/nachtschalt.sh STOP $sip

sleep 240

x=$(date +%a)
echo "x=$x" >> /var/tmp/start.log

# case $(date +%a) in
case $x in
  Mon|Tue|Wed|Thu|Fri)
    now=$(date +%H%M)
    echo "now=$now" >> /var/tmp/start.log
    if [ $von -gt $bis ]; then
        if [ $now -ge $bis ] && [ $now -lt $von ]; then
            echo "NS aus..." >> /var/tmp/start.log
            # /var/tmp/nachtschalt.sh STOP $sip
          else
            echo "NS an...." >> /var/tmp/start.log
            /var/tmp/nachtschalt.sh START $sip
          fi  
    else
        if [ $now -ge $von ] && [ $now -lt $bis ]; then
            echo "NS an...." >> /var/tmp/start.log
            /var/tmp/nachtschalt.sh START $sip
          else
            echo "NS aus..." >> /var/tmp/start.log
            # /var/tmp/nachtschalt.sh STOP $sip
          fi  
    fi
    ;;
esac
EDIT 26.03.07:
Es wird jetzt der eingestellte SIP-Account nach Neustart generell erstmal aktiviert
(falls er z.B. am WE manuell deaktiviert wurde und dann Stromausfall war ;-) [deakt. SIP wird normalerweise nicht automatisch aktiviert!])
Mo-Fr (an den eingestellten Tagen) wird jetzt 4 (statt 2) Min gewartet, bevor das akt. Datum ermittelt wird zur Sicherheit).
 
Zuletzt bearbeitet:

Statistik des Forums

Themen
246,341
Beiträge
2,250,494
Mitglieder
373,997
Neuestes Mitglied
BerndBareth
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.