_ _ | |_ ___ _ __ _ __ ___ (_)_ __ __ _ __ _ | __/ _ \ '__| '_ ` _ \| | '_ \ / _` |/ _` | | || __/ | | | | | | | | | | | (_| | (_| | \__\___|_| |_| |_| |_|_|_| |_|\__, |\__,_| |___/ https://github.com/seibert-media/terminga - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A TUI for Icinga2. Dependencies ------------ - Python 3.7+ - python-requests Installation ------------ Clone this repo and run `terminga`. Don't forget the configuration, of course. Configuration ------------- Create ~/.terminga, which consists of a JSON dict: { "icinga_url": "https://icinga-terminga-proxy.your-company.com", "api_auth": { "username": "myapiuser", "password": "myapiuserspassword" }, "external_tool": "mytool -s __SELECTION__", "group_filters": { "hostgroup": "is_customer-no", "servicegroup": "is_customer-no" } } Use a valid API user, not your regular Icinga user. "external_tool" contains a path to a user-supplied script and this setting is optional. It will be invoked when you press "e" in terminga. "__SELECTION__" will be replaced by the path to a file that contains your selection: First line is host name, second line service name, third line check output (with lines separated by \r rather than \n). This repeats for each selected item, i.e. your script will only be called once, no matter how many items you selected. It is the responsibility of your script to remove this file after it has been read. You will want to use terminga-proxy on your Icinga server, if you're still running a version of Icinga2 that leaks memory on API requests: https://github.com/seibert-media/terminga-proxy "group_filters" is optional, too. It can be used to view only those host and service objects that belong to certain groups (must be configured within Icinga). "group_filters" is ONLY supported if you are using terminga-proxy.