Asterisk als demon

pbtraveller

Neuer User
Mitglied seit
23 Jul 2004
Beiträge
121
Punkte für Reaktionen
0
Punkte
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
 
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.
 
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".
 
Benutze RedHat! Wo meinst Du ist das Skript mit dabei, bzw. wo find ich das?
Danke Gruß
pbtraveller
 
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
 
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.
 
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.
 
@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
 
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
 
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???
 
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

Allerdings würde ich es schon lieber mit den dazugehörigen Scripten machen...
die tun im prinzip auch nichts anderes ?!
 
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?
 
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.
 
Fux schrieb:
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.

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...
 
@otaku42

otaku42 schrieb:
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".

@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 ???
 
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:
 
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 :)
 
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.