Skript: "reload" bei IP-Wechsel

Jo, SYSLOG=1, wie im Auslieferungszustand. Bei der syslog.conf ist es ebenso:
Code:
#  /etc/syslog.conf	Configuration file for syslogd.
#
#			For more information see syslog.conf(5)
#			manpage.

#
# First some standard logfiles.  Log by facility.
#

auth,authpriv.*			/var/log/auth.log
*.*;auth,authpriv.none		-/var/log/syslog
#cron.*				/var/log/cron.log
daemon.*			-/var/log/daemon.log
kern.*				-/var/log/kern.log
lpr.*				-/var/log/lpr.log
mail.*				-/var/log/mail.log
user.*				-/var/log/user.log
uucp.*				/var/log/uucp.log

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info			-/var/log/mail.info
mail.warn			-/var/log/mail.warn
mail.err			/var/log/mail.err

# Logging for INN news system
#
news.crit			/var/log/news/news.crit
news.err			/var/log/news/news.err
news.notice			-/var/log/news/news.notice

#
# Some `catch-all' logfiles.
#
*.=debug;\
	auth,authpriv.none;\
	news.none;mail.none	-/var/log/debug
*.=info;*.=notice;*.=warn;\
	auth,authpriv.none;\
	cron,daemon.none;\
	mail,news.none		-/var/log/messages

#
# Emergencies are sent to everybody logged in.
#
*.emerg				*

#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;\
#	news.=crit;news.=err;news.=notice;\
#	*.=debug;*.=info;\
#	*.=notice;*.=warn	/dev/tty8

# The named pipe /dev/xconsole is for the `xconsole' utility.  To use it,
# you must invoke `xconsole' with the `-file' option:
# 
#    $ xconsole -file /dev/xconsole [...]
#
# NOTE: adjust the list below, or you'll go crazy if you have a reasonably
#      busy site..
#
daemon.*;mail.*;\
	news.crit;news.err;news.notice;\
	*.=debug;*.=info;\
	*.=notice;*.=warn	|/dev/xconsole
 
otaku42 schrieb:
Such' mal in der Datei /var/log/syslog nach "astipwatch" bzw. (falls geaendert) dem, was Du bei SYSLOG_TAG eingetragen hast. Hier lokal funktioniert es jedenfalls einwandfrei.

Steht nix davin drin. Egal, solange das Script läuft.
 
Da Du ein Debian-System hast, sollte auch logger verfuegbar sein... hmm... muss mir bei Gelegenheit nochmal das Skript ansehen, vielleicht habe ich irgendwo einen Fehler uebersehen. Welchen Workmode hast Du eingestellt?
 
otaku42 schrieb:
Da Du ein Debian-System hast, sollte auch logger verfuegbar sein... hmm... muss mir bei Gelegenheit nochmal das Skript ansehen, vielleicht habe ich irgendwo einen Fehler uebersehen. Welchen Workmode hast Du eingestellt?

Vermute, daß du den Runlevel meinst. Der ist wohl 2. Logger ist da. Hab ich schon getestet.
 
@ otaku42
Sag mal, kann ich das Script eigentlich auch in dein Start-Script mit einbauen?

Oder wie macht ihr anderen das?
 
otaku42 schrieb:
Du kannst das schon kombinieren, ja. Muss ich mir nochmal genauer ansehen, und dann poste ich eine geaenderte Fassung von Startskript und obigem Teil.

Bist du schon weiter gekommen?

Ich habe ingendwie zu wenig Ahnung um es selbst zu ändern...
 
