ejabberd命令创建(仅查找1个XMPP)

时间:2018-12-17 18:42:22

标签: ejabberd

我需要有关ejabberd的ejabberdctl process_rosteritems命令的帮助。
我想在名单中搜索“ xmpp.com” jabber服务器的所有成员。
在用户名册中,只有“ xmpp.com”,而没有其他xmpp服务器。

命令

ejabberdctl process_rosteritems delete any any any *@xmpp.com

不仅搜索xmpp.com,而且还在搜索其他服务器。
因此,我需要一些帮助来创建正确的命令。

2 个答案:

答案 0 :(得分:0)

对不起,但我不正确理解您的问题。

让我们想象一下user1 @ localhost,它有两个本地联系人,还有来自xmpp.com的两个联系人,以及来自其他主机的另外两个联系人。我们可以这样看到它们:

!null ? image : defaultImage

然后,如果我只想列出(或删除)来自xmpp.com的user1 @ localhost的联系人:

$ ejabberdctl process_rosteritems list any any *@* *@*
...
user1@localhost user2@localhost
user1@localhost user3@localhost
user1@localhost contact4@xmpp.com
user1@localhost contact5@xmpp.com
user1@localhost contact6@other.com
user1@localhost contact7@other.com
user2@localhost ...
user2@localhost ...
...

请问您可以用更多详细信息来编辑问题,也许还可以举例说明您所拥有和想要的东西?

答案 1 :(得分:0)

让我们以该服务器为例:

$ ejabberdctl process_rosteritems list any any *@localhost *@* | grep -v There | grep -v Progress | grep -v Matches | sort
user1@localhost user2@localhost
user1@localhost user4@xmpp.com
user1@localhost user6@other.com
user2@localhost user3@xmpp.com
user3@localhost user66@xmpp.com
user3@localhost user77@xmpp.com
user4@localhost user99@other.com

您要获取仅具有xmpp.com作为联系人的用户列表吗?在这种情况下,它将是user2 @ localhost和user3 @ localhost,对吗?您可以这样做:

$ ejabberdctl process_rosteritems list any any *@localhost *@xmpp.com | grep -v There | grep -v Progress | grep -v Matches | sort | awk '{print $1}' | uniq >haveyes.txt

$ ejabberdctl process_rosteritems list any any *@localhost *@* | grep -v There | grep -v Progress | grep -v Matches | sort | grep -v "@xmpp.com" | awk '{print $1}' | uniq >havenot.txt

$ comm -23 haveyes.txt havenot.txt 
user2@localhost
user3@localhost