ejabberd administration from command-line, XMPP client, and more

ejabberd has a powerful set of commands for administrative purposes that you can use on the command-line or your standard XMPP client.

ejabberd provides two handy administration interfaces to execute commands:

  • ejabberdctl command line script: for use in your regular terminal or via SSH
  • Ad-Hoc Commands (XEP-0050): for use in your regular standard XMPP client

You can get the full list of available commands by launching the ejabberdctl command list script when ejabberd is running. For example, in ejabberd 2.1.0, you have those commands:

$ ejabberdctl
Usage: ejabberdctl [--node nodename] [--auth user host password] command [options]Available commands in this ejabberd node
backup file
Store the database to backup file
connected_users
List all established sessions
connected_users_number
Get the number of established sessions
delete_expired_messages
Delete expired offline messages from database
delete_old_messages days
Delete offline messages older than DAYS
dump file
Dump the database to text file
dump_table file table
Dump a table to text file
export_piefxis dir
Export data of all users in the server to PIEFXIS files (XEP-0227)
export_piefxis_host dir host
Export data of users in a host to PIEFXIS files (XEP-0227)
get_loglevel
Get the current loglevel
help [--tags [tag] | com?*]
Show help (try: ejabberdctl help help)
import_dir file
Import users data from jabberd14 spool dir
import_file file
Import user data from jabberd14 spool file
import_piefxis file
Import users data from a PIEFXIS file (XEP-0227)
incoming_s2s_number
Number of incoming s2s connections on the node
install_fallback file
Install the database from a fallback file
load file
Restore the database from text file
mnesia [info]
show information of Mnesia system
mnesia_change_nodename oldnodename newnodename oldbackup newbackup
Change the erlang node name in a backup file
outgoing_s2s_number
Number of outgoing s2s connections on the node
register user host password
Register a user
registered_users host
List all registered users in HOST
rename_default_nodeplugin
Update PubSub table from ejabberd trunk SVN to 2.1.0
reopen_log
Reopen the log files
restart
Restart ejabberd
restore file
Restore the database from backup file
status
Get ejabberd status
stop
Stop ejabberd
unregister user host
Unregister a user
user_resources user host
List user's connected resources

Examples:

ejabberdctl restart  ejabberdctl --node ejabberd@host restart

Commands to start an ejabberd node:  start  Start an ejabberd node in server mode  debug  Attach an interactive Erlang shell to a running ejabberd node  live   Start an ejabberd node in live (interactive) mode

You also have access to all these commands with any standard XMPP client that supports Ad-Hoc Commands, and XEP-0004: Data Forms. Of course your Jabber account must have admin privilege in ejabberd to execute the commands.

image

The dialog box for Ad-Hoc Commands, and below, the list of available commands:

image

In addition to the ejabberdctl script and the XMPP client interface, you can execute commands in several other ways if you install the corresponding modules:

  • ejabberd_xmlrpc allows XML-RPC calls
  • mod_rest allows HTTP POSTs
  • mod_shcommands provides a new page in ejabberd’s WebAdmin
  • service discovery

Here is the service discovery under Psi+:

image

Here is the ejabberd’s WebAdmin interface:

image

And finally, you can install mod_admin_extra, which provides many more commands for specific tasks, like modify roster, vCard, and shared roster groups. There is also mod_muc_admin, which provides commands to administer the MUC service: create, destroy, list, configure rooms…

Note: the concepts and features described in this post apply to ejabberd 2.1.0 and newer. Older versions do not include all the commands described here.