如何在ejabberd中批量注册多个用户?需添加10k用户
在ejabberd中批量注册10000个用户的方法
方法一:用ejabberdctl结合脚本批量创建
ejabberd自带的ejabberdctl工具支持单用户注册,你可以写脚本循环调用该命令批量生成用户。
示例bash脚本:
#!/bin/bash DOMAIN="你的域名.com" DEFAULT_PASS="默认密码" for i in {1..10000} do # 若需随机密码,可替换为 openssl rand -hex 8 ejabberdctl register user$i $DOMAIN $DEFAULT_PASS done
方法二:直接操作ejabberd数据库
如果ejabberd使用MySQL、PostgreSQL等关系型数据库,直接插入用户记录效率比逐个调用命令更高。
以MySQL为例,ejabberd用户表通常为users,插入语句示例:
INSERT INTO users (username, serverhost, password) SELECT CONCAT('user', num), '你的域名.com', SHA1(RAND()) FROM ( SELECT a.N + b.N * 10 + c.N * 100 + d.N * 1000 + 1 AS num FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a CROSS JOIN (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b CROSS JOIN (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) c CROSS JOIN (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) d ) nums WHERE num <= 10000;
注意:密码哈希方式要和ejabberd配置的auth_password_format一致,比如plain存明文、sha1存SHA1哈希值。操作前务必备份数据库。
方法三:通过ejabberd HTTP API批量注册
若启用了ejabberd的HTTP API,可通过脚本循环发送POST请求批量创建用户。
示例curl命令(单用户):
curl -X POST http://你的ejabberd地址:5280/api/register \ -H "Content-Type: application/json" \ -d '{"user": "user1", "host": "你的域名.com", "password": "pass123"}'
批量场景可写脚本循环执行该命令,或用工具批量生成请求。
注意事项
- 先测试少量用户,确认方法可行后再批量操作。
- 脚本批量执行时注意控制频率,避免给服务器造成过大负载。
- 数据库操作要严格匹配ejabberd配置,防止用户无法正常登录。
内容的提问来源于stack exchange,提问作者Anoop Kumar
相关产品推荐
相关产品推荐

