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
 

Hupe

Aktives Mitglied
Mitglied seit
8 Apr 2004
Beiträge
2,586
Punkte für Reaktionen
0
Punkte
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.
 

otaku42

Admin-Team
Mitglied seit
26 Mrz 2004
Beiträge
1,670
Punkte für Reaktionen
0
Punkte
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".
 

pbtraveller

Neuer User
Mitglied seit
23 Jul 2004
Beiträge
121
Punkte für Reaktionen
0
Punkte
0
Benutze RedHat! Wo meinst Du ist das Skript mit dabei, bzw. wo find ich das?
Danke Gruß
pbtraveller
 

pbtraveller

Neuer User
Mitglied seit
23 Jul 2004
Beiträge
121
Punkte für Reaktionen
0
Punkte
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
 

otaku42

Admin-Team
Mitglied seit
26 Mrz 2004
Beiträge
1,670
Punkte für Reaktionen
0
Punkte
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.
 

dg8lav

Neuer User
Mitglied seit
13 Jun 2004
Beiträge
27
Punkte für Reaktionen
0
Punkte
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.
 

bjunix

Neuer User
Mitglied seit
18 Apr 2004
Beiträge
192
Punkte für Reaktionen
0
Punkte
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
 

schakal2k

Mitglied
Mitglied seit
16 Aug 2004
Beiträge
309
Punkte für Reaktionen
0
Punkte
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
 

schakal2k

Mitglied
Mitglied seit
16 Aug 2004
Beiträge
309
Punkte für Reaktionen
0
Punkte
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???
 

bjunix

Neuer User
Mitglied seit
18 Apr 2004
Beiträge
192
Punkte für Reaktionen
0
Punkte
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

Allerdings würde ich es schon lieber mit den dazugehörigen Scripten machen...
die tun im prinzip auch nichts anderes ?!
 

schakal2k

Mitglied
Mitglied seit
16 Aug 2004
Beiträge
309
Punkte für Reaktionen
0
Punkte
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?
 

Fux

Mitglied
Mitglied seit
3 Jun 2004
Beiträge
420
Punkte für Reaktionen
0
Punkte
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.
 

schakal2k

Mitglied
Mitglied seit
16 Aug 2004
Beiträge
309
Punkte für Reaktionen
0
Punkte
16
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...
 

vbbaby

Mitglied
Mitglied seit
8 Sep 2004
Beiträge
350
Punkte für Reaktionen
0
Punkte
16
@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 ???
 

vbbaby

Mitglied
Mitglied seit
8 Sep 2004
Beiträge
350
Punkte für Reaktionen
0
Punkte
16
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:
 

otaku42

Admin-Team
Mitglied seit
26 Mrz 2004
Beiträge
1,670
Punkte für Reaktionen
0
Punkte
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 :)
 

3CX PBX - GRATIS
Linux / Win / Cloud

Neueste Beiträge

Statistik des Forums

Themen
231,865
Beiträge
2,016,118
Mitglieder
348,956
Neuestes Mitglied
Juergen.pruess