Nein, noch nicht wirklich. Bei mir scheitert es momentan an der noetigen Zeit - die reicht schon kaum noch fuer die Moderation :( Vielleicht schaffe ich es morgen irgendwann, ein paar Minuten abzuzwacken - ich kann es aber nicht versprechen (auch wenn die Aufgabe eigentlich trivial ist).
 
Das ist ja alles schön und gut, aber ist es nicht am einfachsten/effizientesten, wenn man einfach einen Reload beim dial-up auslöst? Also /etc/ppp/ip-up ?
Dann hat man genau den Zeitpunkt erwischt, wo man ne neue IP bekommt und muss nicht immer prüfen.
 
streawkceur schrieb:
Das ist ja alles schön und gut, aber ist es nicht am einfachsten/effizientesten, wenn man einfach einen Reload beim dial-up auslöst? Also /etc/ppp/ip-up ?
Dann hat man genau den Zeitpunkt erwischt, wo man ne neue IP bekommt und muss nicht immer prüfen.

Die Lösung wurde auch schon besprochen. Da aber viele hier ihren Asterisk hinter einem Router betreiben, nützt dieser Ansatz den meisten nicht.
 
So, hab mal ein paar von Mikes Ideen aufgegriffen und ein Perl-Skript geschrieben, was im Grunde das Gleiche macht, nur ein wenig anders:

Das Skript ist in der Lage die Informationen von der Router-Status-Page auszulesen (wenn der Router denn soetwas hat). Ein Ip-Abgleich über das Web ist aber immernoch möglich (obwohl es dafür eigentlich nicht vorgesehen war :)).
Zusätzlich überprüft das Skript noch (mittels nslookup) ob die dyndns-Adresse schon mit der neuen Ip in einklang gebracht wurde, und läd erst dann Asterisk neu (wenn dyndns, oder was auch immer, mal ein wenig länger benötigen).
Im Moment ist das Skript noch für den Duerbetrieb ausgelegt, es wird aber (wenn die Zeit reicht) auch noch irgendwann einmal eine Version mit cron-Unterstützung geben.
Neben nslookup (aus dem dnsutils-Paket) sind also noch (wie bei Mikes Skript auch) wget oder lynx erforderlich.
 

Anhänge

  • astpreload.zip
    2 KB · Aufrufe: 47
Hi Hupe,

Ich hab absolut keine Ahnung von Perl... und wie sollte es anders sein, wenn ich das Script starten will, dann kommt eine Fehlermeldung:

Bareword "true" not allowed while "strict subs" in use at ./astpreload.pl line 151.
Execution of ./astpreload.pl aborted due to compilation errors.
debianserver:/etc/asterisk#

Was much ich machen, damit das Script läuft?

Gruss Holg
 
Hast Du die Perl-Datei ausführbar gemacht? Dazu einfach (wenn im gleichen Verzeichnis):
chmod +x astpreload.pl
eingeben.
Die Meldung:
Bareword "true" not allowed while "strict subs" in use at ./astpreload.pl line 151.
wird dann zwar imernoch kommen, sie ist aber nicht tragisch. Ansonsten läuft das Skript bei mir normal über zwei wochen absolut einwandfrei.
 
Und wie kann ich das Teil im Hintergrund laufen lassen.
Ich meld mich immer nur über ssh an. Und sobald
ich das Script ausführe und dann die Session schließe ist das Script ned mehr im Speicher.

Hab das Problem übrigens einfach damit umgangen, dass ich anstatt true eine 1 gesetzt habe.

Gruß
Holg
 
Hab's glaub ich selbst rausgefunden. Mit

nohup scriptname &

scheint es ganz gut zu funktionieren

Gruss
Holg
 
Wie es scheint ist ein Reload-Skript ab der aktuellen Version von Asterisk (CVS 28 Dez 2004 22:20:18 CET) nichtmehr nötig:

Eintrag für die sip.conf:
Code:
;externhost=foo.dyndns.net        ; Alternatively you can specify an
  	                                ; external host, and Asterisk will
  	                                ; perform DNS queries periodically.  Not
  	                                ; recommended for production
  	                                ; environments!  Use externip instead
;externrefresh=10              ; How often to refresh externhost if
  	                                ; used
Ob es funz kann ich aber (noch)nicht sagen.
 
Hallo,

ich möchte an dieser Stelle meine Lösung zum Thema vorstellen, die ohne dynDNS auskommt, weil sie vielleicht dem ein oder anderen hilfreich ist.

Mein Setup:

Kabelmodem <---> Azacall200 (1.Router; lokaler SIP-Adapter) <---> 486-PC (2. Router: 1x WAN, 2x LAN; Asteriskserver) <---> LAN


1.) ping -Rn <Kabelmodem-LAN-IP>

'ping -Rn <Kabelmodem-LAN-IP>' auf dem 486-er PC liefert in der zweiten Zeile meine momentane externe IP, die dem Azacall 200 zugeteilt wurde. Mit der <Kabelmodem-LAN-IP> erreiche ich das Webinterface zur Konfiguration des Kabelmodems.


2.) Ich benötige keine Kenntnis der externen IP in Asterisk, wenn ich 'externip=' in sip.conf auf die lokale IP einer Ethernetkarte an der LAN-Seite des 486-er setze. Für beide Ethernetkarten an der LAN-Seite habe ich Source-NAT routing zum WAN-port des 486-er aktiviert. Beim Neustart muß ich ab und zu im CLI von Asterisk ein 'reload' Kommando geben um von außen anrufbar zu sein.

Grüße,

Christian
 
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.