command line XMPP presence monitoring

I am using sendxmpp to send notifications of system errors. That requires the XMPP client keep running. Xabber on Android sometimes stops for no apparent reason (I have it configured to always have a notification so it should never stop). Is there a command-line program to check presence on XMPP so that I could have it notify me by some other method if it detects that I haven't been on for a while? There are plenty of text mode XMPP clients that use curses. But I want a script to just check if an account has logged in recently. -- My Main Blog http://etbe.coker.com.au/ My Documents Blog http://doc.coker.com.au/

On Tue, May 23, 2017 at 10:09:05PM +1000, Russell Coker wrote:
I am using sendxmpp to send notifications of system errors. That requires the XMPP client keep running. Xabber on Android sometimes stops for no apparent reason (I have it configured to always have a notification so it should never stop).
Is there a command-line program to check presence on XMPP so that I could have it notify me by some other method if it detects that I haven't been on for a while?
Dunno about an existing command line tool but it should be pretty simple to write one in perl or python or something. for python in debian, there is: python-jabberbot - easily write simple Jabber bots python-nbxmpp - Non blocking Jabber/XMPP Python library python-xmpp - Python library for communication with XMPP (Jabber) servers python-pyxmpp - XMPP and Jabber implementation for Python python-sleekxmpp - Python XMPP (Jabber) Library Implementing Everything as a Plugin python3-slixmpp - Threadless, event-based XMPP Python 3 library python3-slixmpp-lib - Threadless, event-based XMPP Python 3 library (optional binary module) slixmpp seems to be python3 only. the others have python & python3 versions. And for perl, there is: libanyevent-xmpp-perl - implementation of the XMPP Protocol libnet-xmpp-perl - XMPP Perl library BTW, sendxmpp is a perl script that uses libnet-xmpp-perl (aka Net::XMPP) so you already have that installed. It shouldn't be too hard to hack up a modified version of sendxmpp that checks if the recipient account has been logged in recently before sending the message. maybe make it a generic subroutine (e.g. recipient(s), max seconds since last seen, and message as args) and submit it as a patch upstream. Looking at the man pages in the package, Net::XMPP::Presence will probably have what you need. or you could do it the crude/slack/easy way and just send an email every time as well as attempting a jabber message. and just in case email is down, use curl or lynx or something to fetch a specific URL (CGI script) from some other server you control. craig -- craig sanders <cas@taz.net.au>

On Wednesday, 24 May 2017 10:47:34 PM AEST Craig Sanders via luv-main wrote:
libnet-xmpp-perl - XMPP Perl library
BTW, sendxmpp is a perl script that uses libnet-xmpp-perl (aka Net::XMPP) so you already have that installed. It shouldn't be too hard to hack up a modified version of sendxmpp that checks if the recipient account has been logged in recently before sending the message. maybe make it a generic subroutine (e.g. recipient(s), max seconds since last seen, and message as args) and submit it as a patch upstream. Looking at the man pages in the package, Net::XMPP::Presence will probably have what you need.
I'm not much good at Python so the Perl libraries seem like a better option. Your suggestion of modifying sendxmpp is a good one. I had thought of having a monitor script that triggers an alert if I'm not logged in and Jabber's someone else. But your idea of modifying sendxmpp and sending patches upstream seems best. -- My Main Blog http://etbe.coker.com.au/ My Documents Blog http://doc.coker.com.au/
participants (2)
-
Craig Sanders
-
Russell Coker