#bash #ubuntu #ejabberd
#bash #ubuntu #ejabberd
Вопрос:
Мне нужно зарегистрировать много тысяч пользователей в ejabberd из файла csv. Для этого я написал простой скрипт.
#!/bin/sh
OLDIFS=$IFS
IFS=','
[ ! -f $INPUT ] amp;amp; { echo "$INPUT file not found"; exit 99; }
while read username domain pass p1 p2 p3 p4
do
echo "ejabberdctl register $username $domain $pass"
ejabberdctl register $username $domain $pass
done < users.csv
IFS=$OLDIFS
Но, в конце концов, ответ таков: Ошибка: cannot_register
Если я просто выполню строку, скопированную из выходных данных, все в порядке. Пользователь создается нормально.
Ответ №1:
Это всего лишь небольшая хитрость на потом: как только вы заработаете в своем цикле, если вы считаете, что ejabberdctl работает слишком медленно, вы можете попробовать использовать ReST API. Это должно быть намного быстрее при выполнении многих запросов.
Настройте временно что-то вроде этого (не забудьте удалить это, когда закончите):
listen:
-
port: 5280
module: ejabberd_http
tls: false
request_handlers:
/api: mod_http_api
api_permissions:
"console commands":
from:
- ejabberd_ctl
- mod_http_api
who: all
what: "*"
modules:
mod_http_api: {}
Затем выполните это в командной строке, чтобы зарегистрировать учетную запись:
curl 'localhost:5280/api/register?user=user2amp;host=localhostamp;password=somepass123'