FastNetMon

Sunday 30 January 2011

Установка mod_fakephp на Debian

Что это и зачем: http://phpsuxx.blogspot.com/2010/04/php-fastcgi-phpadminvalue-phpadminflag.html

Сливаем сорцы и компилируем:
apt-get install -y subversion apache2-prefork-dev
cd /usr/src
svn co http://svn.dmi.me.uk/mod_fakephp/trunk mod_fakephp
cd mod_fakephp/src
apxs2 -i -c -n mod_fakephp.so mod_fakephp.c

Подключем модуль к Апачу:
cd /etc/apache2/mods-available/
echo "LoadModule fakephp_module /usr/lib/apache2/modules/mod_fakephp.so" > fakephp.load
cd ../mods-enabled/
ln -s ../mods-available/fakephp.load fakephp.load
/etc/init.d/apache restart

Источник: http://highloaded.blogspot.com/2010/04/install-modfakephp-on-debian.html

Saturday 29 January 2011

Как сделать посыл писем при коммите в SVN репозиторий?

Платформа: CentOS 5.5

Переходим в папку репозитория:
cd /var/spool/svn/имя_репо/hooks/

Берем заготовленный пример конфига:
mv post-commit.tmpl post-commit
chmod +x post-commit

После этого открываем хук:
vi post-commit

Удаляем строку в самом низу "log-commit.py ...".

А строку "commit-email.pl" заменяем на следующую (адрес почтового ящика можно оставить один):
/usr/share/doc/subversion-1.4.2/tools/hook-scripts/commit-email.pl "$REPOS" "$REV" devel@domain.ru manager@domain.ru --diff y --from svn@domain.ru

Все, теперь при коммите мы будем получать на почту полный лог коммита и все диффы примерно следующего вида:
Author: nrg
Date: 2011-01-29 22:39:40 +0300 (Sat, 29 Jan 2011)
New Revision: 22

Modified:
trunk/TODO
Log:
fix todo

Modified: trunk/TODO
===================================================================
--- trunk/TODO 2011-01-28 16:29:06 UTC (rev 21)
+++ trunk/TODO 2011-01-29 19:39:40 UTC (rev 22)
@@ -1,3 +1,3 @@
-
-Юнит тест
\ No newline at end of file
+Юнит тест
+Тест пункт

Но при этом коммент к коммиту (если он был в UTF8) будет показан в стиле \100\123\213\112, чтобы это пофиксить нужно сделать следующее.

vim /usr/share/doc/subversion-1.4.2/tools/hook-scripts/commit-email.pl

И В самом верху делаем так:
#!/usr/bin/env perl

$ENV{'LC_ALL'} = 'en_US.UTF-8';

ISPManager: WARNING Bad UTF8 string

Имеем вот такую радость на ISPManager Lite:
Jan 29 21:21:30 [27760] WARNING Bad UTF8 string '"??#??.0??'
Jan 29 21:21:30 [27760] ../../src/mgr/libmgr/xmlutil.cpp:236 DEBUG fixed to '"??#??.0??'
Jan 29 21:22:49 [27760] INFO Request [89.223.25.225][root] 'func=domain&clickstat=yes'
Jan 29 21:22:49 [27760] ../../src/mgr/core/session.cpp:2132 TRACE Attach messages to banners
Jan 29 21:22:49 [27760] ../../src/ispmgr/core/ispmgr.cpp:59 TRACE Rebuild AccountCache
Jan 29 21:22:49 [27760] ../../src/ispmgr/core/ispmgr.cpp:191 DEBUG Total accounts 4046
Jan 29 21:22:50 [27760] WARNING Bad UTF8 string '????#??#????.0??'
Jan 29 21:22:50 [27760] ../../src/mgr/libmgr/xmlutil.cpp:236 DEBUG fixed to '????#??#????.0??'
Jan 29 21:22:50 [27760] WARNING Bad UTF8 string '"??#??.0??'
Jan 29 21:22:50 [27760] ../../src/mgr/libmgr/xmlutil.cpp:236 DEBUG fixed to '"??#??.0??'

Фиксится - лишь апдейтом панели.

Программисты покоряют вселенную

Маст рид: http://www.happy-pm.com/blog/?p=1927&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+happy-pm+(Happy+PM+Club)

Установка MTR из исходников на Mac OS

