in progress
This commit is contained in:
parent
362710ffa8
commit
4ee5939b13
490 changed files with 14041 additions and 0 deletions
97
roles/nagios_server/files/plugins/xmppsend.py
Normal file
97
roles/nagios_server/files/plugins/xmppsend.py
Normal file
|
@ -0,0 +1,97 @@
|
|||
#!/usr/bin/python -tt
|
||||
# skvidal@fedoraproject.org
|
||||
# gplv2+
|
||||
|
||||
#nagios definition
|
||||
## 'host-notify-by-jabber' command definition
|
||||
#define command{
|
||||
# command_name host-notify-by-jabber
|
||||
# command_line /usr/local/bin/xmppsend -a config.ini "Host '$HOSTALIAS$' is $HOSTSTATE$ - Info : $HOSTOUTPUT$" $CONTACTPAGER$
|
||||
# }
|
||||
#
|
||||
## 'notify-by-jabber' command definition
|
||||
#define command{
|
||||
# command_name notify-by-jabber
|
||||
# command_line /usr/local/bin/xmppsend -a config.ini "$NOTIFICATIONTYPE$ $HOSTNAME$ $SERVICED ESC$ $SERVICESTATE$ $SERVICEOUTPUT$ $LONGDATETIME$" $CONTACTPAGER$
|
||||
# }
|
||||
#
|
||||
|
||||
# needs a config file to get username/pass/other info format is:
|
||||
|
||||
#[xmpp_nagios]
|
||||
#server=jabber.org
|
||||
#resource=nagios
|
||||
#port=5222
|
||||
#username=yourusername
|
||||
#password=yourpasssword
|
||||
|
||||
defaults = {'server':'jabber.org',
|
||||
'port':'5222',
|
||||
'resource':'nagios'}
|
||||
|
||||
# until xmppony is inplace
|
||||
|
||||
import warnings
|
||||
warnings.simplefilter("ignore")
|
||||
|
||||
import xmpp
|
||||
from xmpp.protocol import Message
|
||||
|
||||
|
||||
from optparse import OptionParser
|
||||
import ConfigParser
|
||||
import sys
|
||||
import os
|
||||
|
||||
|
||||
parser = OptionParser()
|
||||
parser.add_option("-a", dest="authfile", default=None, help="file to retrieve username/password/server/port/resource information from")
|
||||
opts, args = parser.parse_args()
|
||||
|
||||
conf = ConfigParser.ConfigParser(defaults=defaults)
|
||||
if not opts.authfile or not os.path.exists(opts.authfile):
|
||||
print "no config/auth file specified, can't continue"
|
||||
sys.exit(1)
|
||||
|
||||
conf.read(opts.authfile)
|
||||
if not conf.has_section('xmpp_nagios') or not conf.has_option('xmpp_nagios', 'username') or not conf.has_option('xmpp_nagios', 'password'):
|
||||
print "cannot find at least one of: config section 'xmpp_nagios' or username or password"
|
||||
sys.exit(1)
|
||||
server = conf.get('xmpp_nagios', 'server')
|
||||
username = conf.get('xmpp_nagios', 'username')
|
||||
password = conf.get('xmpp_nagios', 'password')
|
||||
resource = conf.get('xmpp_nagios', 'resource')
|
||||
port = conf.get('xmpp_nagios', 'port')
|
||||
|
||||
|
||||
if len(args) < 1:
|
||||
print "xmppsend message [to whom, multiple args]"
|
||||
sys.exit(1)
|
||||
|
||||
msg = args[0]
|
||||
|
||||
msg = msg.replace('\\n', '\n')
|
||||
|
||||
c = xmpp.Client(server=server, port=port, debug=[])
|
||||
con = c.connect()
|
||||
if not con:
|
||||
print "Error: could not connect to server: %s:%s" % (c.Server, c.Port)
|
||||
sys.exit(1)
|
||||
|
||||
auth = c.auth(user=username, password=password, resource=resource)
|
||||
if not auth:
|
||||
print "Error: Could not authenticate to server: %s:%s" % (c.Server, c.Port)
|
||||
sys.exit(1)
|
||||
|
||||
if len(args) < 2:
|
||||
r = c.getRoster()
|
||||
for user in r.keys():
|
||||
if user == username:
|
||||
continue
|
||||
c.send(Message(user, '%s' % msg))
|
||||
else:
|
||||
for user in args[1:]:
|
||||
c.send(Message(user, '%s' % msg))
|
||||
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue