mirror of
https://github.com/FAUSheppy/monitoring-tools
synced 2025-12-06 03:21:35 +01:00
73 lines
3.4 KiB
Python
Executable File
73 lines
3.4 KiB
Python
Executable File
#!/usr/bin/python3
|
|
import sys
|
|
import argparse
|
|
import requests
|
|
import os
|
|
|
|
if __name__ == "__main__":
|
|
|
|
parser = argparse.ArgumentParser(description='Send Notifications via Atlantis Dispatcher',
|
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
|
|
|
# incident information #
|
|
parser.add_argument('-4', '--ipv6', required=False, help="Address (v4)")
|
|
parser.add_argument('-6', '--ipv4', required=False, help="Address (v6)")
|
|
parser.add_argument('-b', '--author', required=False, help="Author")
|
|
parser.add_argument('-c', '--comment', required=False, help="Comment")
|
|
parser.add_argument('-d', '--date', required=False, help="Date")
|
|
parser.add_argument('-e', '--service-name', required=False, help="Service Name")
|
|
parser.add_argument('-f', '--from', required=False, help="From")
|
|
parser.add_argument('-i', '--icingaweb-url', required=False, help="Icingaweb URL")
|
|
parser.add_argument('-l', '--service-host', required=False, help="Hostname")
|
|
parser.add_argument('-n', '--service-host-alt', required=False, help="Hostdisplay Name")
|
|
parser.add_argument('-o', '--service-output', required=False, help="Service Output")
|
|
parser.add_argument('-r', '--user-email', required=False, help="User Email")
|
|
parser.add_argument('-s', '--service-state', required=False, help="Service State")
|
|
parser.add_argument('-t', '--service-type', required=False, help="Type")
|
|
parser.add_argument('-u', '--service-display-name', required=False, help="Service Display Name")
|
|
|
|
# connection configuration #
|
|
parser.add_argument('-w', '--target-port', default=6000, help="Signal Gateway Port")
|
|
parser.add_argument('-x', '--target-host', default="localhost", help="Signal Gateway Address")
|
|
parser.add_argument('-y', '--target-proto', default="http", help="Signal proto")
|
|
|
|
# deprecated compability options FIXME: remove after Q1/2024 #
|
|
parser.add_argument('-v', required=False, help="Deprecated. Compatibility only. Has no Effect.")
|
|
|
|
# owners and groups to pass to smart send #
|
|
parser.add_argument('--owners', nargs='+', required=False)
|
|
parser.add_argument('--owner-groups', nargs='+', required=False)
|
|
parser.add_argument('--legacy-gateway', default=False, required=False)
|
|
|
|
parser.add_argument('--dispatcher-pass-file', default="/etc/icinga2/dispatcher-pass-file.txt")
|
|
|
|
args = parser.parse_args()
|
|
|
|
# check pass file #
|
|
user, password = (None, None)
|
|
if os.path.isfile(args.dispatcher_pass_file) or os.path.islink(args.dispatcher_pass_file):
|
|
with open(args.dispatcher_pass_file) as f:
|
|
user, password = f.read().split()
|
|
|
|
# build message #
|
|
serviceName = args.service_name
|
|
if args.service_display_name:
|
|
serviceName = args.service_display_name
|
|
|
|
# create and send request #
|
|
base_url = "{proto}://{host}:{port}/".format(host=args.target_host,
|
|
port=args.target_port,
|
|
proto=args.target_proto)
|
|
|
|
if args.legacy_gateway:
|
|
url = base_url + "/send-all-icinga"
|
|
requests.post(url, json=vars(args))
|
|
else:
|
|
url = base_url + "/smart-send"
|
|
struct = {
|
|
"users" : args.owners,
|
|
"groups" : args.owner_groups,
|
|
"data" : vars(args)
|
|
}
|
|
requests.post(url, json=struct, auth=(user, password))
|