diff --git a/.github/prepare_debian.sh b/.github/prepare_debian.sh index 5222659e..7f5592b4 100755 --- a/.github/prepare_debian.sh +++ b/.github/prepare_debian.sh @@ -5,13 +5,18 @@ set -e export DEBIAN_FRONTEND=noninteractive -sed "s/main/non-free contrib/g" /etc/apt/sources.list.d/debian.sources > /etc/apt/sources.list.d/debian-nonfree.sources -apt-get update -apt-get -y install software-properties-common -if [ $(lsb_release -is) = "Debian" ]; then - apt-add-repository non-free - apt-get update +source /etc/os-release + +if [ ${ID} = "debian" ]; then + if [ -f /etc/apt/sources.list.d/debian.sources ]; then + sed "s/main/non-free contrib/g" /etc/apt/sources.list.d/debian.sources > /etc/apt/sources.list.d/debian-nonfree.sources + else + apt-get update + apt-get -y install software-properties-common + apt-add-repository non-free + fi fi +apt-get update apt-get -y install perl \ autotools-dev \ libdbi-dev \ @@ -83,7 +88,7 @@ cp tools/squid.conf /etc/squid/squid.conf service squid start # mariadb -service mariadb start +service mariadb start || service mysql start mysql -e "create database IF NOT EXISTS test;" -uroot # ldap diff --git a/.gitignore b/.gitignore index fdcad9fc..02ca61e1 100644 --- a/.gitignore +++ b/.gitignore @@ -246,6 +246,7 @@ NP-VERSION-FILE /plugins-scripts/check_ircd /plugins-scripts/check_log /plugins-scripts/check_mailq +/plugins-scripts/check_mssql /plugins-scripts/check_ntp /plugins-scripts/check_oracle /plugins-scripts/check_rpc diff --git a/lib/utils_base.c b/lib/utils_base.c index eb1823bb..c458cf61 100644 --- a/lib/utils_base.c +++ b/lib/utils_base.c @@ -24,7 +24,7 @@ * *****************************************************************************/ -#include "common.h" +#include "../plugins/common.h" #include #include "utils_base.h" #include @@ -319,18 +319,18 @@ char *np_extract_value(const char *varlist, const char *name, char sep) { while (1) { /* Strip any leading space */ - for (varlist; isspace(varlist[0]); varlist++); + for (; isspace(varlist[0]); varlist++); if (strncmp(name, varlist, strlen(name)) == 0) { varlist += strlen(name); /* strip trailing spaces */ - for (varlist; isspace(varlist[0]); varlist++); + for (; isspace(varlist[0]); varlist++); if (varlist[0] == '=') { /* We matched the key, go past the = sign */ varlist++; /* strip leading spaces */ - for (varlist; isspace(varlist[0]); varlist++); + for (; isspace(varlist[0]); varlist++); if (tmp = index(varlist, sep)) { /* Value is delimited by a comma */ diff --git a/plugins-root/check_dhcp.c b/plugins-root/check_dhcp.c index ad673237..147db6b3 100644 --- a/plugins-root/check_dhcp.c +++ b/plugins-root/check_dhcp.c @@ -470,10 +470,6 @@ int send_dhcp_discover(int sock){ packet_xid=random(); discover_packet.xid=htonl(packet_xid); - /**** WHAT THE HECK IS UP WITH THIS?!? IF I DON'T MAKE THIS CALL, ONLY ONE SERVER RESPONSE IS PROCESSED!!!! ****/ - /* downright bizzarre... */ - ntohl(discover_packet.xid); - /*discover_packet.secs=htons(65535);*/ discover_packet.secs=0xFF; diff --git a/plugins-scripts/check_log.sh b/plugins-scripts/check_log.sh index c623a8d6..8ecdd316 100755 --- a/plugins-scripts/check_log.sh +++ b/plugins-scripts/check_log.sh @@ -105,11 +105,11 @@ while test -n "$1"; do case "$1" in -h | --help) print_help - exit "$STATE_OK" + exit "$STATE_UNKNOWN" ;; -V | --version) print_revision "$PROGNAME" "$REVISION" - exit "$STATE_OK" + exit "$STATE_UNKNOWN" ;; -F | --filename) logfile=$2 diff --git a/plugins-scripts/check_oracle.sh b/plugins-scripts/check_oracle.sh index b14ec50e..59981386 100755 --- a/plugins-scripts/check_oracle.sh +++ b/plugins-scripts/check_oracle.sh @@ -86,20 +86,20 @@ esac # Information options case "$cmd" in --help) - print_help - exit "$STATE_OK" + print_help + exit "$STATE_UNKNOWN" ;; -h) - print_help - exit "$STATE_OK" + print_help + exit "$STATE_UNKNOWN" ;; --version) - print_revision "$PROGNAME" "$REVISION" - exit "$STATE_OK" + print_revision "$PROGNAME" "$REVISION" + exit "$STATE_UNKNOWN" ;; -V) - print_revision "$PROGNAME" "$REVISION" - exit "$STATE_OK" + print_revision "$PROGNAME" "$REVISION" + exit "$STATE_UNKNOWN" ;; esac diff --git a/plugins-scripts/check_sensors.sh b/plugins-scripts/check_sensors.sh index 921e7b36..866e0e0f 100755 --- a/plugins-scripts/check_sensors.sh +++ b/plugins-scripts/check_sensors.sh @@ -26,19 +26,19 @@ print_help() { case "$1" in --help) print_help - exit "$STATE_OK" + exit "$STATE_UNKNOWN" ;; -h) print_help - exit "$STATE_OK" + exit "$STATE_UNKNOWN" ;; --version) print_revision "$PROGNAME" "$REVISION" - exit "$STATE_OK" + exit "$STATE_UNKNOWN" ;; -V) print_revision "$PROGNAME" "$REVISION" - exit "$STATE_OK" + exit "$STATE_UNKNOWN" ;; *) sensordata=$(sensors 2>&1) diff --git a/plugins/check_curl.c b/plugins/check_curl.c index be5740d7..100a97aa 100644 --- a/plugins/check_curl.c +++ b/plugins/check_curl.c @@ -2217,11 +2217,10 @@ curlhelp_parse_statusline (const char *buf, curlhelp_statusline *status_line) if( strchr( p, '.' ) != NULL ) { /* HTTP 1.x case */ - char *ppp; - ppp = strtok( p, "." ); + strtok( p, "." ); status_line->http_major = (int)strtol( p, &pp, 10 ); if( *pp != '\0' ) { free( first_line_buf ); return -1; } - ppp = strtok( NULL, " " ); + strtok( NULL, " " ); status_line->http_minor = (int)strtol( p, &pp, 10 ); if( *pp != '\0' ) { free( first_line_buf ); return -1; } p += 4; /* 1.x SP */ diff --git a/plugins/check_http.c b/plugins/check_http.c index 8c03bc8b..6956a726 100644 --- a/plugins/check_http.c +++ b/plugins/check_http.c @@ -1391,7 +1391,6 @@ char *unchunk_content(const char *content) { // https://en.wikipedia.org/wiki/Chunked_transfer_encoding // https://www.rfc-editor.org/rfc/rfc7230#section-4.1 char *result = NULL; - size_t content_length = strlen(content); char *start_of_chunk; char* end_of_chunk; long size_of_chunk; diff --git a/plugins/check_mysql.c b/plugins/check_mysql.c index 0cba50e6..6cfa70ed 100644 --- a/plugins/check_mysql.c +++ b/plugins/check_mysql.c @@ -551,7 +551,7 @@ print_help (void) printf (" %s\n", _("Exit with CRITICAL status if slave server is more then INTEGER seconds")); printf (" %s\n", _("behind master")); printf (" %s\n", "-l, --ssl"); - printf (" %s\n", _("Use ssl encryptation")); + printf (" %s\n", _("Use ssl encryption")); printf (" %s\n", "-C, --ca-cert=STRING"); printf (" %s\n", _("Path to CA signing the cert")); printf (" %s\n", "-a, --cert=STRING"); diff --git a/plugins/check_nt.c b/plugins/check_nt.c index 59c135db..d73d83ce 100644 --- a/plugins/check_nt.c +++ b/plugins/check_nt.c @@ -341,7 +341,7 @@ int main(int argc, char **argv){ 2) If the counter you're going to measure is percent-based, the code will detect the percent sign in its name and will attribute minimum (0%) and maximum (100%) - values automagically, as well the ¨%" sign to graph units. + values automagically, as well the "%" sign to graph units. 3) OTOH, if the counter is "absolute", you'll have to provide the following the counter unit - that is, the dimensions of the counter you're getting. Examples: diff --git a/plugins/check_pgsql.c b/plugins/check_pgsql.c index 94a03b21..61990335 100644 --- a/plugins/check_pgsql.c +++ b/plugins/check_pgsql.c @@ -517,7 +517,10 @@ print_help (void) printf (" %s\n", _("connecting to the server. The result from the query has to be numeric.")); printf (" %s\n", _("Multiple SQL commands, separated by semicolon, are allowed but the result ")); printf (" %s\n", _("of the last command is taken into account only. The value of the first")); - printf (" %s\n\n", _("column in the first row is used as the check result.")); + printf (" %s\n", _("column in the first row is used as the check result. If a second column is")); + printf (" %s\n", _("present in the result set, this is added to the plugin output with a")); + printf (" %s\n", _("prefix of \"Extra Info:\". This information can be displayed in the system")); + printf (" %s\n\n", _("executing the plugin.")); printf (" %s\n", _("See the chapter \"Monitoring Database Activity\" of the PostgreSQL manual")); printf (" %s\n\n", _("for details about how to access internal statistics of the database server.")); @@ -557,6 +560,7 @@ do_query (PGconn *conn, char *query) PGresult *res; char *val_str; + char *extra_info; double value; char *endptr = NULL; @@ -621,6 +625,12 @@ do_query (PGconn *conn, char *query) printf ("|query=%f;%s;%s;;\n", value, query_warning ? query_warning : "", query_critical ? query_critical : ""); + if (PQnfields (res) > 1) { + extra_info = PQgetvalue (res, 0, 1); + if (extra_info != NULL) { + printf ("Extra Info: %s\n", extra_info); + } + } return my_status; } diff --git a/plugins/runcmd.c b/plugins/runcmd.c index 1bd2ca1f..c1d675d0 100644 --- a/plugins/runcmd.c +++ b/plugins/runcmd.c @@ -44,6 +44,8 @@ # include #endif +#include "./utils.h" + /** macros **/ #ifndef WEXITSTATUS # define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)