Для начала нужно поставить среду разработки от Apple, там в комлплекте будет gcc.

cd
mkdir mtr
cd mtr
curl ftp://ftp.bitwizard.nl/mtr/mtr-0.80.tar.gz -o mtr-0.80.tar.gz
tar -xf mtr-0.80.tar.gz
cd mtr-0.80
./configure --prefix ~/mtr
make
make install
cd ..
rm -rf mtr-0.80*
# без этого будет ругаться: mtr: unable to get raw sockets.
sudo chown root:wheel sbin/mtr

Все, запускаем:
~/mtr/sbin/mtr

А вот уже собранный бинарик: http://www.statusq.org/archives/2006/06/14/1021/

Monday 24 January 2011

Не называйте Django проекты именем site!!! Будут проблемы!!!

http://code.djangoproject.com/ticket/3299

И не нужно мне говорить, что баг не актуален 4 года как, вот только что воспроизвелся в текущей версии Django.

Thursday 20 January 2011

Что делать, если не работает plot2d в Maxima на Mac OS?

Используем в WxMaxima wxplot2d вместо plot2d.

Как закрыть NFS сервер фаерволлом?

Нужно статически забить порты всех саб-сервисов NFS.

Открываем:
vi /etc/default/nfs-common

Правим:
STATDOPTS="--port 32765 --outgoing-port 32766"

Открываем:
vi /etc/default/nfs-kernel-server

Правим:
RPCMOUNTDOPTS="-p 32767"

Открываем:
vi /etc/modprobe.d/options.local

Правим:
options lockd nlm_udpport=32768 nlm_tcpport=32768

После этого в фаерволле нужно открыть порты:
iptables -A INPUT -p tcp -m tcp --dport 111 -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp --dport 111 -j ACCEPT
# nfs server
iptables -A INPUT -p tcp -m tcp --dport 2049 -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp --dport 2049 -j ACCEPT

# other nfs stuff
iptables -A INPUT -p tcp -m tcp --dport 32765 -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp --dport 32765 -j ACCEPT

iptables -A INPUT -p tcp -m tcp --dport 32767 -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp --dport 32767 -j ACCEPT

iptables -A INPUT -p tcp -m tcp --dport 32768 -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp --dport 32768 -j ACCEPT

После этого нужно ребутнуть машину:
shutdown -r now

Первоисточник:

Путем небольших умственных усилий и проб вопрос решен, может кому и пригодится:

1. В /etc/default/nfs-common ставим
Код
STATDOPTS="--port 32765 --outgoing-port 32766"
2. Создаем файл в /etc/modprobe.d с именем options.local и вписываем строчку:
Код
options lockd nlm_udpport=32768 nlm_tcpport=32768
3. Если это надо замутить на NFS-сервере,то еще дополнительно в
/etc/default/nfs-kernel-server
Код
RPCMOUNTDOPTS="-p 32767"
перезапускаем nfs и в rpcinfo -p , видим, что все порты служб NFS сели
на указанные места и стали статическими. Теперь можно и iptables
применить....

Источник: http://unixforum.org/index.php?showtopic=74354 и http://prefetch.net/blog/index.php/2010/11/02/firewalling-a-linux-nfs-server-with-iptables/

Установка NFS сервера и клиента на Debian

apt-get install nfs-kernel-server nfs-common portmap

Запускаем portmap и NFS сервер:
/etc/init.d/portmap start
/etc/init.d/nfs-kernel-server start

Создаем папку, которую будем экспортировать по NFS:
mkdir /export_folder

Открываем файл конфигурации экспортируемых файловых систем:
vi /etc/exports

Экспортируем папку /export_folder только для клиета с IP 10.0.100.100:
/export_folder 10.0.100.100(rw,no_root_squash)

Для применения списка экспортируемых ОС на лету, нужно вызвать команду:
exportfs -a

В ответ мне было выдано предупреждение:
/etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export 10.0.100.100:/var/backup".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x

Все отлично экспортировалось:
exportfs
/export_folder 10.0.100.100

Теперь нужно на клиенте настроить подключение к нашему серверу.

Ставим необходимые пакеты:
apt-get install nfs-common portmap

Монтиурем вручную:
mkdir /mnt/nfs
mount backup.ru:/export_folder /mnt/nfs

Все, работает :)

Размонтируем:
umount /mnt/nfs

