Asterisk配置文件

声明:本文由本人翻译自Asterisk wiki,如有不妥欢迎指正。

原文地址:https://wiki.asterisk.org/wiki/display/AST/Asterisk+Configuration+Files

1. Asterisk配置文件介绍

这一部分,我们将向您介绍Asterisk配置文件以及如何使用一些高级功能。

2. 配置文件格式

Asterisk是一个非常灵活的电话系统引擎,同时也因此有点复杂。Asterisk具备相当多的配置文件几乎可以控制系统运行的每个细节。配置文件的格式非常简单。Asterisk的配置文件都是纯文本文件,可以使用任何文本编辑器来编辑。

2.1 段和设置

配置文件由各种段组成,段名用中括号括起来。段名不能包含空格,并且区分大小写。在每一段中,你可以指定各种配置参数的值。通常,一个段中的配置参数与其它段中同名的参数的是相互独立的。有些参数的值是真或假 ,有些参数的值则有更具体的设置。给一个参数赋值的语法是参数名,等号,值,如下所示:

[section-name]
setting=true

[another_section]
setting=false
setting2=true

2.2 对象

有些Asterisk配置文件还可以创建对象,其语法和参数赋值略有不同。如果需要创建一个对象,你需要指定对象的类型,一个等于号和一个大于号(=>),然后是对象的配置参数。

[section-name]
some_object => settings

小贴士:被对象的语法迷惑了?

为了让初学者更容易上手Asterisk的配置文件,Asterisk的开发者也允许使用等于号来创建对象。因此,以下两行是等效的:

some_object => settings
some_object=settings

以上两种语法格式都很常见,尤其在网上的Asterisk文档和示例中。但是,在本文档中,我们表示对象时,用箭头来代替等于号。

[section-name]
label1=value1
label2=value2
object1 => name1

label1=value0
label3=value3
object2 => name2

在上面的例子中,对象object1同时继承了label1和label2。重点需要指出的是,对象object2也在继承label1(被新值value0覆盖)和label3的同时,继承label2。

总之,对象继承本段中所有它之前的配置参数,并且后面的配置覆盖前面的配置。

3. 注释

我们可以(也经常这样做)给Asterisk配置文件添加注释。注释可以使配置文件更加易读,也可以被用来暂时禁用某些设置。

3.1 单行注释

单行注释以分号(;)开始,Asterisk配置解析器把分号之后的所有内容作为注释。我们把前面的一个例子做如下扩展:

[section-name]
setting=true

[another_section]
setting=false ; this is a comment
; this entire line is a comment
;awesome=true
; the semicolon on the line above makes it a
; comment, disabling the setting

3.2 注释块

Asterisk也允许我们创建注释块。一个注释块从一行注释开始,并持续几行。注释块以如下的字符序列开始:

;--

然后可以持续跨越多行,直到遇到如下的字符序列后就立即结束:

--;

如下面的例子:

[section-name]
setting=true
;-- this is a block comment that begins on this line
and continues across multiple lines, until we
get to here --;

4. 使用包含和执行结构

在配置文件内,我们还可以使用另外两种结构,分别是#include(包含)和#exec(执行)。

#include结构让Asterisk读取另外一个配置文件中的内容,并且把它作为写在当前配置文件中的内容一样执行。语法为#include filename,其中filename为你需要包含的文件名。这种结构经常被用于拆分一个较大的配置文 件为几个较小的配置文件,这样使得配置文件更易于管理。

#exec结构则更进一步,它允许你执行一个外部程序,并且把这个外部程序的执行结果写到当前的配置文件中。语法为#exec program,其中program为你希望执行的程序名。

贴士:启用#exec功能

由于#exec结构无论在性能和安全性方面都存在一定风险,因此默认是不启用的。如果需要启用该功能,则在asterisk.conf配置文件(默认路径在/etc/asterisk下)中找到[options]段,设置execincludes=yes。默认情况下 ,[options]段标题和execincludes=yes选项都是被注释掉的,你可以直接删除这两行开头的分号。

下面让我们看看这两种结构的例子:

[section-name]
setting=true
#include otherconfig.conf ; include another configuration file
#exec otherprogram ; include output of otherprogram

5. 添加内容到现有的段

如果你希望在一个配置文件中,向已经存在的段中添加配置(在文件中后面的位置或使用#include和#exec结构),可以在段标题后添加一个带小括号的加号来实现,如下:

[section-name]
setting1=value1

[section-name](+)
setting2=value2

上述例子为在配置文件中,向已经存在的段中增加了一个setting2配置参数。

6. 模版

在大多数Asterisk配置文件中,我们可以使用的另外一种结构就是模版。模版也是配置文件中的一个段,这个段仅仅是一个创建其它段的基础(或者模版,顾名思义)

6.1 模版的语法

定义一个段为模版需要在段标题后添加一个放在小括号里的叹号,如下面的例子:

[template-name](!)
setting=value

6.2 使用模版

使用模版来创建一个新段很简单,只要把模版名写在小括号中并放在段名后即可,如果需要继承多个模版,则使用逗号分隔模版名,如下面的例子:

[template-name](!)
setting=value

[template-2](!)
setting2=value2

[section-name](template-name,template-2)
setting3=value3

新创建的段将继承模版中定义的所有值和对象,以及所有在新段中新定义的配置参数和对象。新段中定义的配置参数和对象将覆盖模版中定义的同名配置参数和对象。参考如下例子:

[test-one](!)
permit=192.168.0.2
host=alpha.example.com
deny=192.168.0.1

[test-two](!)
permit=192.168.1.2
host=bravo.example.com
deny=192.168.1.1

[test-three](test-one,test-two)
permit=192.168.3.1
host=charlie.example.com

上述例子中[test-three]段的执行效果与下面的例子是一样的:

[test-three]
permit=192.168.0.2
host=alpha.example.com
deny=192.168.0.1
permit=192.168.1.2
host=bravo.example.com
deny=192.168.1.1
permit=192.168.3.1
host=charlie.example.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值