Fehler beim installieren von Asterisk auf usb-Stick

Ich starte Asterisk in einer Batchdatei so:

/var/media/NEW_LINK/cfg_asterisk16 usb_install
asterisk

und das funktioniert ohne Probleme.
 
Ist das dann eine ast.sh? Ich habe bisher noch niemals eine batch-Datei unter Linux erstellt und ausführen lassen...
 
Üblicherweise macht man das über ein rc script ich denke google hilft dabei weiter wie dein Freetz-Startscript für asterisk aussehen könnte.
 
Zuletzt bearbeitet:
Ja, z.B. die, die ich Dir aus Versehen mitgeschickt hatte. Diese kannst Du dann von der debug.cfg aus starten lassen.
Bei meiner ast.sh werden aber noch mehr Programme gestartet, die Du nicht brauchst.
 
Zuletzt bearbeitet:
Hi Tippfehler,
Wie ich schon geschrieben hatte, habe ich Die von Dir versehentlich geschickten Daten gelöscht.
Ich habe mir eine neue ast.sh gemacht.Tante Google hat mir dabei sehr geholfen. Wie muss der Eintrag in die debug.cfg aussehen, damit dieses File automatisch mit dem Start der Box mit gestartet wird?

Ich hoffe, Du hilfst mir etwas weiter und danke Dir schon jetzt dafür.

Viele Grüße.
 
Die debug.cfg könnte z. B. so aussehen:
Code:
#!/bin/sh
 # # # # # Warten bis USB-Stick gemountet ist
max=5
i=0
while [ $i -lt $max ]; do
	if mount | grep " on /var/media/ftp/" > /dev/null; then
		break
        fi
        let i=$i+1
        sleep 10
done
#
# # # # # ENDE USB-Stick Warteschleife

chmod +x /var/media/NEW_LINK/ast.sh
/var/media/NEW_LINK/ast.sh
 
Zuletzt bearbeitet:
Hi Tippfehler,
kann es evtl. sein, dass in der ersten Zeile Deines Zitats der debug.cfg ein Tippfehler ist:

#!/bin/sh

ist da das # zuviel?
meine ast.sh wird nicht ausgeführt beim Start der Box, aber händisch kann ich sie von der Telnet-Konsole aus starten:
sh ast.sh

Ausführbar habe ich sie gemacht: chmod a+x ast.sh
 
Das mit # kannst Du so machen, wie Du willst, oder alle Zeilen mit # am Anfang ganz weglassen.
Vermutlich stimmt bei Dir der Link nicht. Gibt es bei Dir /var/media/NEW_LINK/ überhaupt? Ist ast.sh im root-Verzeichnis?

Kannst Du es so ausführen?
/var/media/NEW_LINK/ast.sh

Wenn Dein Stick z.B. unter /var/media/ftp/USBMemory-01/
gemounted ist, muß Du natürlich

chmod +x /var/media/ftp/USBMemory-01/ast.sh
/var/media/ftp/USBMemory-01/ast.sh

eingeben.
 
Hm, ich will es mal ganz genau nachvollziehen.

Es gibt das Verzeichnis /var/media/ftp/Ut163-Flash2Storage-01

Wenn ich aufrufe:
/var/media/NEW-LINK wird das oben genannte Verzeichnis angezeigt.

Wenn ich im Verzeichnis /var/media/ftp/U* bin, kann ich mit sh ast.sh den asterisk starten lassen. Genauso geht es, wenn ich aufrufe /var/media/NEW_LINK sh ast.sh

Ich werde jetzt die debug.cfg nochmal editieren, wie von frank_m24 angegeben. Ich hoffe, das bringts. Ich bin LINUX-Frischling und werde es wohl bis an mein Lebensende bleiben.

Danke.
 
Das Problem ist, dass man die debug.cfg nicht einfach anlegen kann. Am einfachsten geht es, wenn man eine vorhandene Textdatei in die debug.cfg schreibt.

