一键生成 FreeSWITCH 用户配置,让 SIP 号码快速在 Linphone 上注册使用
🎯 前言
在使用 FreeSWITCH 搭建 VoIP 系统时,经常需要为大量用户创建 SIP 账号配置。手动编写 XML 配置文件不仅繁琐,还容易出错。本文提供了一个 自动化 Python 脚本,可以:
- ✨ 一键创建单个或批量 SIP 用户
- 🚀 自动生成符合 FreeSWITCH 规范的 XML 配置
- 🔄 自动重载配置,无需重启服务
- 📱 直接使用,号码立即可在 Linphone 等客户端注册
无论你是 FreeSWITCH 新手还是运维人员,这个脚本都能大幅提升你的工作效率!
📖 目录
功能介绍
本脚本用于自动化创建 FreeSWITCH SIP 用户配置,让号码可以快速在 Linphone 或其他 SIP 客户端上注册使用。
主要功能
✅ 自动生成符合 FreeSWITCH 规范的 XML 配置文件
✅ 支持单个号码或批量号码创建
✅ 支持号码范围批量生成(如 1000-1050)
✅ 自动重载 FreeSWITCH 配置(无需手动重启)
✅ 显示 Linphone 注册信息
✅ 防止配置覆盖(有确认提示)
工作原理
整体流程图
用户输入号码和密码
↓
生成 XML 配置文件
↓
保存到 directory/default/ 目录
↓
执行 fs_cli -x 'reloadxml'
↓
FreeSWITCH 加载新用户配置
↓
Linphone 客户端可以注册该号码
配置文件结构说明
<include>
<user id="1000"> <!-- 用户号码/ID -->
<params>
<param name="password" value="123456"/> <!-- SIP 认证密码 -->
<param name="vm-password" value="1000"/> <!-- 语音信箱密码 -->
</params>
<variables>
<!-- 允许的呼叫类型 -->
<variable name="toll_allow" value="domestic,international,local"/>
<!-- 账户代码 -->
<variable name="accountcode" value="1000"/>
<!-- 用户上下文(拨号计划) -->
<variable name="user_context" value="default"/>
<!-- 显示的来电名称和号码 -->
<variable name="effective_caller_id_name" value="Extension 1000"/>
<variable name="effective_caller_id_number" value="1000"/>
<!-- 外呼显示的名称和号码 -->
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<!-- 呼叫组 -->
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>
关键参数说明
| 参数 | 说明 | 示例值 |
|---|---|---|
id | 用户号码,也是 SIP 用户名 | 1000 |
password | SIP 注册认证密码 | 123456 |
vm-password | 语音信箱密码 | 1000 |
user_context | 用户所属拨号计划上下文 | default |
effective_caller_id_number | 呼入时显示的号码 | 1000 |
toll_allow | 允许的呼叫类型 | domestic,international,local |
环境要求
系统要求
- 操作系统:Linux(Debian/Ubuntu/CentOS 等)
- Python 版本:Python 3.6+
- FreeSWITCH:已安装并运行中
权限要求
- 需要有写入 FreeSWITCH 配置目录的权限(通常需要 sudo)
- 需要能够执行
fs_cli命令(如果需要自动重载)
检查环境
# 检查 Python 版本
python3 --version
# 检查 FreeSWITCH 是否运行
systemctl status freeswitch
# 或
service freeswitch status
# 检查 fs_cli 是否可用
which fs_cli
fs_cli -x "status"
# 检查配置目录是否存在
ls -la /usr/local/freeswitch/conf/directory/default/
完整脚本代码
install_freeswitch_user.py
直接复制以下完整代码,保存为 install_freeswitch_user.py:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
FreeSWITCH 用户号码自动注册脚本
功能:
1. 自动生成 FreeSWITCH 用户配置文件
2. 支持单个号码或批量号码注册
3. 自动重载 FreeSWITCH 配置
使用方法:
python3 install_freeswitch_user.py --number 1000 --password 123456
python3 install_freeswitch_user.py --numbers 1000,1001,1002 --password 123456
python3 install_freeswitch_user.py --range 1000-1010 --password 123456
"""
import os
import sys
import argparse
import subprocess
from pathlib import Path
class FreeSwitchUserManager:
"""FreeSWITCH 用户管理器"""
def __init__(self, config_dir="/usr/local/freeswitch/conf/directory/default"):
self.config_dir = config_dir
def generate_user_xml(self, user_id, password):
"""
生成用户配置 XML 内容
Args:
user_id: 用户号码
password: 认证密码
Returns:
str: XML 配置内容
"""
xml_template = f"""<include>
<user id="{user_id}">
<params>
<param name="password" value="{password}"/>
<param name="vm-password" value="{user_id}"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local"/>
<variable name="accountcode" value="{user_id}"/>
<variable name="user_context" value="default"/>
<variable name="effective_caller_id_name" value="Extension {user_id}"/>
<variable name="effective_caller_id_number" value="{user_id}"/>
<variable name="outbound_caller_id_name" value="${{{{outbound_caller_name}}}}"/>
<variable name="outbound_caller_id_number" value="${{{{outbound_caller_id}}}}"/>
<variable name="callgroup" value="techsupport"/>
</variables>
</user>
</include>"""
return xml_template
def create_user_file(self, user_id, password):
"""
创建用户配置文件
Args:
user_id: 用户号码
password: 认证密码
Returns:
bool: 是否创建成功
"""
try:
# 确保配置目录存在
os.makedirs(self.config_dir, exist_ok=True)
# 生成配置文件路径
file_path = os.path.join(self.config_dir, f"{user_id}.xml")
# 检查文件是否已存在
if os.path.exists(file_path):
print(f"⚠️ 警告: 用户 {user_id} 的配置文件已存在: {file_path}")
response = input("是否覆盖?(y/n): ").strip().lower()
if response != 'y':
print(f"❌ 跳过用户 {user_id}")
return False
# 生成并写入配置内容
xml_content = self.generate_user_xml(user_id, password)
with open(file_path, 'w', encoding='utf-8') as f:
f.write(xml_content)
print(f"✅ 成功创建用户配置: {file_path}")
return True
except PermissionError:
print(f"❌ 错误: 没有权限写入 {self.config_dir}")
print("💡 提示: 请使用 sudo 运行此脚本")
return False
except Exception as e:
print(f"❌ 错误: 创建用户 {user_id} 失败: {e}")
return False
def reload_freeswitch(self):
"""
重载 FreeSWITCH 配置
Returns:
bool: 是否重载成功
"""
try:
print("\n🔄 正在重载 FreeSWITCH 配置...")
# 尝试使用 fs_cli 重载配置
result = subprocess.run(
['fs_cli', '-x', 'reloadxml'],
capture_output=True,
text=True,
timeout=10
)
if result.returncode == 0:
print("✅ FreeSWITCH 配置重载成功")
return True
else:
print(f"⚠️ FreeSWITCH 配置重载失败: {result.stderr}")
print("💡 请手动执行: fs_cli -x 'reloadxml'")
return False
except FileNotFoundError:
print("⚠️ 未找到 fs_cli 命令")
print("💡 请手动执行: fs_cli -x 'reloadxml'")
return False
except subprocess.TimeoutExpired:
print("⚠️ FreeSWITCH 重载超时")
return False
except Exception as e:
print(f"⚠️ 重载配置时出错: {e}")
print("💡 请手动执行: fs_cli -x 'reloadxml'")
return False
def batch_create_users(self, user_ids, password):
"""
批量创建用户
Args:
user_ids: 用户号码列表
password: 统一密码
Returns:
tuple: (成功数量, 失败数量)
"""
success_count = 0
fail_count = 0
print(f"\n📝 开始批量创建 {len(user_ids)} 个用户...")
print("=" * 60)
for user_id in user_ids:
if self.create_user_file(user_id, password):
success_count += 1
else:
fail_count += 1
print("=" * 60)
print(f"\n📊 创建完成: 成功 {success_count} 个, 失败 {fail_count} 个")
return success_count, fail_count
def show_registration_info(self, user_ids, password, domain="your.server.ip"):
"""
显示 Linphone 注册信息
Args:
user_ids: 用户号码列表
password: 密码
domain: FreeSWITCH 服务器域名或 IP
"""
print("\n" + "=" * 60)
print("📱 Linphone 注册信息")
print("=" * 60)
for user_id in user_ids:
print(f"\n用户号码: {user_id}")
print(f" - SIP 地址: {user_id}@{domain}")
print(f" - 用户名: {user_id}")
print(f" - 密码: {password}")
print(f" - 域: {domain}")
print(f" - 传输: UDP/TCP/TLS (默认 UDP:5060)")
print("\n" + "=" * 60)
print("💡 提示:")
print(" 1. 请将 'your.server.ip' 替换为你的 FreeSWITCH 服务器 IP 地址")
print(" 2. 在 Linphone 中添加 SIP 账户时使用上述信息")
print(" 3. 确保防火墙开放 5060(SIP) 和 RTP 端口范围")
print("=" * 60)
def parse_number_range(range_str):
"""
解析号码范围字符串
Args:
range_str: 范围字符串,如 "1000-1010"
Returns:
list: 号码列表
"""
try:
start, end = map(int, range_str.split('-'))
if start > end:
raise ValueError("起始号码不能大于结束号码")
return [str(i) for i in range(start, end + 1)]
except Exception as e:
raise ValueError(f"无效的号码范围格式: {range_str}, 错误: {e}")
def main():
"""主函数"""
parser = argparse.ArgumentParser(
description='FreeSWITCH 用户号码自动注册脚本',
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
使用示例:
# 创建单个用户
python3 install_freeswitch_user.py --number 1000 --password 123456
# 批量创建多个用户(逗号分隔)
python3 install_freeswitch_user.py --numbers 1000,1001,1002 --password 123456
# 批量创建号码范围
python3 install_freeswitch_user.py --range 1000-1010 --password 123456
# 指定配置目录
python3 install_freeswitch_user.py --number 1000 --password 123456 --config-dir /etc/freeswitch/directory/default
# 创建后不自动重载
python3 install_freeswitch_user.py --number 1000 --password 123456 --no-reload
"""
)
# 号码参数组(三选一)
number_group = parser.add_mutually_exclusive_group(required=True)
number_group.add_argument(
'--number',
type=str,
help='单个用户号码,如: 1000'
)
number_group.add_argument(
'--numbers',
type=str,
help='多个用户号码(逗号分隔),如: 1000,1001,1002'
)
number_group.add_argument(
'--range',
type=str,
help='号码范围,如: 1000-1010'
)
# 其他参数
parser.add_argument(
'--password',
type=str,
required=True,
help='用户密码(所有用户使用相同密码)'
)
parser.add_argument(
'--config-dir',
type=str,
default='/usr/local/freeswitch/conf/directory/default',
help='FreeSWITCH 配置目录路径(默认: /usr/local/freeswitch/conf/directory/default)'
)
parser.add_argument(
'--domain',
type=str,
default='your.server.ip',
help='FreeSWITCH 服务器域名或 IP 地址'
)
parser.add_argument(
'--no-reload',
action='store_true',
help='创建配置后不自动重载 FreeSWITCH'
)
args = parser.parse_args()
# 解析用户号码列表
user_ids = []
if args.number:
user_ids = [args.number]
elif args.numbers:
user_ids = [n.strip() for n in args.numbers.split(',')]
elif args.range:
try:
user_ids = parse_number_range(args.range)
except ValueError as e:
print(f"❌ 错误: {e}")
sys.exit(1)
# 创建管理器实例
manager = FreeSwitchUserManager(config_dir=args.config_dir)
# 显示配置信息
print("\n" + "=" * 60)
print("🚀 FreeSWITCH 用户自动注册工具")
print("=" * 60)
print(f"📂 配置目录: {args.config_dir}")
print(f"🔢 用户数量: {len(user_ids)}")
print(f"📋 用户列表: {', '.join(user_ids)}")
print(f"🔐 统一密码: {args.password}")
print("=" * 60)
# 批量创建用户
success_count, fail_count = manager.batch_create_users(user_ids, args.password)
# 重载配置
if not args.no_reload and success_count > 0:
manager.reload_freeswitch()
# 显示注册信息
if success_count > 0:
manager.show_registration_info(user_ids, args.password, args.domain)
# 返回退出码
sys.exit(0 if fail_count == 0 else 1)
if __name__ == '__main__':
main()
快速开始
1. 创建脚本文件
# 创建脚本文件
nano install_freeswitch_user.py
# 将上面的完整代码复制进去,保存退出
2. 添加执行权限
chmod +x install_freeswitch_user.py
3. 创建第一个用户
sudo python3 install_freeswitch_user.py --number 1000 --password 123456
4. 查看生成的配置文件
cat /usr/local/freeswitch/conf/directory/default/1000.xml
使用示例
示例 1:创建单个用户
sudo python3 install_freeswitch_user.py --number 1000 --password mypassword123
输出示例:
============================================================
🚀 FreeSWITCH 用户自动注册工具
============================================================
📂 配置目录: /usr/local/freeswitch/conf/directory/default
🔢 用户数量: 1
📋 用户列表: 1000
🔐 统一密码: mypassword123
============================================================
📝 开始批量创建 1 个用户...
============================================================
✅ 成功创建用户配置: /usr/local/freeswitch/conf/directory/default/1000.xml
============================================================
📊 创建完成: 成功 1 个, 失败 0 个
🔄 正在重载 FreeSWITCH 配置...
✅ FreeSWITCH 配置重载成功
示例 2:批量创建多个用户(逗号分隔)
sudo python3 install_freeswitch_user.py \
--numbers 1000,1001,1002,1003 \
--password 123456
示例 3:批量创建号码范围
# 创建从 1000 到 1050 共 51 个号码
sudo python3 install_freeswitch_user.py \
--range 1000-1050 \
--password strongpass123
示例 4:指定自定义配置目录
sudo python3 install_freeswitch_user.py \
--number 2000 \
--password pass123 \
--config-dir /etc/freeswitch/directory/default
示例 5:创建用户但不自动重载
# 如果要批量创建很多用户,可以最后手动重载一次
sudo python3 install_freeswitch_user.py \
--range 1000-1100 \
--password 123456 \
--no-reload
# 创建完成后手动重载
fs_cli -x "reloadxml"
示例 6:指定服务器域名
sudo python3 install_freeswitch_user.py \
--number 1000 \
--password 123456 \
--domain 192.168.1.100
Linphone 配置
在 Linphone 中注册号码
方式一:使用向导(推荐新手)
- 打开 Linphone,点击 "设置" → "添加账户"
- 选择 "使用 SIP 账户"
- 填写以下信息:
- 用户名:
1000 - 密码:
123456(你设置的密码) - 域:
192.168.1.100(你的 FreeSWITCH 服务器 IP) - 传输方式:
UDP(默认)
- 用户名:
方式二:手动配置
- 打开 Linphone 设置
- 找到 "账户" → "添加"
- 填写完整信息:
SIP 身份: sip:1000@192.168.1.100
SIP 服务器地址: sip:192.168.1.100:5060
传输方式: UDP
用户名: 1000
密码: 123456
方式三:使用配置文件(批量配置)
# Linphone 配置文件示例
[sip_account_1]
reg_identity=sip:1000@192.168.1.100
reg_proxy=<sip:192.168.1.100:5060>
realm=192.168.1.100
username=1000
password=123456
验证注册状态
在 Linphone 中查看
- 打开 Linphone
- 查看状态栏,应显示 "已注册" 或绿色图标
在 FreeSWITCH 中查看
# 查看所有注册用户
fs_cli -x "show registrations"
# 查看特定用户状态
fs_cli -x "sofia status profile internal reg 1000"
# 查看 SIP 详细信息
fs_cli -x "sofia status"
常见问题
Q1: 提示 "没有权限写入配置目录"
解决方法:
# 使用 sudo 运行
sudo python3 install_freeswitch_user.py --number 1000 --password 123456
# 或者修改目录权限(不推荐)
sudo chmod 755 /usr/local/freeswitch/conf/directory/default/
Q2: 提示 "未找到 fs_cli 命令"
原因: fs_cli 不在系统 PATH 中
解决方法:
# 找到 fs_cli 位置
find /usr -name fs_cli
# 创建软链接
sudo ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/fs_cli
# 或使用完整路径
/usr/local/freeswitch/bin/fs_cli -x "reloadxml"
Q3: Linphone 无法注册
排查步骤:
- 检查 FreeSWITCH 是否运行
systemctl status freeswitch
- 检查配置文件是否生成
ls -la /usr/local/freeswitch/conf/directory/default/1000.xml
cat /usr/local/freeswitch/conf/directory/default/1000.xml
- 检查防火墙
# 开放 SIP 端口
sudo ufw allow 5060/udp
sudo ufw allow 5060/tcp
# 开放 RTP 端口范围
sudo ufw allow 16384:32768/udp
- 查看 FreeSWITCH 日志
tail -f /usr/local/freeswitch/log/freeswitch.log
- 检查 SIP 配置文件
fs_cli -x "sofia status profile internal"
Q4: 配置文件已存在如何处理?
脚本会提示:
⚠️ 警告: 用户 1000 的配置文件已存在
是否覆盖?(y/n):
- 输入
y覆盖 - 输入
n跳过
Q5: 如何批量删除用户?
# 删除单个用户
sudo rm /usr/local/freeswitch/conf/directory/default/1000.xml
# 批量删除号码范围
sudo rm /usr/local/freeswitch/conf/directory/default/{1000..1050}.xml
# 重载配置
fs_cli -x "reloadxml"
Q6: 如何修改用户密码?
方法 1:重新运行脚本
sudo python3 install_freeswitch_user.py --number 1000 --password new_password
# 输入 y 确认覆盖
方法 2:手动编辑配置文件
sudo nano /usr/local/freeswitch/conf/directory/default/1000.xml
# 修改 password 值
# 保存后执行
fs_cli -x "reloadxml"
Q7: 出现 "503 Maximum Calls In Progress" 错误
问题描述: Linphone 注册时提示 503 Maximum Calls In Progress
原因: FreeSWITCH 的最大并发会话数限制过低
解决方法:
步骤 1:修改 internal.xml 配置
sudo nano /usr/local/freeswitch/conf/sip_profiles/internal.xml
在 <settings> 标签内添加或修改:
<settings>
<!-- 增加最大呼叫数 -->
<param name="max-calls" value="1000"/>
<param name="sessions-per-second" value="30"/>
<param name="max-sessions" value="1000"/>
<!-- 其他已有配置... -->
</settings>
步骤 2:修改全局配置
sudo nano /usr/local/freeswitch/conf/autoload_configs/switch.conf.xml
修改:
<configuration name="switch.conf" description="Core Configuration">
<settings>
<param name="max-sessions" value="1000"/>
<param name="sessions-per-second" value="30"/>
</settings>
</configuration>
步骤 3:重启 FreeSWITCH
# 重载配置
fs_cli -x "reloadxml"
fs_cli -x "sofia profile internal restart"
# 或直接重启服务
sudo systemctl restart freeswitch
临时快速解决:
# 通过命令行临时增加限制(重启后失效)
fs_cli -x "fsctl max_sessions 1000"
fs_cli -x "fsctl sessions_per_second 30"
Q8: 批量注册时部分号码失败
排查步骤:
- 检查配置文件是否生成:
ls -la /usr/local/freeswitch/conf/directory/default/
- 查看失败号码的详细错误:
tail -f /usr/local/freeswitch/log/freeswitch.log
- 验证 XML 语法:
xmllint --noout /usr/local/freeswitch/conf/directory/default/1000.xml
- 重新尝试创建失败的号码:
sudo python3 install_freeswitch_user.py --number 失败的号码 --password 密码
高级用法
1. 自定义配置模板
如果需要修改默认配置模板,编辑脚本中的 generate_user_xml 方法:
def generate_user_xml(self, user_id, password):
xml_template = f"""<include>
<user id="{user_id}">
<params>
<param name="password" value="{password}"/>
<param name="vm-password" value="{user_id}"/>
<!-- 添加你的自定义参数 -->
</params>
<variables>
<!-- 添加你的自定义变量 -->
</variables>
</user>
</include>"""
return xml_template
2. 从 CSV 文件批量导入
创建 users.csv:
number,password
1000,pass1000
1001,pass1001
1002,pass1002
扩展脚本读取 CSV:
import csv
with open('users.csv', 'r') as f:
reader = csv.DictReader(f)
for row in reader:
manager.create_user_file(row['number'], row['password'])
3. 集成到自动化脚本
#!/bin/bash
# 自动化部署脚本
# 创建用户组
echo "创建客服组用户..."
sudo python3 install_freeswitch_user.py --range 2000-2020 --password service123 --no-reload
echo "创建销售组用户..."
sudo python3 install_freeswitch_user.py --range 3000-3020 --password sales123 --no-reload
echo "创建管理组用户..."
sudo python3 install_freeswitch_user.py --range 9000-9010 --password admin123 --no-reload
# 统一重载配置
echo "重载 FreeSWITCH 配置..."
fs_cli -x "reloadxml"
echo "完成!"
4. 配合日志记录
# 记录创建日志
sudo python3 install_freeswitch_user.py \
--range 1000-1100 \
--password 123456 \
2>&1 | tee freeswitch_user_creation.log
5. 定时任务自动创建
# 添加到 crontab
crontab -e
# 每天凌晨 2 点创建新用户(从其他系统同步)
0 2 * * * /usr/bin/python3 /path/to/install_freeswitch_user.py --range 1000-1100 --password daily123
安全建议
密码策略
✅ 使用强密码(至少 8 位,包含字母、数字、特殊字符)
✅ 不同用户组使用不同密码
✅ 定期更换密码
❌ 不要在命令行历史中暴露密码
保护配置文件
# 限制配置文件权限
sudo chmod 600 /usr/local/freeswitch/conf/directory/default/*.xml
sudo chown freeswitch:freeswitch /usr/local/freeswitch/conf/directory/default/*.xml
网络安全
- 使用防火墙限制 SIP 端口访问
- 考虑使用 TLS 加密 SIP 通信
- 使用 fail2ban 防止暴力破解
相关命令参考
FreeSWITCH 管理命令
# 重载 XML 配置
fs_cli -x "reloadxml"
# 查看所有注册用户
fs_cli -x "show registrations"
# 查看呼叫状态
fs_cli -x "show channels"
# 踢出用户
fs_cli -x "sofia profile internal flush_inbound_reg 1000"
# 查看 SIP 配置文件状态
fs_cli -x "sofia status profile internal"
# 启用 SIP 调试
fs_cli -x "sofia profile internal siptrace on"
测试命令
# 从命令行发起测试呼叫
fs_cli -x "originate user/1000 &echo"
# 测试两个用户之间的呼叫
fs_cli -x "originate user/1000 &bridge(user/1001)"
参考资料
技术支持
如有问题,请查看:
- FreeSWITCH 日志:
/usr/local/freeswitch/log/freeswitch.log - 系统日志:
journalctl -u freeswitch -f - 配置文件路径:
/usr/local/freeswitch/conf/directory/default/
📝 总结
本文提供的 FreeSWITCH 自动注册脚本解决了以下痛点:
✅ 解决的问题
- 手动创建繁琐 - 自动化批量生成 XML 配置
- 容易出错 - 统一模板,避免语法错误
- 效率低下 - 支持一次性创建成百上千个号码
- 配置复杂 - 封装了所有必要参数,开箱即用
🎯 适用场景
- 🏢 企业电话系统:快速为员工分配分机号
- 📞 呼叫中心:批量创建客服坐席号码
- 🏫 教育机构:为师生提供通信账号
- 🔬 测试环境:快速搭建测试用户
💡 最佳实践
-
安全性
- 使用强密码
- 定期更换密码
- 限制 SIP 端口访问
- 启用 fail2ban 防护
-
性能优化
- 批量创建时使用
--no-reload,最后统一重载 - 适当调整
max-sessions参数 - 监控系统资源使用情况
- 批量创建时使用
-
运维建议
- 定期备份配置文件
- 记录用户创建日志
- 建立号码分配规范
- 配合自动化部署脚本
🚀 扩展方向
基于本脚本,你还可以:
- 集成到 Web 管理后台
- 对接用户管理系统
- 添加号码回收功能
- 实现配置模板管理
- 支持不同用户组权限
🔗 相关资源
- 本脚本仓库:[GitHub 链接]
- FreeSWITCH 官方文档:freeswitch.org/confluence/
- Linphone 官网:www.linphone.org/
- SIP 协议规范:RFC 3261
💬 反馈与贡献
如果您在使用过程中遇到问题或有改进建议,欢迎:
- 📧 提交 Issue
- 🔧 提交 Pull Request
- 💬 分享使用经验
⭐ 如果这篇文章对你有帮助
- 🌟 给项目点个 Star
- 📢 分享给更多需要的人
- 💬 留下你的使用反馈
版本: 1.0
最后更新: 2025-11-06
作者: AI Assistant
许可证: MIT
📌 快速参考卡片
常用命令速查
# 创建单个用户
sudo python3 install_freeswitch_user.py --number 1000 --password pass123
# 批量创建(逗号分隔)
sudo python3 install_freeswitch_user.py --numbers 1000,1001,1002 --password pass123
# 批量创建(范围)
sudo python3 install_freeswitch_user.py --range 1000-1050 --password pass123
# 指定服务器 IP
sudo python3 install_freeswitch_user.py --number 1000 --password pass123 --domain 192.168.1.100
# 不自动重载
sudo python3 install_freeswitch_user.py --range 1000-1100 --password pass123 --no-reload
# 查看注册状态
fs_cli -x "show registrations"
# 重载配置
fs_cli -x "reloadxml"
# 重启 SIP profile
fs_cli -x "sofia profile internal restart"
Linphone 配置速查
| 项目 | 值 |
|---|---|
| SIP 地址 | 1000@你的服务器IP |
| 用户名 | 1000 |
| 密码 | 你设置的密码 |
| 域 | 你的服务器IP |
| 传输 | UDP |
| 端口 | 5060 |
🎉 感谢阅读,祝你使用愉快!