А для /etc/fstab будет вот такая строчка:
backup.ru:/export_folder /mnt/nfs nfs rw,nfsvers=3,tcp 0 0


Источник: http://phpsuxx.blogspot.com/2009/12/nfs-centos.html и http://www.debianhelp.co.uk/nfs.htm

Новый поезд Allegro из Питера в Хельсинки

Впечатления: http://voyadger.livejournal.com/68593.html

Установка OpenFire Jabber сервера на Debian 5 Lenny

Для начала идем на страницу: http://www.igniterealtime.org/downloads/index.jsp#openfire, напротив Openfire 3.6.4 щелкаем по Linux и далее выбираем ссылку: openfire_3.6.4_all.deb, вот прямая ссылка:
http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3.6.4_all.deb

Ставим JRE: http://phpsuxx.blogspot.com/2009/12/java-6-jre-debian-5-lenny.html

cd /usr/src
wget 'http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3.6.4_all.deb' -Oopenfire_3.6.4_all.deb
dpkg -i openfire_3.6.4_all.deb

В ответ будет выдано примерно следующее:
(Reading database ... 22629 files and directories currently installed.)
Unpacking openfire (from openfire_3.6.4_all.deb) ...
Setting up openfire (3.6.4) ...
adduser: Warning: The home directory `/var/lib/openfire' does not belong to the user you are currently creating.
update-rc.d: warning: /etc/init.d/openfire missing LSB information
update-rc.d: see
Starting openfire: openfire.

После этого открываем в браузере страницу:
http://ваш_внешний_ip:9090/setup/index.jsp

И там, выбираем язык - "Choose Language", Continue, Server Settings, оставляем стандартные значения (Admin Console Port: 9090, Secure Admin Console Port: 9091), Continue. Embedded Database, Continue. Profile settings - default, continue. После этого задаем пароль и почту администратора. Все, установка закончена, открываем в браузере http://ваш_внешний_ip:9090/login.jsp и входим админом.

Wednesday 19 January 2011

Высокая нагрузка на диск со стороны kjournald в CentOS (по iotop)

Есть вот такие показания iotop:
Total DISK READ: 31.42 K/s | Total DISK WRITE: 3.00 M/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
2376 be/3 root 0.00 B/s 80.29 K/s 0.00 % 99.99 % [kjournald]

Машина - CentOS, на диске очень большое число мелких файлов, опции монтирования - стандартные.


Пока нашел лишь вот такое: http://www.linux.org.ru/forum/admin/5204549и http://forum.kernelnewbies.org/read.php?11,853,853

Tuesday 18 January 2011

Как узнать uptime процесса в Linux?

Узнаем PID нашего процесса (мне нужно было определить время жизни nginx воркера):
pid=`ps aux | grep nginx | grep worker | grep -v 'worker process is shutting down' | head -1 | awk '{print $2}'`

Запрашиваем время работы процесса:
ps -eo pid,etime | grep $pid | awk '{print $2}'

В ответ будет выдано время в формате (минуты):
26:05

Источник: http://stackoverflow.com/questions/2598145/how-to-retrieve-the-process-start-time-or-uptime-in-python

vzctl 3.0.25 - удалены cron задачи для перезагрузки VPS, теперь это выполняет демон vzeventd

В changelog сообщается следующее:
Removed cron scripts to handle cleanup and reboot

Так и есть:
chkconfig --list | grep vzeve
vzeventd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

При этом, OpenVZ почему-то забывает про свой cron (вот поэтому "All the cron trickery (used for CT reboot and network cleanup) is removed from this release. If you have something non-standard in /etc/vz/cron/ directory, this is no longer managed by the vz initscript."):
cat /etc/cron.d/vz
# Cron jobs needed for OpenVZ

# -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
# ------------------ EDIT THE CORRECT FILE -------------------------
# This file is copied to /etc/cron.d/vz from
# /etc/vz/cron/vz when the vz service is started
# via its init.d script and the file
# /etc/cron.d/vz is cleared when the
# service is stopped. Therefore any edits made directly to
# /etc/cron.d/vz will be lost anytime the vz service
# restarts.
#
# To make changes, edit the master copy /etc/vz/cron/vz
# (or add your own /etc/vz/cron/vz* files)
# and run /etc/init.d/vz update-cron.
#
# The reason this is done this way is because the OpenVZ cron job
# should only be invoked if the vz service is enabled and not
# just as a consequence of installing the vzctl as it was the case
# previously. The file /etc/cron.d/vz
# cannot simply be linked to the master copy in
# /etc/vz/cron/ because for security reasons cron
# will not process crontab files that are links or writeable by
# anybody else but root, thus the file must be copied
# into /etc/cron.d/ with the right ownership and permissions.


# Clean containers' network rules (arp,route,iptables)
*/5 * * * * root /usr/share/vzctl/scripts/vpsnetclean

# Start containers marked as rebooted.
*/2 * * * * root /usr/share/vzctl/scripts/vpsreboot

И как результат, cron заспамливает нас ошибками, что файлов /usr/share/vzctl/scripts/vpsnetclean и /usr/share/vzctl/scripts/vpsreboot больше не существует, так что, нужно закончить задачу OpenVZ и удалить этот файл:
rm /etc/cron.d/vz

Источник: http://wiki.openvz.org/News/updates#vzctl_3.0.25_released

Sunday 16 January 2011

Установка Django на Mac OS X 10.5.8

cd
curl -oDjango-1.2.5.tar.gz http://media.djangoproject.com/releases/1.2/Django-1.2.5.tar.gz
tar -xf Django-1.2.5.tar.gz
cd Django-1.2.5
sudo python setup.py install

Убеждаемся, что Django встал, как требуется:
cd
python
Python 2.5.1 (r251:54863, Sep 1 2010, 22:03:14)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> print django.get_version()
1.2.5
>>>

mkdir testdjango
django-admin.py startproject mysite
cd mysite
python manage.py runserver

Saturday 15 January 2011

Песпективы программиста в Эстонии

http://kurapov.name/rus/pleasure/it/it_estonia/

ЭЦП в Эстонии

http://kurapov.name/rus/technology/web/digidocservice/

Установка Oracle Express на 64 битный Ubuntu 9.04

Открываем страницу: http://www.oracle.com/technetwork/database/express-edition/downloads/102xelinsoft-102048.html

Ставим там в верху галочку "Accept license agreement", спускаемся в блок "Oracle Database 10g Express Edition (Universal)" и качаем файлик "oracle-xe-universal_10.2.0.1-1.0_i386.deb".

Потом чуть ниже пункт "Oracle Database 10g Express Client" и качаем файлик "oracle-xe-client_10.2.0.1-1.0_i386.deb".

После этого система попросит залогинится или зарегистрироваться, делаем это и после этого скачиваем нужные файлы и кладем их в папку /root.

Ставим пакет для совместимости с 32 битным ПО:
apt-get install -y ia32-libs

Ставим зависимости:
apt-get install -y libaio1

Ставим клиента для Oracle:
dpkg --force-architecture -i oracle-xe-client_10.2.0.1-1.0_i386.deb

Ставим сервер:
dpkg --force-architecture -i oracle-xe-universal_10.2.0.1-1.0_i386.deb

Запускаем конфигуратор:
/etc/init.d/oracle-xe configure


И выполняем следующее:
/etc/init.d/oracle-xe configure

Oracle Database 10g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 10g Express
Edition. The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts. Press to accept the defaults.
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:[Enter]

Specify a port that will be used for the database listener [1521]:[Enter]

Specify a password to be used for database accounts. Note that the same
password will be used for SYS and SYSTEM. Oracle recommends the use of
different passwords for each database account. This can be done after
initial configuration:пароль[Enter]
Confirm the password:пароль[Enter]

Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]: [Enter]
Starting Oracle Net Listener...Done
Configuring Database...Done
Starting Oracle Database 10g Express Edition Instance...Done
Installation Completed Successfully.
To access the Database Home Page go to "http://127.0.0.1:8080/apex"

Убеждаемся, что Oracle запустился и работать:
ps aux | grep orac
oracle 11705 0.0 0.2 22216 6052 ? Ss 22:38 0:00 /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/tnslsnr LISTENER -inherit
root 11813 0.0 0.0 7544 912 pts/1 S+ 22:39 0:00 grep orac

Но у меня почему-то не заработало ничего на 8080м порту :(

Источник: http://blog.cachemiss.com/articles/Installing%20Oracle%20XE%20on%20Debian%20AMD64.pod

Linux RAID-10, какие диски в саб зеркалах?

Имеем следующую конфигурацию:

cat /proc/mdstat
Personalities : [raid10] [raid1] [raid0] [raid6] [raid5] [raid4]
md0 : active raid1 sdd1[3] sdc1[2] sdb1[1] sda1[0]
2102464 blocks [4/4] [UUUU]

md1 : active raid1 sdd2[3] sdc2[2] sdb2[1] sda2[0]
264960 blocks [4/4] [UUUU]

md2 : active raid10 sdd3[3] sdc3[2] sdb3[1] sda3[0]
1460404736 blocks 64K chunks 2 near-copies [4/4] [UUUU]
[=>...................] resync = 5.9% (86553984/1460404736) finish=324.5min speed=70551K/sec

unused devices:

mdadm --detail /dev/md2
/dev/md2:
Version : 0.90
Creation Time : Sat Jan 15 15:57:05 2011
Raid Level : raid10
Array Size : 1460404736 (1392.75 GiB 1495.45 GB)
Used Dev Size : 730202368 (696.38 GiB 747.73 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 2
Persistence : Superblock is persistent

Update Time : Sat Jan 15 16:09:38 2011
State : active, resyncing
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

Layout : near=2
Chunk Size : 64K

Rebuild Status : 6% complete

UUID : 156658c3:7e3be92e:776c2c25:004bd7b2
Events : 0.7

Number Major Minor RaidDevice State
0 8 3 0 active sync /dev/sda3
1 8 19 1 active sync /dev/sdb3
2 8 35 2 active sync /dev/sdc3
3 8 51 3 active sync /dev/sdd3

И в упор не понятно, какие диски зазеркалены между собой, а какие нет.

Online конвертер в PunyCode

http://www.charset.org/punycode.php

Thursday 6 January 2011

Как сделать собственный Jabber сервер на FastVPS.ru на базе Debian 5 Lenny?

Разве Вам, как продвинутому айтишнику, никогда не хотелось иметь свой собственный Jabber сервер на своем домене? Уверен, нет человека, которому бы не хотелось иметь JID вида admin@domain.ru :) Что же, это довольно просто!

Для осуществления мини мечты нам понадобится:
1. Домен второго уровня domain.ru добавленный в панель управления DNS по адресу https://ns3.fastvps.ru/manager
2. VPS или выделенный сервер с ОС Debian на FastVPS.ru
3. Немного терпения и сноровки :)

Итак, поехали!

Создание SRV записи на DNS для Jabber

Предполагаем, что на домене domain.ru у нас уже работают сайты. Поэтому, логинимся в панель ns3, выбираем нужный нам домен, щелкаем по нему дважды и входим в меню поддоменов. Далее нам нужно создать запись, которая будет указывать расположение нашего Jabber сервиса, для этого щелкаем по зеленому плюсу в верхнем углу панели. Тип ставим в "A", имя jabber (тогда полный адрес нашего Jabber сервера будет jabebr.domain.ru), а в поле "адрес" вписываем IP нашего сервера. После этого создаем три записи типа "SRV (сетевой сервис)" со следующими именами и портами:
_jabber._tcp 5269
_xmpp-server._tcp 5269
_xmpp-client._tcp 5222

Поля "Приоритет" и "Условный вес SRV-записи" выставляем в 0, а в поле адрес вписываем "jabber".

В конфиге named это будет выглядеть как:
_jabber._tcp IN SRV 0 0 5269 jabber
_xmpp-server._tcp IN SRV 0 0 5269 jabber
_xmpp-client._tcp IN SRV 0 0 5222 jabber

Через некоторое время, когда DNS обновится можно опционально проверить работу указанных записей извне:
host -t SRV _jabber._tcp.domain.ru
host -t SRV _xmpp-server._tcp.domain.ru
host -t SRV _xmpp-client._tcp.domain.ru

Итак, с DNS закончили, переходим к настройке демонов.

Установка Jabber сервера

Устанавливаем корректный hostname сервера:
echo "domain.ru" > /etc/hostname
/etc/init.d/hostname.sh

В консоли выполняем следующие команды:

apt-get update;
apt-get install -y ejabberd;

После этого ejabber будет установлен, добавлен в автозапуск (будет загружаться автоматически при загрузке системы) и запущен.

Убеждаемся, что Ejabberd запустился и слушает нужные нам порты:
netstat -lnpt | grep beam
tcp 0 0 0.0.0.0:5280 0.0.0.0:* LISTEN 11754/beam
tcp 0 0 xx.xx.xx.xx:7777 0.0.0.0:* LISTEN 11754/beam
tcp 0 0 0.0.0.0:45858 0.0.0.0:* LISTEN 11754/beam
tcp 0 0 0.0.0.0:5222 0.0.0.0:* LISTEN 11754/beam
tcp 0 0 0.0.0.0:5269 0.0.0.0:* LISTEN 11754/beam



Конфигурация Jabber сервера

dpkg-reconfigure ejabberd

Указываем domain.ru, потом admin и дважды вводим пароль администратора.

В ответ система откликнется примерно следующим:
Stopping jabber server: ejabberd.
Replacing config file /etc/ejabberd/ejabberd.cfg with new version
Starting jabber server: ejabberd.
Waiting for ejabberd to register admin user.
Admin user "admin@domain.ru" is registered successfully.

Входим под учетной записью администратора

Теперь нам нужен клиент с поддержкой протокола Jabber. Добавляем учетную запись, выбираем ее тип "Jabber", в поле Jabber ID вводим "admin@domain.ru", указываем пароль и подключаемся, при этом будет выдано предложение подтвердить сертификат, соглашаемся и принимаем его. Все! Можно добавлять других контактов и общаться по Jabber со всем миром!

Веб-интерфейс управления

Для выполнения различных рутиных задачек есть интерфейс управления, доступный по адресу: http://jabber.domain.ru:5280/admin, в качестве логина указываем admin@domain.ru, а в качестве пароля - наш пароль на jabber.

Консоль управления

Позволяет выполнять огромное множество операций с Jabber сервером.
ejabberdctl
Usage: ejabberdctl [--node nodename] command [options]

Available commands in this ejabberd node:
status get ejabberd status
stop stop ejabberd
restart restart ejabberd
reopen-log reopen log file
register user server password register a user
unregister user server unregister a user
backup file store a database backup to file
restore file restore a database backup from file
install-fallback file install a database fallback from file
dump file dump a database to a text file
load file restore a database from a text file
import-file file import user data from jabberd 1.4 spool file
import-dir dir import user data from jabberd 1.4 spool directory
delete-expired-messages delete expired offline messages from database
delete-old-messages n delete offline messages older than n days from database
mnesia [info] show information of Mnesia system
vhost host ... execute host-specific commands
srg-list-groups host list the shared roster groups from host
delete-older-messages days delete offline messages older than 'days'
vcard-set user host data [data2] content set data to content on the vCard
incoming-s2s-number print number of incoming s2s connections on the node
vcard-get user host data [data2] get data from the vCard of the user
status-list status list the logged users with status
remove-node nodename remove an ejabberd node from the database
stats onlineusers number of logged users
stats registeredusers number of registered users
pushroster-all file push template roster in file to all those users
srg-get-info group host get info of a specific group on host
rosteritem-purge [options] Purge all rosteritems that match filtering options
add-rosteritem user1 server1 user2 server2 nick group subs Add user2@server2 to user1@server1's roster
srg-delete group host delete the group
stats uptime-seconds uptime of ejabberd node in seconds
outgoing-s2s-number print number of outgoing s2s connections on the node
killsession user server resource kill a user session
stats onlineusersnode number of logged users in the ejabberd node
pushroster file user server push template roster in file to user@server
load-config file load config from file
user-resources user server print user's connected resources
srg-create group host name description display create the group with options
get-cookie get the Erlang cookie of this node
export2odbc server output export Mnesia tables on server to files on output directory
connected-users-number print a number of established sessions
srg-user-add user server group host add user@server to group on host
set-password user server password set password to user@server
delete-older-users days delete users that have not logged in the last 'days'
rem-rosteritem user1 server1 user2 server2 Remove user2@server2 from user1@server1's roster
compile file recompile and reload file
status-num status number of logged users with status
push-alltoall server group adds all the users to all the users in Group
srg-user-del user server group host delete user@server from group on host
connected-users list all established sessions

Examples:
ejabberdctl restart
ejabberdctl --node ejabberd@host restart
ejabberdctl vhost jabber.example.org ...

Подключение JwChat

Осуществляется весьма легко: http://www.ejabberd.im/jwchat-localserver

Источники: http://www.jms1.net/jabberd2/srv.shtml и http://server-help.ru/?tag=ejabberd