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

Asterisk automatisieren

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von Piz-Man, 23 Mai 2005.

  1. Piz-Man

    Piz-Man Neuer User

    Registriert seit:
    4 Mai 2005
    Beiträge:
    34
    Zustimmungen:
    0
    Punkte für Erfolge:
    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:
     
  2. knitter

    knitter Neuer User

    Registriert seit:
    22 Apr. 2005
    Beiträge:
    64
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  3. Piz-Man

    Piz-Man Neuer User

    Registriert seit:
    4 Mai 2005
    Beiträge:
    34
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  4. knitter

    knitter Neuer User

    Registriert seit:
    22 Apr. 2005
    Beiträge:
    64
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  5. scuba303

    scuba303 Neuer User

    Registriert seit:
    3 Dez. 2004
    Beiträge:
    98
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.. ;-)
     
  6. Party-Japaner

    Party-Japaner Neuer User

    Registriert seit:
    23 Juli 2004
    Beiträge:
    176
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  7. knitter

    knitter Neuer User

    Registriert seit:
    22 Apr. 2005
    Beiträge:
    64
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @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
     
  8. Honk

    Honk Neuer User

    Registriert seit:
    3 Okt. 2004
    Beiträge:
    108
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Hamburg