Asterisk automatisieren

Piz-Man

Neuer User
Mitglied seit
4 Mai 2005
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Guten Morgen,

habe da eine konkrete Vorstellung, was mein Asterisk nun tun sollte, bin aber bei Skripting zu unerfahren.

Punkt 1:
Was kann ich tun, damit Asterisk beim einschalten des Rechners auto. startet?

Punkt 2:
Ich würde meinen Asterisk gerne dazu bringen, dass er pünktlich um 04.00 Uhr morgens neu startet. Es gibt den Befehl asterisk -x "restart now" , um meinen Asterisk ohne die *>CLI neu zu starten.

Warum? Meine IP-Adresse wird aus Sicherheitsgründen alle 24 h erneuert. Dann kann ich erst wieder nach einem Neustart von asterisk telefonieren.
Also muss dies, weil ein paar Nachbarn mittelefonieren, zur späten Stunde geschehen... :wink:
 
ad 1)

Hier wäre ein Skript:
Musst Du nur noch für Deine Distri anpassen. Achung der INIT INFO-Block ist wichtig, da darin die Abhängigkeiten der Dienste festgelegt sind.

Code:
### BEGIN INIT INFO
# Provides:          asterisk
# Required-Start:    SuSEfirewall2_init $network $local_fs $remote_fs $named SuSEfirewall2_setup
# Should-Start:      $ALL
# Required-Stop:     $syslog $remote_fs
# Should-Stop:       $time ypbind sendmail zaptel
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: Asterisk PBX software
# Description:       Start the Asterisk PBX software.
#                    Configuration files are under /etc/asterisk.
# 
### END INIT INFO
ASTERISK_BIN=/usr/sbin/asterisk
PID_FILE=/var/run/asterisk/asterisk.pid
test -x $ASTERISK_BIN || { echo "$ASTERISK_BIN not installed"; 
	if [ "$1" = "stop" ]; then exit 0;
	else exit 5; fi; }

. /etc/rc.status
case "$1" in
    start)
        echo -n "Starting ASTERISK "
        modprobe zaptel && insmod /lib/modules/`uname -r`/misc/zaphfc.ko modes=1 && ztcfg -v
        export TERM="linux"
        sleep 2
        $ASTERISK_BIN
        rc_status -v
        ;;
    status)
        echo -n "checking status of ASTERISK daemon"
        checkproc -p ${PID_FILE} ${ASTERISK_BIN}
        rc_status -v
        ;;
    restart)
        $0 stop
        $0 start
        rc_status -v
        ;;
    stop)
        echo -n "Shutting down ASTERISK "
        $ASTERISK_BIN -rx 'stop now'
        sleep 2
        rmmod zaphfc
        rmmod zaptel
        rc_status -v
        ;; 
    *)
        echo "Usage: $0 (start|stop|restart|status)"
        exit 1
        ;;
esac

speichere es als /etc/init.d/asterisk ab
Berechtigung setzen auf 744
dann
insserv /etc/init.d/asterisk start=3,5

Das läuft bei mir unter SuSE 9.3

ad 2)

bastle Dir ein Skript das folgendermaßen aussieht

Code:
#!/bin/bash
/etc/init.d/asterisk restart

und führe dieses zu einem bestimmten Zeitpunkt mittels eines Cron-Jobs aus.

Oder trage es als postexec-script beim smpppd ein, dann wird es jeweils nach der Wiedereinwahl ausgeführt

Gruß

Harry
 
Gelöst

Hallo knitter,

danke für den Tip, habe mich noch ein bisschen umgeschaut, weil ich unter dem asterisk einen Debian sarge laufen habe. Da gibt es ein fertiges Skript, ähnlich zu deinem.

Für andere Debian Benutzer, die ihren asterisk automatisch zu einer bestimmten Uhrzeit starten möchten, ein Beispiel für 03.58 Uhr morgens:

Unter /etc/init.d gibt es das asterisk Skript. Ihr müsst also die Task folgendermaßen planen...

Mit > vi /etc/crontab
den Taskplaner öffnen und folgende Zeile hinzufügen:
58 3 * * * root /etc/init.d/asterisk restart

"58" für Minuten
"3" für Stunden
"* * *" für Monat / Tag / Jahr
"root" für den User->root
 
Du musst natürlich aufpassen, dass auch die Treiber mit geladen werden. Also sollte in Deinem Skript eine Zeile ähnlich dieser

modprobe zaptel && insmod /lib/modules/`uname -r`/misc/zaphfc.ko modes=1 && ztcfg -v
enthalten sein.

Den cronjob richtet man nicht unbedingt in /etc/crontab ein sondern (zumindest ist es bei SuSE so) in

/var/spool/cron/tabs/root
Die Syntax ist die selbe.

(wenn Du das lieber in einer grafischen Benutzeroberfläche tun willst, nimm das kde-Programm kcron (evtl. nachinstallieren) und starte es mit kdesu kcron)

Viel Erfolg

Harry
 
hallo knitter, mal das problem hier weiterführen.

nutze das flash panel (asternic.org). das starte ich als daemon mit ./op_server.pl -d wenn ich im verzeichnis /soft/op-panel/ bin.
wie modifiziert man denn dein skript dafür, dass er es nach asterisk gleich mit startet? muss ich da sowas a la
FLASHOP=/soft/op-panel/op_server.pl

und später im context
$FLASHOP -d

schreiben?
sorry.. startscript newbee.. ;-)
 
Hallo!
Kann man das Problem mit der Zwangstrennung nicht eleganter lösen? Besser wäre es doch wenn Asterisk automatisch merken würde das er eine neue externe IP zugewiesen bekommen hat...
Mein Problem ist nämlich, dass ich hinter einem Router sitze und keinen Eunfluss auf diesen habe. Das heisst: Mein Nachbar spielt da ab und zu mal mit dem Router rum - praktisch schon vorprogrammiert das mein Cronjob nicht mehr funzt.

Ich habe zwar kein Ahnung ;-) ; aber Asterisk hat doch so eine Art Funktion wie register_expires die sorgt doch dafür das er sich nach einem bestimmten Intervall wieder neu anmeldet und somit müsste dann auch das Problem der Zwangstrennung umgangen sein. Ich mein bis auf die gerade mal 50 sek.
 
@scuba303
Mit dem flash panel hab ich leider keine Erfahrung.
Aber eigentich lässt sich das Problem wie hier weiter oben beschrieben recht gut lösen. So schwierig ist das nun auch wieder nicht. Man muss nur lesen.

@Party_Japaner
Einen Router, auf den Du keinen direkten Zugriff hast, könntest Du auch über traceroute nach seiner IP fragen (die Anzahl der Hops kennst Du ja). Das lässt Du dann auch über einen cronjob laufen. Nach einer Änderung der IP startest Du den Asterisk einfach neu.

Harry
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,868
Beiträge
2,219,768
Mitglieder
371,584
Neuestes Mitglied
porcupine
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.