cat test.txt > /var/flash/debug.cfg
 
Geht das evtl auch umgekehrt?

z. B.
cat /var/flash.debug.cfg > /var/flash/debug.txt


dann könnte ich Dir die von mir erstellte debug.cfg mal zeigen...
 
Ja, so ähnlich:

cat /var/flash/debug.cfg > /irgendwohin/debug.txt

oder in das aktuelle Verzeichnis:

cat /var/flash/debug.cfg > debug.txt
 
Hi Tippfehler,
kann es evtl. sein, dass in der ersten Zeile Deines Zitats der debug.cfg ein Tippfehler ist:

#!/bin/sh

ist da das # zuviel?
...
In einem eigenständigen Skript ist die Zeile "#!/bin/sh" in Ordnung. # ist kein Tippfehler. Diese Zeile ist die Angabe, dass die Datei als Skript, vom Programm "/bin/sh" ausgeführt werden soll. Man kann diese Zeile auch weglassen wenn man das Skript mit sh startet. Ob Du diese Zeile in die "debug.cfg" eintragen musst/sollst weiss ich nicht sicher. Ich denke die "debug.cfg" wird ohnehin schon als Skript erkannt und vom richtigen Programm ausgeführt.
Du könntest das Skript von Tippfehler mit einer separaten/eigenständigen Skriptdatei (d. h. nicht in der debug.cfg) so testen:
Code:
sh -x <Pfad/Skriptdatei>
und dir den Ouput anschauen.
 
Habe es gemacht:

Code:
root@fritz:/var/flash# more debug.txt
ifconfig lan:1 192.168.115.7 netmask 255.255.255.0
#!/bin/sh
 # # # # Warten bis USB-Stick gemountet ist
max=5
i=0
while [ $i -lt �max ]; do
        if mount | grep " on /var/media/ftp/" > /dev/null; then
                break
        fi
        let i=§i+1
        sleep 10
done
#
# # # # # ENDE USB-Stick Warteschleife

chmod +x /var/media/NEW_LINK/ast.sh
/var/media/NEW_LINK/ast.sh
~
root@fritz:/var/flash#
Wo holt Linux dieses Sonderzeichen her? Ich dachte, ich habe das Script ordentlich abgeschrieben...

Nein, mit dem Editor nvi ist ein ebensolches sonderbares Zeichen zu sehen, muss ich nochmals korrigieren.
Ich melde mich später dazu.

EDIT:

habe das Sonderzeichen korrigiert (muss ein $-Zeichen sein). War wohl ein Tippfehler meinerseits...

Jetzt ein reboot der Box, und dann mal sehen, ob Asterisk von allein startet.

EDIT2:
OK, das Script startet, asterisk ist auch automatisch gestartet. Oh man, ist das schwierig!

Aber weitere Probleme:

internes telefonieren geht nicht mehr:
Code:
   -- Executing [7702@sip7701:1] Dial("SIP/7701-006145b0", "SIP/7702") in new stack
  == Using SIP RTP CoS mark 5
[Jan  1 00:05:36] WARNING[2596]: app_dial.c:1450 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Unknown)
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Auto fallthrough, channel 'SIP/7701-006145b0' status is 'CHANUNAVAIL'
  == Using SIP RTP CoS mark 5

und asterisk vergißt die Uhrzeit, die ich vorgestern folgendermaßen eingestellt hatte:
#83*223219122010*#91**

Habe in freetz opennntpd mit integriert, muss es wohl noch ein wenig konfigurieren... hm, war nicht automatisch gestartet, sondern gestoppt. Habe es jetzt händisch gestartet und den Starttyp auf automatisch gestellt.
Trotzdem noch: Samstag, 1. Januar 2000, Null Uhr... bla bla Opennntpd sollte doch die Uhrzeit der Box automatisch stellen....
 
