[asterisk-users] How to set externip in sip.conf automatically?
Larry Alkoff
labradley at mindspring.com
Wed Aug 23 14:14:30 MST 2006
John Marvin wrote:
> Larry Alkoff wrote:
>> As stated in the original post, when I entter the IP with an editor
>> directly into sip.conf calls work just fine but I am looking for a way
>> to have that done _automatically_.
>>
>> The Asterisk - Future of Telephony book says it is possible for
>> Asterisk to access a Linux environment variable containing the IP
>> information in the form of "${ENV{variable}}.
>>
>> It doesn't seem to work. I am asking how to make it work.
>>
>
> Actually, I don't think you read his response carefully enough. He was
> giving you a method of doing it automatically.
>
> But first, lets dismiss the environment variable solution. I haven't
> played with using environment variables in Asterisk, so I can't help you
> there. But I do know about environment variables in general, and you
> cannot use them to solve your problem. Environment variables are not
> "global", i.e. if you change one it does not effect the value in all
> currently running programs. The "environment" (all of the environment
> variables and their values) is inherited from the parent process (it is
> passed in by the kernel on the new processes stack when the process
> first starts). After that, only the process itself can change its own
> values in order to pass on a changed value to a child (but again, only
> when that child process is started, i.e. a parent cannot affect the
> environment of an already running child process). In summary, you can't
> change the values of Asterisk's environment variables after Asterisk has
> already started. The values that Asterisk sees are the values that it
> inherited from its parent process, i.e. most likely the rc scripts that
> started Asterisk when you first booted the machine.
>
> Now, back to the solution proposed by Brad. He was in effect proposing
> that you dynamically change sip.conf. However, parsing a rewriting
> sip.conf automatically is kind of ugly, but luckily Asterisk supports
> #include. So, he suggested that you can periodically generate a file
> with a single line in it, i.e. "externip=xx.xx.xx.xx" and then use
> #include in your sip.conf to include it (i.e. sip.conf doesn't have to
> ever change). The final part of the solution is to make Asterisk reread
> sip.conf (and the included dynamically created file at the same time).
> You can do that with:
>
> asterisk -rx "sip reload"
>
> which you can put into the same cron job that you currently are using to
> refresh /etc/myip.
>
> John
John you are quite correct about Brad's solution and I have to thank you
both. I thought again about Brad's post last night in bed - where I do
my best work <g>.
The #include route is indeed a way to go.
In the meantime, I've found more about externhost which was implemented
in Asterisk 1.20+.
I put a line in sip.conf of
externhost=myhost.dyndns.org
with a refresh of 6 hours against the default of 10 seconds ala
externrefresh=21600
This seems to be working nicely but, if there are problems, I'll change
to #include.
You are also correct that environmental variables will not refresh until
the Asterisk shell is reloaded - hopefully not often!
It would still be nice to be able to access shell variables from within
the CLI and particularly frustrating since the "Asterisk - Future of
Telephony" mentions a specific method on page 92. Perhaps they got the
syntax wrong. I certainly would like a better connection between the
shell and CLI.
Thanks for your explanation and I apologize for not realizing that
Brad's suggestion was spot on.
Larry
--
Larry Alkoff N2LA - Austin TX
Using Thunderbird on Linux
More information about the asterisk-users
mailing list