I have a django app that shows host links to internal employees, wanted to grab status from Nagios without having to go to a bunch of trouble screen scraping. Found this quick script from Alex Wright, and modified it to work where I can call it from a Django function, then I just loop through my models and match the json object to the model.

Steps to deploy

Upload file: below in github script link to your Nagios4 server. You can put this in your /usr/lib/cgi-bin/nagios4 directory and chmod +x

The above folder is password protected so you would need to authenticate.

You should add a new user to your /etc/nagios4/htdigest.users file. htdigest -c htdigest.users Nagios4 apicall

You might need to add .py to your http.conf cgi handlers if you use apache.

Django Code

Django Function:

def getNagiosHostStatus():
    nagiospass = 'you-forgot-about-dre-1999'
    nagiosuser = 'apicall'
    from requests.auth import HTTPDigestAuth
        r = requests.get('', auth=HTTPDigestAuth(nagiosuser,nagiospass))
        data = r.json()
        data = None

    return(data) on GitHub