20090702

подключение к ejabberd.

для начала нужно узнать erlang-cookie, используемый узлом (node) ejabberd. сам узел по умолчанию так и называется: «ejabberd@машина».
где находится cookie? скорее всего — в домашнем каталоге пользователя, от имени которого запущен ejabberd. а запущен он, скорее всего, от имени пользователя ejabberd. смотрим выдачу
$ ps aux|grep ejabberd
первым полем и будет имя пользователя, от имени которого запущен процесс (тавтология в компьютерных науках, увы, практически неодолима).
узнать домашний каталог пользователя проще всего так:
getent passwd пользователь
предпоследнее поле (поля разделены двоеточием) и будет искомым каталогом. в нём должен лежать файл «.erlang.cookie». на содержимое этого файла я в дальнейшем буду ссылаться так: <cookie>

теперь собственно подключение.
на той же машине, где крутится ejabberd, подключиться к нему можно так:
$ erl -sname новый_узел -setcookie <cookie> -remsh ejabberd@$(hostname -s)
что такое «новый_узел»? просто какое-нибудь уникальное имя. например, «n0».
что такое «$(hostname -s)»? подстановка (средствами bash-а) результата выполнения команды «hostname -s», которая возвращает короткое имя машины. чаще всего узел, на котором работает ejabberd, называется именно по короткому имени. уточнить можно по выводу ps (см. выше): если среди аргументов присутствует -sname — используется короткое имя машины, если -name — полное (возвращаемое командой hostname без опции -s).
небольшое отступление. допустим, полное имя машины — «машина.domain.org». короткое имя — «машина». так вот ejabberd, скорее всего, запущен на узле «ejabberd@машина». и обращаться к нему следует именно так. а узел «ejabberd@машниа.domain.org» — это уже будет совершенно другой узел.
вот, собственно, и всё подключение.

p.s. ежели кто из читателей знает более лучшее/универсальное решение — you are welcome.

p.p.s. до встречи через 100000 секунд.

♺ man erl ejabberd hostname getent ps grep bash

Комментариев нет: