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

Asterisk als demon

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von pbtraveller, 18 Aug. 2004.

  1. pbtraveller

    pbtraveller Neuer User

    Registriert seit:
    23 Juli 2004
    Beiträge:
    121
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi,
    was bzw. wo muss ich was einstellen, dass Asterisk direkt beim Starten der Kiste gestartet wird. Asterisk sollte auch laufen, ohne dass sich ein Benutzer anmeldet.
    Wo, bzw. was muss ich verändern, damit Asterisk als demon läuft?
    Sorry, bin ein Linuxfrischling!

    Danke und Gruß :)
    pbtraveller
     
  2. Hupe

    Hupe Aktives Mitglied

    Registriert seit:
    8 Apr. 2004
    Beiträge:
    2,586
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Das kommt auf deine Linux-distribution an. Für RedHat ist, glaube ich, schon ein fertiges Startscript dabei. Für Debian müsste es hier irgendwo im Forum ein Beispiel geben. Mußt Du mal nach "Startscript" oder so suchen. Das Dingen kam, von rajo, wenn ich mich nicht total irre.
    Das entsprechende Startscript muß dann in das dafür vorgesehene Verzeichnis (bei Debina /etc/init.d) und dann mit dann mit den einzelnen Runlevel "verlinkt" werden. Wie das genau läuft, hängt aber von deinem Linux ab.
     
  3. otaku42

    otaku42 Admin-Team

    Registriert seit:
    26 März 2004
    Beiträge:
    1,670
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hier mal die beiden Init-Skripte, mit denen ich Asterisk auf Debian 3.0 zum laufen bewege:

    /etc/init.d/asterisk:
    Code:
    #! /bin/sh
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    DAEMON=/usr/sbin/asterisk
    NAME=asterisk
    DESC="VoIP PBX daemon"
    
    test -x $DAEMON || exit 0
    
    set -e
    
    case "$1" in
      start)
            echo -n "Starting $DESC: $NAME"
            screen -d -m /etc/init.d/asterisk.cli
            echo "."
            ;;
      stop)
            echo -n "Stopping $DESC: $NAME"
            asterisk -r -x "stop now"
            echo "."
            ;;
      reload|force-reload)
            echo -n "Reloading configuration for $DESC: $NAME"
            asterisk -r -x "reload"
            echo "."
            ;;
      restart)
            echo -n "Restarting $DESC: $NAME"
            asterisk -r -x "restart now"
            echo "."
            ;;
      *)
            N=/etc/init.d/$NAME
            # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
            echo "Usage: $N {start|stop|restart|force-reload}" >&2
            exit 1
            ;;
    esac
    
    exit 0
    
    etc/init.d/asterisk.cli:
    Code:
    #!/bin/bash
    
    modprobe zaptel
    modprobe zaphfc modes=1
    ztcfg -vv
    asterisk -vvvvvvvvcg
    sleep 2
    rmmod zaphfc
    rmmod zaptel
    
    Man muss dann noch einen Symlink fuer den gewuenschten Runlevel setzen, beispielsweise:
    Code:
    cd /etc/rc2.d
    ln -s ../init.d/asterisk S98asterisk
    cd ../rc0.d
    ln -s ../init.d/asterisk K01asterisk
    
    Mich stoerte bei anderen Loesungen, dass man nicht alle Informationen im CLI angezeigt bekommt, wenn man sich mit "asterisk -rc" mit einem im Hintergrund laufenden Asterisk verbunden hat - zumindest habe ich in diesen Faellen immer weniger Informationen gesehen als direkt auf der CLI, ganz egal, wieviele "-v" ich beim Aufruf mit angehaengt habe.

    Daher habe ich den Weg ueber "screen" gewaehlt. Asterisk laeuft auch damit im Hintergrund, aber ich kann mich direkt mit der jeweiligen "Konsole" von Asterisk verbinden, wenn ich "screen -x" eingebe. Wenn ich fertig bin, druecke ich einfach "CTRL+A" und danach noch "D", und ich bin wieder am Prompt - Asterisk laeuft weiterhin im Hintergrund.

    Finde ich persoenlich sehr praktisch und besser als die Variante mit "asterisk -rc".
     
  4. pbtraveller

    pbtraveller Neuer User

    Registriert seit:
    23 Juli 2004
    Beiträge:
    121
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Benutze RedHat! Wo meinst Du ist das Skript mit dabei, bzw. wo find ich das?
    Danke Gruß
    pbtraveller
     
  5. otaku42

    otaku42 Admin-Team

    Registriert seit:
    26 März 2004
    Beiträge:
    1,670
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Verschiedene Init-Skripte (u.a. auch fuer RedHat) kommen mit dem Asterisk-Source mit, im Unterverzeichnis contrib/init.d
     
  6. Hupe

    Hupe Aktives Mitglied

    Registriert seit:
    8 Apr. 2004
    Beiträge:
    2,586
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Oder im Unterverzeichnis "redhat"
     
  7. pbtraveller

    pbtraveller Neuer User

    Registriert seit:
    23 Juli 2004
    Beiträge:
    121
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Sorry, wenn ich so dumm frage! im Verzeichnis redhat liegen vier Dinge:asterisk asterisk.spec rpmmacros rpmrc
    wo muss ich was hinkopieren, und wie muss ich das verlinken?
    Vielen Dank!
    Gruß
    pbtraveller
     
  8. otaku42

    otaku42 Admin-Team

    Registriert seit:
    26 März 2004
    Beiträge:
    1,670
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Die Datei "asterisk" ist das Startskript, dass Du suchst. Wie das genau funktioniert kann ich Dir mangels Erfahrungen mit Redhat aber nicht sagen - das sollte sich aber in entsprechenden Howtos (oder ueber Google) finden lassen.
     
  9. dg8lav

    dg8lav Neuer User

    Registriert seit:
    13 Juni 2004
    Beiträge:
    27
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Bei Red Hat ist das doch vollkommen simpel:

    cd /usr/src/asterisk oder eben das passende Verzeichnis und dann

    make config

    Das erstellt eine Startconfig die komplett fertig ist. Es wird dann das /usr/sbin/safe_asterisk vom /etc/rc.d/init.d/asterisk gestartet.

    Mit /etc/init.d/asterisk ohne Parameter bekommt man die möglichen dann angezeigt.

    Nach dem Booten startet Asterisk natürlich automatisch.
     
  10. bjunix

    bjunix Neuer User

    Registriert seit:
    18 Apr. 2004
    Beiträge:
    192
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @otaku42:

    für dein skript ist es alleerdings nötig "screen" beim booten zu starten, und zwar bevor das asterisk script gestartet wird.

    es müsste reichen "screen -d -m" aus /etc/init.d/asterisk zu löschen, wenn man kein screen benutzt
     
  11. schakal2k

    schakal2k Mitglied

    Registriert seit:
    16 Aug. 2004
    Beiträge:
    309
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Was muss ich eigentlich bei verwendung einer HFC-Karte ändern wenn ich das init-Script welches mit zaptel mitkommt verwenden will?

    Dazu auch schon hier die Frage:
    http://www.ip-phone-forum.de/forum/viewtopic.php?t=3812&highlight=

    EDIT:

    Das was bjunix angesprochen hat wäre sonst auch ne Möglichkeit, da ich dann lieber über die -r Option raufschaue...

    Allerdings würde ich es schon lieber mit den dazugehörigen Scripten machen...

    OS ist Fedora Core 2
     
  12. schakal2k

    schakal2k Mitglied

    Registriert seit:
    16 Aug. 2004
    Beiträge:
    309
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Code:
    #!/bin/bash 
    
    modprobe zaptel 
    modprobe zaphfc modes=1 
    ztcfg -vv 
    asterisk -vvvvvvvvcg 
    sleep 2 
    rmmod zaphfc 
    rmmod zaptel
    
    Sag mal, wofür ist das "sleep 2" bei mir wird das Modul nämlich gleich wieder entladen, wenn ich "asterisk start" aufrufe...

    EDIT:

    Wenn ich die letzten 3 Zeilen auskommentiere funktioniert es auch nciht.

    Und "screen -ls" sagt mir, dass keine Screens existieren...

    Was mache ich falsch???
     
  13. bjunix

    bjunix Neuer User

    Registriert seit:
    18 Apr. 2004
    Beiträge:
    192
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ja das problem hatte ich auch...

    otaku42 benutz "screen", welches er vor dem starten des asterisk skriptes läd.
    entfern einfach "screen -d -m" aus /etc/init.d/asterisk.
    das sollte reichen.
    und vergiss nicht die dateien asterisk und asterisk.cli ausführbar zumachen
    (chmod a+x asterisk)

    wieso die module wieder entladen werden nach dem start von asterisk weiss ich auch nicht, funktioniert bei mir aber ohne probleme

    die tun im prinzip auch nichts anderes ?!
     
  14. schakal2k

    schakal2k Mitglied

    Registriert seit:
    16 Aug. 2004
    Beiträge:
    309
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Ah... ich bin ein Stück weiter...

    Er kann scheinbar das Modul zaphfc nicht finden...

    Wo muss ich das Modul zaphfc ablegen? Oder soll ich in das zaphfc-Verzeichniss verlinken?
     
  15. Fux

    Fux Mitglied

    Registriert seit:
    3 Juni 2004
    Beiträge:
    420
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Kopiere zaphfc.o (2.4er Kernel) bzw. zaphfc.ko (2.6er Kernel) in das Verzeichnis /lib/modules/<%versionsnummer deines Kernels%>/misc und führe anschließend depmod -ae aus.
    Danach sollte das Modul auch ohne Angabe von Pfaden gefunden werden.
    Übrigens "weiß" dein Modprobe nach depmod -ae auch, daß das Modul zaptel von dem Modul zaphfc benötigt wird.
    Man kann also durch ein einfaches modprobe zaphfc beide Module automatisch nacheinander laden lassen.
     
  16. schakal2k

    schakal2k Mitglied

    Registriert seit:
    16 Aug. 2004
    Beiträge:
    309
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    DANKE!!!

    Ich dachte mir schon, dass ich meinem Rechner irgendwie mitteilen muss, wo er das Modul findet, aber ich wusste nicht mit welchem Befehl.

    Ich hatte das Modul schon dahin kopiert, und mich hat es ein wenig verwirrt, dass "modinfo zaphfc" mir Infos über das Modul geliefert hat...

    Danke nochmal...

    EDIT:
    Grade getestet, funzt... :wink:

    EDIT2:

    Allerdings sind die Meldungen beim Verbinden mit "screen -x" nicht so schön farbig...
     
  17. vbbaby

    vbbaby Mitglied

    Registriert seit:
    8 Sep. 2004
    Beiträge:
    350
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Hamburg
    @otaku42

    @otaku42

    Habe das gerade mal so bei mir eingetragen......
    was ich noch nicht verstehe ist, wie der Aufruf funktionieren soll.....
    wenn ich mich also von einem anderen PC auf dem Asterisk-PC mit SSH verbinde und screen -x eingebe, kommt als Antwort command not found .......

    Wie soll das funktionieren ???
     
  18. otaku42

    otaku42 Admin-Team

    Registriert seit:
    26 März 2004
    Beiträge:
    1,670
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Interpretiere die Bedeutung von "command not found", dann hast Du die Loesung :)
    Im Ernst: Du hast vermutlich screen nicht installiert. Wenn Du das nachholst, dann sollte es gehen.

    hth.
     
  19. vbbaby

    vbbaby Mitglied

    Registriert seit:
    8 Sep. 2004
    Beiträge:
    350
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Hamburg
    Du hast sicherlich recht, werde ich mal austesten, aber als Linux Newbie :oops: darf man manchmal schon ein wenig blind sein.....ich dachte da wäre irgendetwas am aufruf falsch :roll:....als newbie kommt man nicht unbedingt auf die Idee das man den Befehl erst noch installieren muss :keule: .....so sind wir ex-windofer....
    aber ich kriege das schon noch hin.... :wink:
     
  20. otaku42

    otaku42 Admin-Team

    Registriert seit:
    26 März 2004
    Beiträge:
    1,670
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Mach Dir nix draus... jeder hat mal irgendwann angefangen, und was dem einen logisch erscheint, sieht der andere im Eifer des Gefechtes (oder bedingt durch seine Verzweiflung) halt manchmal einfach nicht. Ich glaube, das kann jeder leicht nachvollziehen :)