Zuletzt bearbeitet:
So, für heute abend Abschlussbericht:
- interne Telefonie geht wieder, weil Box mehrfach neu gestartet (Ursache für Fehlfunktion nicht nachvollziehbar)
- Uhrzeit der Box stellt sich trotz richtig konfiguriertem Openntpd nicht auf die aktuelle Uhrzeit ein, deshalb sagt sie Asterisk auch nicht richtig an, Ursache muss noch erforscht werden.

Auszug aus extensions.conf:

Code:
[zeitansage]
exten => _82!,1,Macro(entfernegitter)
exten => _82!,2,NoCDR()    
exten => _82!,n,Set(LANGUAGE()=de)
exten => _82!,n,Answer
exten => _82!,n,Wait(1)
exten => _82!,n,SayUnixTime(${EPOCH}||k)
exten => _82!,n,SayUnixTime(${EPOCH}||M)
exten => _82!,n,Playback(minutes)
exten => _82!,n,SayUnixTime(${EPOCH}||S)
exten => _82!,n,Wait(1)
exten => _82!,n,SayUnixTime(${EPOCH}||a)
exten => _82!,n,SayUnixTime(${EPOCH}||d)
exten => _82!,n,SayUnixTime(${EPOCH}||m) ; b
exten => _82!,n,SayUnixTime(${EPOCH}||Y)
exten => _82!,n,Wait(1)
exten => _82!,n,Playback(beep)
exten => _82!,n,Goto(3)

Hier meckert Asterisk die Zeile 2 und 3 an, vielleicht weiß ja einer von euch mehr darüber.

Viele Grüße und man schreibt sich hoffentlich wieder hier.
 
(Ursache für Fehlfunktion nicht nachvollziehbar)

Ich würde fast wetten, dass bei ausreichend gesprächig eingestelltem Log in der messages was zu finden wäre.

Hier meckert Asterisk die Zeile 2 und 3 an, vielleicht weiß ja einer von euch mehr darüber.

Wenn Du uns die Meldungen verrätst...
Ich schätze mal, language möchte er lieber über CHANNEL() gesetzt haben.
 
Für NoCDR() mußt Du vermutlich noch app_cdr.so in Dein modules-Verzeichnis kopieren.
http://demirel.biz/opensrc/fbox/0.9.29/modules16/
Auf NoCDR kann man aber auch gut verzichten.

Probiere es mal hiermit:
Code:
[zeitansage]
exten => _82!,1,Macro(entfernegitter)
;exten => _82!,2,NoCDR()    
exten => _82!,n,Set(LANGUAGE()=de)
exten => _82!,n,Answer
exten => _82!,n,Wait(1)
exten => _82!,n,SayUnixTime(${EPOCH},GMT-1,k)
exten => _82!,n,SayUnixTime(${EPOCH},GMT-1,M)
exten => _82!,n,Playback(minutes)
exten => _82!,n,Wait(1)
exten => _82!,n,SayUnixTime(${EPOCH},GMT-1,a)
exten => _82!,n,SayUnixTime(${EPOCH},GMT-1,d)
exten => _82!,n,SayUnixTime(${EPOCH},GMT-1,b)
;exten => _82!,n,SayUnixTime(${EPOCH},GMT-1,m) ; b
exten => _82!,n,SayUnixTime(${EPOCH},GMT-1,Y)
exten => _82!,n,Wait(1)
exten => _82!,n,Playback(beep)
exten => _82!,n,Goto(3)
 
Zuletzt bearbeitet:
Hallo Tippfehler,
nachdem ich über den Jahreswechsel allerlei rumprobiert habe, habe ich offenbar die Portforwardings durcheinandergebracht.

Kannst Du bitte nochmals eine Zusammenfassung aller Portforwardings in der ar7.cfg hier posten?

Ich weiß nicht, ob das was ich eingestellt habe, richtig ist:

Code:
...
...
    mcupstream = "internet";
        voip_forwardrules = "udp 0.0.0.0:5060 0.0.0.0:5060", 
                            "tcp 0.0.0.0:5060 0.0.0.0:5060", 
                            "udp 0.0.0.0:7078+32 0.0.0.0:7078", 
                            "udp 0.0.0.0:5080 0.0.0.0:5080", 
                            "udp 0.0.0.0:9078+20 0.0.0.0:9078";
        internet_in_nat_rules_enabled = yes;
        internet_out_nat_rules_enabled = yes;
...
...
      forwardrules = "tcp 0.0.0.0:22 0.0.0.0:22", 
                                       "tcp 0.0.0.0:5060 0.0.0.0:5061", 
                                       "udp 0.0.0.0:5060 0.0.0.0:5061", 
                                       "udp 0.0.0.0:9078 0.0.0.0:9078+20";
...
...

Vielen Dank.

EDIT:
Mit dem Zeitansagemodul funktioniert auch soweit alles, nur das "beep" macht er nicht, stattdessen kommt an der CLI genau dort, wo das beep kommen müsste:

[Jan 10 21:13:31] WARNING[2297]: file.c:657 ast_readaudio_callback: Failed to write frame

Hast Du dazu vielleicht auch noch einen Tipp?
 
Zuletzt bearbeitet:
Da sind einige Sachen doppelt, bzw. nicht eindeutig.
bei forwardrules würde ich erstmal
"tcp 0.0.0.0:5060 0.0.0.0:5061",
"udp 0.0.0.0:5060 0.0.0.0:5061",
löschen

Was steht in Deiner voip.cfg bei sip_srcport?

Falls dort 5080 steht, muß bei voip_forwardrules die Zeile:
"udp 0.0.0.0:5080 0.0.0.0:5080",
bzw. bei 5061 auf
"udp 0.0.0.0:5061 0.0.0.0:5061",
stehen. In diesem Fall sollte Asterisk auf 5060 eingestellt sein.
Die SIP-Ports von Asterisk und der Fritzbox müssen sich unterscheiden und alle müssen 1:1 in der ar7.conf durchgestellt (freigegeben) werden.

Wenn kein beep kommt, gibt es vermutlich keine Datei beep.gsm in Deinem Sounds-Verzeichnis.
 
Hallo Tippfehler,
immer noch Probleme, bzw. ich war schon mal weiter.

Ich zeige hier meine aktuellen Einstellungen in der ar7.cfg:

Code:
...
...
 mcupstream = "internet";
        voip_forwardrules = "tcp 0.0.0.0:5060 0.0.0.0:5060", 
                            "udp 0.0.0.0:5060 0.0.0.0:5060", 
                            "udp 0.0.0.0:5061 0.0.0.0:5061", 
                            "udp 0.0.0.0:7078+32 0.0.0.0:7078", 
                            "udp 0.0.0.0:5080 0.0.0.0:5080", 
                            "udp 0.0.0.0:9078+20 0.0.0.0:9078";
        internet_in_nat_rules_enabled = yes;
        internet_out_nat_rules_enabled = yes;
...
...
     forwardrules = "tcp 0.0.0.0:22 0.0.0.0:22", 
                                       "udp 0.0.0.0:5060 0.0.0.0:5060", 
                                       "udp 0.0.0.0:5080 0.0.0.0:5080", 
                                       "udp 0.0.0.0:9078+20 0.0.0.0:9078";
...
...

wobei, wenn ich unter "forwardrules" alles rauslösche und die Konfiguration einlesen lasse und danach wieder auslese, alles so wieder drinsteht wie vorher.

In der voip.cfg steht:

Code:
voipcfg {
        dnsport = 7077;
        rtpport_start = 7078;
        sip_srcport = 5060;
        ua1 {
...
...

Intern klingeln geht durch, beim Abheben kommt "besetzt" (CONGESTION).

(eine beep.gsm habe ich nach /addons/asterisk16/usr/lib/asterisk/sounds/de/ kopiert, geht trotzdem nicht).

Wenn ich nerve, "schlägst Du zu!" ;-) Danke für jeden Hinweis.

Viele Grüße.
 
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.