- Mitglied seit
- 25 Jan 2005
- Beiträge
- 15,065
- Punkte für Reaktionen
- 0
- Punkte
- 36
Jep, genau darum geht's aber!Wenn es aber darum geht, die Anrufer sofort auf dem AB im Netz zu haben sieht es schlechter aus...
Jep, genau darum geht's aber!Wenn es aber darum geht, die Anrufer sofort auf dem AB im Netz zu haben sieht es schlechter aus...
sleep 60; await() {
local day=$((60*60*24))
sleep $(( ($(date -d $(date +%m%d$1%Y) +%s) - $(date +%s) + $day) % $day ))
}
(await 0400; reboot) &
# ausser Samstag und Sonntag
if [ date +%w ne (0,6) ]; then
# ua1 um 8:00 Uhr registrieren
(await 0800;
echo "voipcfg { ua1 { enabled = yes; } }" | allcfgconv -C voip -M -;
voipcfgchanged
) &
# ua1 um 20:00 Uhr abmelden
(await 2000;
echo "voipcfg { ua1 { enabled = no; } }" | allcfgconv -C voip -M -;
voipcfgchanged
) &
fi
Ich würde mir in dem Fall die kritischen Teile (z.B. reboot) durch etwas anderes ersetzen und dann einfach mal ausprobieren; ein fehlerhaftes Shellskript kann ohne gefährliche Befehle ja nichts anrichten.RudatNet schrieb:hätte aber gerne, dass mal jemand meine Fehler korrigiert,
bevor ich mir wegen irgend einem blöden Syntax-, Logik- oder sonstigen Fehler die Box still lege.
Das wird so nicht funktionieren, weil "date" nicht aufgerufen wird, sondern ein Argument von "[" ist, weil der Integervergleich "-ne" und nicht "ne" heißt und außerdem nicht mit einer Menge oder Liste vergleichen kann. Ich hätte (ungetestet) folgende Alternativen anzubieten:# ausser Samstag und Sonntag
if [ date +%w ne (0,6) ]; then
dow=$(date +%w)
if [ $dow -ne 0 -a $dow -ne 6 ]; then ...
if [ $(date +%u) -lt 6 ]; then ...
case $(date +%a) in
Mon|Tue|Wed|Thu|Fri) ... ;;
Sat|Sun) ... ;;
esac
sleep 60; await() {
local day=$((60*60*24))
sleep $(( ($(date -d $(date +%m%d$1%Y) +%s) - $(date +%s) + $day) % $day ))
}
(await 0400; reboot) &
# ausser samstag und Sonntag
dow=$(date +%w)
if [ $dow -ne 0 -a $dow -ne 6 ]; then
# um 8:00 Uhr registrieren
(await 0800;
echo "voipcfg { ua7 { enabled = yes; } }" | allcfgconv -C voip -M -;
voipcfgchanged;
) &
# um 20:00 Uhr abmelden
(await 2000;
echo "voipcfg { ua7 { enabled = no; } }" | allcfgconv -C voip -M -;
voipcfgchanged;
) &
fi
Lass doch einfach die 7- und 20-Uhr-Aufgaben sich gegenseitig einplanen (die ganze Woche lang) und prüf dann in den Aufgaben, ob es ein Werktag ist. Skizziert etwa so:RudatNet schrieb:Nur: Wie kann ich das für jeden Tag so programmieren,
dass nicht immer ein "reboot" ausgeführt werden muß?
morgens() {
(await 2000; abends) &
if werktag; then ...; fi
}
abends() {
(await 0700; morgens) &
if werktag; then ...; fi
}
abends # (oder morgens) um in den Zyklus reinzukommen
# Nachtschaltung für einen VoIP-Account
sleep 120; await() {
local day=$((60*60*24))
sleep $(( ($(date -d $(date +%m%d$1%Y) +%s) - $(date +%s) + $day) % $day ))
}
doit() {
case $(date +%a) in
Mon|Tue|Wed|Thu|Fri)
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
;;
esac
}
morgens() {
(await 2000; abends) &
doit 6 1
}
abends() {
(await 0800; morgens) &
doit 6 0
}
abends; # Aktion beim ersten Start
Ah, gut zu wissen, dass es da Nebenwirkungen gibt. Aus Interesse: Was genau waren denn die Probleme?RudatNet schrieb:Bei dem Vorschlag von buehmann mit 'allcfgconv' gibt es Probleme,
wenn ein anderer Account manuell geändert wird!
Ah, dann scheint wohl die Konfiguration irgendwo gecachet zu werden; so wie es aussieht, vom ctlmgr (ist ja auch kein Problem, er kann ja davon ausgehen, dass er als einziger auf die Dateien zugreift; wenn nur wir da nicht wären ;-)). Wenn man den ctlmgr neustartet, passt auch das Webinterface wieder zur Konfiguration in der Datei. Wieder was über die Box gelernt. Danke.RudatNet schrieb:Bei deinem Vorschlag bleibt das Aktivierung-Häkchen unter Internet-Telefonie IMMER gesetzt.
erik schrieb:Ich finde die Idee weniger gut, denn bei jeder Veränderung der voip.cfg trennt die Box doch alle Verbindungen und registriert die Provider neu. Damit wird die Telefonie ja noch unzuverlässiger, als sie ohnehin schon ist (im Vergleich zum Festnetz). Oder irre ich da? Wäre ja schön, aber ich glaub nicht dran.
sleep 120;
###############################################################
# Start- und End-Zeit der Nachtschaltung(!): #
von=2000 # Format: 'hhmm' (Format wird nicht geprüft!) #
bis=0800 # Format: 'hhmm' (Format wird nicht geprüft!) #
sip=6 # zu schaltender Account (*121# entspricht Wert: 0) #
###############################################################
await() {
local day=$((60*60*24))
sleep $(( ($(date -d $(date +%m%d$1%Y) +%s) - $(date +%s) + $day) % $day ))
}
TestIt () {
case $(date +%a) in
Mon|Tue|Wed|Thu|Fri)
SipS=`ParseWebsite` # Daten einlesen
SipState $SipS # Ist irgend ein Sip-Acount verbunden?
if [ $verbunden -eq 1 ]
then
(sleep 20; TestIt $1 $2) &
else
DoIt $1 $2
fi
;;
esac
}
ParseWebsite() {
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
verbunden=0
for i in $*
do
if [ $i -eq 3 ]
then
verbunden=1
fi
done
}
DoIt() {
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 über init()
NS_start() {
(await $bis; NS_ende) &
TestIt $sip 0
}
NS_ende() {
(await $von; NS_start) &
TestIt $sip 1
}
#################################################
# autom. richtigen Einstieg finden
init() {
local now=$(date +%H%M)
if [ $now -ge $2 ] && [ $now -lt $1 ]
then
NS_ende
else
NS_start
fi
}
#################################################
init $von $bis # Dauerschleife initialisieren
Ja.3dfxatwork schrieb:Kann es sein das die Box extrem lange zum starten brauch und irgendwie auch langsamer ist?
Das avm Webmenu is gleich da aber der ds mod bzw das Webinterface brauch ewig lange, und auch die ganzen mod Dienste.
Alles was vorher in der debug.cfg steht, wird auch ohne Verzögerung sofort abgearbeitet.Und kann ich einfach vorher in der debug noch was reinschreiben oder wird das dann auch immer mit ausgeführt?
MFG Matthias
Kannst du ja leicht prüfen, indem du das Passwort mal testweise deaktivierst!kann das mit dem webinterface passwort zu tun haben?