我需要有关ejabberd的ejabberdctl process_rosteritems
命令的帮助。
我想在名单中搜索“ xmpp.com” jabber服务器的所有成员。
在用户名册中,只有“ xmpp.com”,而没有其他xmpp服务器。
命令
ejabberdctl process_rosteritems delete any any any *@xmpp.com
不仅搜索xmpp.com
,而且还在搜索其他服务器。
因此,我需要一些帮助来创建正确的命令。
答案 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