Freeswitch如何在Linux/Mac/Win创建用户以及批量创建用户

Song • 431次浏览 • 0个评论 • 2018-07-24 01:32:05

如何在FreeSWITCH中快速创建大量用户是在社区中经常遇到的一个问题。其实该问题解决起来并不难。我们 已经了解现有的用户配置文件是存放在FreeSWITCH安装目录的conf/directory/default目录下,每个用户对应一 个XML配置文件,如1000.xml包含了1000这个用户的配置文件。FreeSWITCH默认提供了1000~101920个用户,如 果要手工创建另外一个用户,如1020,我们只需以1000.xml为模板,将该文件中的内容复制到1020.xml,然后把 1020.xml文件中的所有出现1000的地方全部替换成1020即可。 当然,除了手工的复制和替换外,上述步骤可以在UNIX系统上的Shell中使用下列命令完成:

# sed -e "s/1000/1020/" 1000.xml > 1020.xml

seds命令将1000.xml文件中所有出现1000的 地方都替换成1020,然后将命令的输出重定向(大于号是Shell中的重定向操作符)到1020.xml文件中。 上述命令用于创建一个用户的情况,如果要创建一批用户怎么办呢?其实也很简单,我们只需要用一下Shell 中的for循环就可以了。比如我们要创建1020~103920个用户,具体的Shell命令如下:

# for i in `seq 1020 1039`; do sed -e "s/1000/$i/" 1000.xml > $i.xml ; done

在上述命令中,首先,seq命令会产生一个序列,两个参数分别是序列的起止点,如:

$ seq 1 3
1
2
3

有了这个序列以后,for循环就可以从该序列中依次取得每一个值,并将该值赋值给i这个变量。dodone之间是循环体,其中的内容就是我们前面的sed命令,只不过我们使用$i这个变量引用,它的值都是每次 循环时从序列中取得的。注意其中的分号也是有用的,它用于在同一行上隔开多个命令。详细的Shell语法我们就 不多讲了,总之用上述命令批量生成用户是很方便的。 另外,在Mac平台上,笔者发现竟然没有seq这个命令,只好自己用Ruby写了一个。下面的Ruby脚本与Linux上 的seq功能相似,同样,详细原理我们就不多解释了。

#!/usr/bin/env ruby
(ARGV[0].to_i .. ARGV[1].to_i).each { |x| puts x}

当然,好多读者也在使用Windows平台。但很遗憾的是,Windows上的Shell功能比较弱,也没有像sed之类的 工具,因此做起来不如在UNIX上方便。不过,也有人把经典的UNIX工具软件都移植到了Windows上,称为UnxUtils [3]。安装完UnxUtils后,就可以使用大部分的UNIX命令了。如我们可以使用如下“.bat”脚本完成同样的添加用 户的功能(将下列内容存到与1000.xml相同的目录下的扩展名为“.bat”的文件中,用鼠标双击即可执行):

for /L %%i in (1020, 1 1039) do sed -e "s/1000/%%i" 1000.xml > %%i.xml

除此之外,在FreeSWITCH源代码目录中的scripts/perl目录下也有一个add_user脚本,该脚本是用Perl写 的,也能完成类似的功能,具体命令如下:

# ./add_user 1020

上述命令将会把用户配置文件安装在默认的安装路径下面(使用默认的Domain——default)。当然,也可以 在命令行上改变Domain和安装路径,如下列命令可以将配置文件安装在/opt/freeswitch/conf目录中的 directory/my_domain目录下:

# ./add_user 1020 --domain=my_domain --confpath=/opt/freeswitch/conf

也可以使用“--users”参数指定批量创建的用户的范围,如:

# ./add_user --users=1020-1039

总之,如果不确定上述脚本的使用方法,最好先试验一下。比如,我们先创建一个新的目录用于测试:

# mkdir -p /tmp/directory/my_domain

然后使用下列命令可以看出它确实能创建指定的配置文件:

# ./add_user 1111 --users=1020-1039 --domain=my_domain --confpath=/tmp
Added 1020 in file /tmp/directory/my_domain/1020.xml
Added 1021 in file /tmp/directory/my_domain/1021.xml
Added 1022 in file /tmp/directory/my_domain/1022.xml
Added ...

需要注意的是,add_user脚本创建的用户配置文件不是以1000.xml为模板的,而是内置在脚本中,因此,如 果需要创建的用户与add_user脚本中的模板内容不同,需要事先更改脚本中的内容。 总之,不管使用什么方法,创建完用户配置文件后就可以在FreeSWITCH中使用reloadxml命令使之生效了。在 配置生效后,使用这些用户进行注册和呼出操作都没有问题,如果这些用户也需要被叫,那就需要修改 Dialplan,增加到这部分用户的路由。比如,我们增加了1020~103920个用户后,可以简单地将默认的 Dialplan中的正则表达式"^(10[01][0-9])$"改为"^(10[0-3][0-9])$",这样就可以包含我们新创建的用户 了。更改后的部分内容如下:

<extension name="Local_Extension">
<condition field="destination_number" expression="^(10[0-3][0-9])$">

总之,讲起来可能比较啰嗦,但实际使用起来还是挺简单的,读者不妨自己练习一下。

本文参考:freeswitch权威指南,大家可以在京东购买全书

提交评论
要回复文章请先登录注册
用户评论
  • 没有评论
    公告
    中国晚上好,随时随地分享前沿科技,好吃好玩,有趣有料的新鲜事;本站可以分享资源,技术,观点,态度;同时希望大家做一个文明的分享者!
    广告
    pytorch中文网