summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLorenz <12514511+RincewindsHat@users.noreply.github.com>2022-11-25 09:30:05 (GMT)
committerGitHub <noreply@github.com>2022-11-25 09:30:05 (GMT)
commit917dba07fded8ef04967183a4c0443b5cce2db82 (patch)
treebd3017f225186b3e7f29db257f0d3b5790846ff2
parent4ff0dfa44306c4e8a7dc46fcb1c508f7a191638b (diff)
parent1bc6d81651c5b5fe865515d420fc2772f4997059 (diff)
downloadmonitoring-plugins-917dba0.tar.gz
Merge branch 'master' into dev/check_ssh-patches
-rw-r--r--.github/dependabot.yml10
-rwxr-xr-x.github/prepare_debian.sh61
-rw-r--r--.github/workflows/codeql-analysis.yml4
-rw-r--r--.github/workflows/test.yml4
-rw-r--r--AUTHORS2
-rw-r--r--NEWS109
-rw-r--r--THANKS.in19
-rw-r--r--configure.ac126
-rw-r--r--doc/RELEASING.md6
-rwxr-xr-xpkg/solaris/solpkg2
-rwxr-xr-xplugins-scripts/check_sensors.sh4
-rw-r--r--plugins/check_curl.c22
-rw-r--r--plugins/check_disk.c67
-rw-r--r--plugins/check_http.c23
-rw-r--r--plugins/check_load.c122
-rw-r--r--plugins/check_ntp.c8
-rw-r--r--plugins/check_pgsql.c48
-rw-r--r--plugins/check_swap.c9
-rw-r--r--plugins/t/check_curl.t39
-rw-r--r--plugins/t/check_load.t15
-rw-r--r--plugins/utils.c24
21 files changed, 435 insertions, 289 deletions
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..282063c
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,10 @@
1version: 2
2updates:
3 - package-ecosystem: github-actions
4 directory: "/"
5 schedule:
6 interval: daily
7 time: "04:00"
8 pull-request-branch-name:
9 separator: "-"
10 open-pull-requests-limit: 10
diff --git a/.github/prepare_debian.sh b/.github/prepare_debian.sh
index 4021c10..d8a76da 100755
--- a/.github/prepare_debian.sh
+++ b/.github/prepare_debian.sh
@@ -11,21 +11,51 @@ if [ $(lsb_release -is) = "Debian" ]; then
11 apt-add-repository non-free 11 apt-add-repository non-free
12 apt-get update 12 apt-get update
13fi 13fi
14apt-get -y install perl autotools-dev libdbi-dev libldap2-dev libpq-dev libradcli-dev libnet-snmp-perl procps 14apt-get -y install perl \
15apt-get -y install libdbi0-dev libdbd-sqlite3 libssl-dev dnsutils snmp-mibs-downloader libsnmp-perl snmpd 15 autotools-dev \
16apt-get -y install fping snmp netcat-openbsd smbclient vsftpd apache2 ssl-cert postfix libhttp-daemon-ssl-perl 16 libdbi-dev \
17apt-get -y install libdbd-sybase-perl libnet-dns-perl 17 libldap2-dev \
18apt-get -y install slapd ldap-utils 18 libpq-dev \
19apt-get -y install gcc make autoconf automake gettext 19 libradcli-dev \
20apt-get -y install faketime 20 libnet-snmp-perl \
21apt-get -y install libmonitoring-plugin-perl 21 procps \
22apt-get -y install libcurl4-openssl-dev 22 libdbi0-dev \
23apt-get -y install liburiparser-dev 23 libdbd-sqlite3 \
24apt-get -y install squid 24 libssl-dev \
25apt-get -y install openssh-server 25 dnsutils \
26apt-get -y install mariadb-server mariadb-client libmariadb-dev 26 snmp-mibs-downloader \
27apt-get -y install cron iputils-ping 27 libsnmp-perl \
28apt-get -y install iproute2 28 snmpd \
29 fping \
30 snmp \
31 netcat-openbsd \
32 smbclient \
33 vsftpd \
34 apache2 \
35 ssl-cert \
36 postfix \
37 libhttp-daemon-ssl-perl \
38 libdbd-sybase-perl \
39 libnet-dns-perl \
40 slapd \
41 ldap-utils \
42 gcc \
43 make \
44 autoconf \
45 automake \
46 gettext \
47 faketime \
48 libmonitoring-plugin-perl \
49 libcurl4-openssl-dev \
50 liburiparser-dev \
51 squid \
52 openssh-server \
53 mariadb-server \
54 mariadb-client \
55 libmariadb-dev \
56 cron \
57 iputils-ping \
58 iproute2
29 59
30# remove ipv6 interface from hosts 60# remove ipv6 interface from hosts
31if [ $(ip addr show | grep "inet6 ::1" | wc -l) -eq "0" ]; then 61if [ $(ip addr show | grep "inet6 ::1" | wc -l) -eq "0" ]; then
@@ -37,7 +67,6 @@ ip addr show
37 67
38cat /etc/hosts 68cat /etc/hosts
39 69
40
41# apache 70# apache
42a2enmod ssl 71a2enmod ssl
43a2ensite default-ssl 72a2ensite default-ssl
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index afe6ab4..ab8bfaa 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -39,11 +39,11 @@ jobs:
39 39
40 steps: 40 steps:
41 - name: Checkout repository 41 - name: Checkout repository
42 uses: actions/checkout@v2 42 uses: actions/checkout@v3
43 43
44 # Initializes the CodeQL tools for scanning. 44 # Initializes the CodeQL tools for scanning.
45 - name: Initialize CodeQL 45 - name: Initialize CodeQL
46 uses: github/codeql-action/init@v1 46 uses: github/codeql-action/init@v2
47 with: 47 with:
48 languages: ${{ matrix.language }} 48 languages: ${{ matrix.language }}
49 # If you wish to specify custom queries, you can do so here or in a config file. 49 # If you wish to specify custom queries, you can do so here or in a config file.
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 0f93930..80d49f7 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -24,7 +24,7 @@ jobs:
24 #... 24 #...
25 steps: 25 steps:
26 - name: Git clone repository 26 - name: Git clone repository
27 uses: actions/checkout@v2 27 uses: actions/checkout@v3
28 #- name: Setup tmate session, see https://github.com/marketplace/actions/debugging-with-tmate 28 #- name: Setup tmate session, see https://github.com/marketplace/actions/debugging-with-tmate
29 # uses: mxschmitt/action-tmate@v3 29 # uses: mxschmitt/action-tmate@v3
30 - name: Run the tests on ${{ matrix.distro }} 30 - name: Run the tests on ${{ matrix.distro }}
@@ -40,7 +40,7 @@ jobs:
40 ${{ matrix.distro }} \ 40 ${{ matrix.distro }} \
41 /bin/sh -c '${{ matrix.prepare }} && \ 41 /bin/sh -c '${{ matrix.prepare }} && \
42 tools/setup && \ 42 tools/setup && \
43 ./configure --enable-libtap --with-ipv6=no && \ 43 ./configure --enable-libtap --with-ipv6=no && \
44 make && \ 44 make && \
45 make test' 45 make test'
46 docker container prune -f 46 docker container prune -f
diff --git a/AUTHORS b/AUTHORS
index 2d455be..1b1a036 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -22,3 +22,5 @@ Jan Wagner
22Holger Weiss 22Holger Weiss
23Michael Wirtgen 23Michael Wirtgen
24Oliver Skibbe 24Oliver Skibbe
25Andreas Baumann
26Lorenz Kästle
diff --git a/NEWS b/NEWS
index 3790e8a..b674391 100644
--- a/NEWS
+++ b/NEWS
@@ -1,9 +1,115 @@
1This file documents the major additions and syntax changes between releases. 1This file documents the major additions and syntax changes between releases.
2 2
32.4 [...] 32.3.2 20th Oct 2022
4 GENERAL
5 Use netcat-openbsd for debian explicitely (by @RincewindsHat #1704)
6 Replace egrep with grep -E (by @RincewindsHat #1791)
7 Use silent automake by default (by @RincewindsHat #1747)
8
9 SINGLE PLUGINS
10 check_by_ssh: added option to exit with an warning, if there is output on STDERR (by @nafets #1301)
11 check_by_ssh: Add "-U" flag (#1123). (by @archiecobbs #1774)
12 check_by_ssh: Let ssh decide if a host is valid, enables usage of ssh .config file (by @RincewindsHat #1691)
13 check_curl: Add an option to check_curl to verify the peer certificate & host using the system CA's (by @bazzisoft #1669)
14 check_curl: fixed -ffollow for HTTP/2.0 (Fixes #1685): added major_version parsing to PicoHTTPParser (by @andreasbaumann #1742)
15 check_curl: fixes check_curl: "CRITICAL - Cannot retrieve certificate subject." (by @andreasbaumann #1689)
16 check_curl: fix if http header contains leading spaces (by @sni #1666)
17 check_curl: Update check_curl.c to display a specific human-readable error message where possible (by @bazzisoft #1668)
18 check_curl: verify certificates option should not force SSL to be used (by @bazzisoft #1688)
19 check_disk: Description for -M was the wrong way around (by @RincewindsHat #1746)
20 check_disk: Fixing the stuff that is broken on btrfs (by @waja #1388)
21 check_disk: Fix perfdata for big values for check disk (by @RincewindsHat #1714)
22 check_disk_smb: Add configfile feature (by @Napsty #1402)
23 check_disk_smb: Add timeout (by @cdruee #1770)
24 check_dns: Add --expect-nxdomain (by @Jonny007-MKD #1623)
25 check_dns: split multiple IP addresses passed in one -a argument (by @DerDakon #1649)
26 check_file_age: Make size parameter a little bit more intelligible (by @RincewindsHat #1730)
27 check_fping: Implements 'host-alive' mode (Closes. #1027) (by @waja #1740)
28 check_game: Update Url to qstat (by @RincewindsHat #1725)
29 check_http: changed 'STATE_CRITICAL' to 'STATE_WARNING' for infinite loop (by @xFuture603 #1690)
30 check_http: Increase regexp limit (by @hydrapolic #1566)
31 check_http: Support http redirect (by @waja #1449)
32 check_icmp: buffer offerflow (by @RincewindsHat #1733)
33 check_icmp: delay set_source_ip() until address_family is detected (by @ghciv6 #1735)
34 check_icmp: Fix "Invalid Argument" from sendmsg() under FreeBSD 13.1 and "setsockopt failed" for TTL setting (by @eriksejr #1771)
35 check_icmp: Fix pkt perfdata in check_host mode (by @sjoegren #1721)
36 check_ldap: Allows check_ldap to read password from environment variable (by @mullumaus #1724)
37 check_load: add LOAD prefix to load plugin (by @haraldj #1694)
38 check_load: Display total and scaled load values if check_load scales the values (by number of CPUs by @RincewindsHat #1778)
39 check_log: Missing oldlog now aborts check_log (by @RincewindsHat #1732)
40 check_mailq: Add mailq -C option for config dir or config file (by @leeclemens #1490)
41 check_mailq: Check mailq domain specific warnings (by @RincewindsHat #1731)
42 check_mailq: Fix regexp for nullmailer "mailq" output (by @darksoul42 #1493)
43 check_mysql: fix segfaults with mysql-connector-c #1562 (by @ghciv6 #1644)
44 check_pgsql: add --queryname parameter to check_pgsql (by @datamuc #1741)
45 check_ping: Do not show RTA if no connection was possible (by @RincewindsHat #1697)
46 check_ping: understang ping6 output from iputils package (by @glensc #1412)
47 check_proc: Fix check proc ps detection (by @sni #1712)
48 check_procs: exchange needle and haystack in strstr() for proper st… (by @wolfgangkarall #1654)
49 check_smtp: add -L flag to support LMTP (LHLO instead of HELO/EHLO). (by @ghen2 #1715)
50 check_snmp: Added option for null zero length string exit codes (by @FracKenA #1496)
51 check_snmp: fix performance thresholds when using multiple oids (by @sni #1722)
52 check_snmp fix segfaults (by @adrb #1589)
53 check_snmp: put the "c" (to mark a counter) after the perfdata value (by @lausser #1465)
54 check_swap: fix parsing swap values (by @sni #1780)
55 check_swap: Fix perfdata for check swap (by @RincewindsHat #1707)
56 check_swap: Fix unit for total in perfdata (by @RincewindsHat #1779)
57 check_swap: Handle cached swap (by @mdavranche #1642)
58 check_swap: Small fix to threshold validation and style (indentation) fixes (by @RincewindsHat #1723)
59 check_ups: Fix possible overflow in check_ups (by @phibos #1727)
60 check_uptime: Add option to report uptime in days instead of seconds (by @amotl #1750)
61 check_uptime: Fix/improve output message "Uptime is ..." (by @amotl #1751)
62
63 MULTIPLE PLUGINS
64 check_http, check_curl: added --max-redirs=N option (feature #1684) (by @andreasbaumann #1744)
65 check_http, check_curl: Enhancement --continue-after-certificate (backport from nagios-plugins) (by @andreasbaumann #1762)
66 check_http, check_curl: Remove check_http and check_curl test which are somehow always failing (by @RincewindsHat #1777)
67 check_log, check_oracle, check_sensors: Several fixes shellcheck complaining about (by @waja #1459)
68 sslutils: use chain from client certificates (by @tobiaswiese #1664)
69
70 NON FUNCTIONAL CHANGES
71 Trivial source code whitespace formatting fixes to standard. (by @ziesemer #1424)
72 docs: fix simple typo, conspicuosly -> conspicuously (by @timgates42 #1652)
73 Migrate to GitHub actions (by @jacobbaungard #1686)
74 Point to Icinga Exchange instead of dead Monitoring Exchange (by @RincewindsHat #1737)
75 github actions: fix check_users test case (by @sni #1713)
76 Add CodeQL checks (by @phibos #1682)
77 Fix some QL problems (by @RincewindsHat #1729)
78 Update CodeQL and update runner before installing (by @RincewindsHat #1775)
79 check_disk: Check disk compiler warnings (by @RincewindsHat #1758)
80 check_disk: Trivial printf fix and a little bit of code style (by @RincewindsHat #1695)
81 check_http: Docs: make -C obvious (by @stblassitude #1554)
82 check_ifoperstatus: Re-attach a comment to where it actually belongs (by @peternewman #1699)
83 check_ircd: Restrict the nickname length of the test user for check_ircd (by @RincewindsHat #1710)
84 check_load: Check load compiler warnings (by @RincewindsHat #1759)
85 check_log: Modernize check log (by @RincewindsHat #1692)
86 check_mailq: remove duplicate W=i/C=i args in check_mailq.pl (by @ichdasich #1755)
87 check_ntp: Check ntp remove unused variables (by @RincewindsHat #1781)
88 check_pgsql: Using snprintf which honors the buffers size and guarantees null temination. (Closes: #1601) (by @waja #1663)
89 check_procs: Fix double percentage sign in usage (by @RincewindsHat #1743)
90 check_sensors.sh: Make shellcheck happier (by @RincewindsHat #1679)
91 check_snmp: Fixed option description authpassword -> authpasswd + whitespaces (by @RincewindsHat #1676)
92 check_swap: Check swap compiler warnings (by @RincewindsHat #1756)
93
942.3.1 10 April 2021
4 ENHANCEMENTS 95 ENHANCEMENTS
96 check_curl: Add an option to verify the peer certificate & host using the system CA's
5 97
6 FIXES 98 FIXES
99 check_icmp: fix simple typo, conspicuosly -> conspicuously
100 check_curl: fixed help, usage and errors for TLS 1.3
101 check_curl: fixed a potential buffer overflow in url buffer
102 check_dns: split multiple IP addresses passed in one -a argument
103 check_curl: added string_statuscode function for printing HTTP/1.1 and HTTP/2 correctly
104 check_curl: fix crash if http header contains leading spaces
105 check_curl: display a specific human-readable error message where possible
106 check_pgsql: Using snprintf which honors the buffers size and guarantees null termination.
107 check_snmp: put the "c" (to mark a counter) after the perfdata value
108 check_http: Increase regexp limit
109 check_http: make -C obvious
110 check_curl: Increase regexp limit (to 1024 as in check_http)
111 check_curl: make -C obvious (from check_http)
112 check_curl: backported --show-body/-B to print body (from check_http)
7 113
82.3 10th December 2020 1142.3 10th December 2020
9 ENHANCEMENTS 115 ENHANCEMENTS
@@ -529,4 +635,3 @@ This file documents the major additions and syntax changes between releases.
529 check_swap % thresholds changed to measure amount free, instead of amount used 635 check_swap % thresholds changed to measure amount free, instead of amount used
530 check_disk syntax changes for -p, -m/-M, defaults to MB instead of kB 636 check_disk syntax changes for -p, -m/-M, defaults to MB instead of kB
531 check_procs -C expects no path for the command name 637 check_procs -C expects no path for the command name
532
diff --git a/THANKS.in b/THANKS.in
index 7d1d1ff..8920140 100644
--- a/THANKS.in
+++ b/THANKS.in
@@ -381,3 +381,22 @@ Michael Kraus
381Patrick Rauscher 381Patrick Rauscher
382Prathamesh Bhanuse 382Prathamesh Bhanuse
383Valentin Vidic 383Valentin Vidic
384Barak Shohat
385Florian Lohoff
386Stefan Bethke
387Tim Gates
388Tomas Mozes
389Aksel Sjögren
390Andreas Motl
391Claudio Kuenzler
392Daniel Uhlmann
393Eric Wunderlin
394Geert Hendrickx
395Ken D
396Klaus Ethgen
397Lee Clemens
398Linda Guo
399Peter Newman
400Tobias Fiebig
401Tobias Wiese
402Wolfgang Karall-Ahlborn
diff --git a/configure.ac b/configure.ac
index 8c5ca70..87a84a0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -427,7 +427,7 @@ if test "$ac_cv_header_utmpx_h" = "no" -a "$ac_cv_header_wtsapi32_h" = "no"
427then 427then
428 AC_PATH_PROG(PATH_TO_WHO,who) 428 AC_PATH_PROG(PATH_TO_WHO,who)
429 429
430 if [$PATH_TO_WHO -q 2>/dev/null | egrep -i "^# users=[0-9]+$" >/dev/null] 430 if [$PATH_TO_WHO -q 2>/dev/null | grep -E -i "^# users=[0-9]+$" >/dev/null]
431 then 431 then
432 ac_cv_path_to_who="$PATH_TO_WHO -q" 432 ac_cv_path_to_who="$PATH_TO_WHO -q"
433 else 433 else
@@ -776,7 +776,7 @@ dnl Removing this for the moment - Ton
776dnl Using /usr/ucb/ps on Solaris systems, to avoid truncation 776dnl Using /usr/ucb/ps on Solaris systems, to avoid truncation
777dnl Limitation that command name is not available 777dnl Limitation that command name is not available
778dnl elif test "$ac_cv_uname_s" = "SunOS" && /usr/ucb/ps -alxwwn 2>/dev/null | \ 778dnl elif test "$ac_cv_uname_s" = "SunOS" && /usr/ucb/ps -alxwwn 2>/dev/null | \
779dnl egrep -i ["^ *F +UID +PID +PPID +%C +PRI +NI +SZ +RSS +WCHAN +S +TT +TIME +COMMAND"] > /dev/null 779dnl grep -E -i ["^ *F +UID +PID +PPID +%C +PRI +NI +SZ +RSS +WCHAN +S +TT +TIME +COMMAND"] > /dev/null
780dnl then 780dnl then
781dnl ac_cv_ps_varlist="[&procuid,&procpid,&procppid,&procpcpu,&procvsz,&procrss,procstat,&pos]" 781dnl ac_cv_ps_varlist="[&procuid,&procpid,&procppid,&procpcpu,&procvsz,&procrss,procstat,&pos]"
782dnl ac_cv_ps_command="/usr/ucb/ps -alxwwn" 782dnl ac_cv_ps_command="/usr/ucb/ps -alxwwn"
@@ -786,7 +786,7 @@ dnl AC_MSG_RESULT([$ac_cv_ps_command])
786 786
787dnl This one is the exact same test as the next one but includes etime 787dnl This one is the exact same test as the next one but includes etime
788elif ps axwo 'stat comm vsz rss user uid pid ppid etime args' 2>/dev/null | \ 788elif ps axwo 'stat comm vsz rss user uid pid ppid etime args' 2>/dev/null | \
789 egrep -i ["^ *STAT +[UCOMAND]+ +VSZ +RSS +USER +UID +PID +PPID +ELAPSED +COMMAND"] > /dev/null 789 grep -E -i ["^ *STAT +[UCOMAND]+ +VSZ +RSS +USER +UID +PID +PPID +ELAPSED +COMMAND"] > /dev/null
790then 790then
791 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procetime,procprog,&pos]" 791 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procetime,procprog,&pos]"
792 ac_cv_ps_command="$PATH_TO_PS axwo 'stat uid pid ppid vsz rss pcpu etime comm args'" 792 ac_cv_ps_command="$PATH_TO_PS axwo 'stat uid pid ppid vsz rss pcpu etime comm args'"
@@ -797,7 +797,7 @@ then
797dnl Some gnu/linux systems (debian for one) don't like -axwo and need axwo. 797dnl Some gnu/linux systems (debian for one) don't like -axwo and need axwo.
798dnl so test for this first... 798dnl so test for this first...
799elif ps axwo 'stat comm vsz rss user uid pid ppid args' 2>/dev/null | \ 799elif ps axwo 'stat comm vsz rss user uid pid ppid args' 2>/dev/null | \
800 egrep -i ["^ *STAT +[UCOMAND]+ +VSZ +RSS +USER +UID +PID +PPID +COMMAND"] > /dev/null 800 grep -E -i ["^ *STAT +[UCOMAND]+ +VSZ +RSS +USER +UID +PID +PPID +COMMAND"] > /dev/null
801then 801then
802 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" 802 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
803 ac_cv_ps_command="$PATH_TO_PS axwo 'stat uid pid ppid vsz rss pcpu comm args'" 803 ac_cv_ps_command="$PATH_TO_PS axwo 'stat uid pid ppid vsz rss pcpu comm args'"
@@ -809,7 +809,7 @@ dnl For OpenBSD 3.2 & 3.3. Must come before ps -weo
809dnl Should also work for FreeBSD 5.2.1 and 5.3 809dnl Should also work for FreeBSD 5.2.1 and 5.3
810dnl STAT UCOMM VSZ RSS USER PPID COMMAND 810dnl STAT UCOMM VSZ RSS USER PPID COMMAND
811elif ps -axwo 'stat comm vsz rss user uid pid ppid args' 2>/dev/null | \ 811elif ps -axwo 'stat comm vsz rss user uid pid ppid args' 2>/dev/null | \
812 egrep -i ["^ *STAT +[UCOMAND]+ +VSZ +RSS +USER +UID +PID +PPID +COMMAND"] > /dev/null 812 grep -E -i ["^ *STAT +[UCOMAND]+ +VSZ +RSS +USER +UID +PID +PPID +COMMAND"] > /dev/null
813then 813then
814 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" 814 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
815 ac_cv_ps_command="$PATH_TO_PS -axwo 'stat uid pid ppid vsz rss pcpu comm args'" 815 ac_cv_ps_command="$PATH_TO_PS -axwo 'stat uid pid ppid vsz rss pcpu comm args'"
@@ -821,7 +821,7 @@ dnl Some *BSDs have different format for ps. This is mainly to catch FreeBSD 4.
821dnl Limitation: Only first 16 chars returned for ucomm field 821dnl Limitation: Only first 16 chars returned for ucomm field
822dnl Must come before ps -weo 822dnl Must come before ps -weo
823elif ps -axwo 'stat uid pid ppid vsz rss pcpu ucomm command' 2>/dev/null | \ 823elif ps -axwo 'stat uid pid ppid vsz rss pcpu ucomm command' 2>/dev/null | \
824 egrep -i ["^ *STAT +UID +PID +PPID +VSZ +RSS +%CPU +UCOMM +COMMAND"] > /dev/null 824 grep -E -i ["^ *STAT +UID +PID +PPID +VSZ +RSS +%CPU +UCOMM +COMMAND"] > /dev/null
825then 825then
826 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" 826 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
827 ac_cv_ps_command="$PATH_TO_PS -axwo 'stat uid pid ppid vsz rss pcpu ucomm command'" 827 ac_cv_ps_command="$PATH_TO_PS -axwo 'stat uid pid ppid vsz rss pcpu ucomm command'"
@@ -831,7 +831,7 @@ then
831 831
832dnl STAT UCOMM VSZ RSS USER UID PPID COMMAND 832dnl STAT UCOMM VSZ RSS USER UID PPID COMMAND
833elif ps -weo 'stat comm vsz rss user uid pid ppid etime args' 2>/dev/null | \ 833elif ps -weo 'stat comm vsz rss user uid pid ppid etime args' 2>/dev/null | \
834 egrep -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ +U[ID]+ +P[ID]+ +P[PID]+ +[ELAPSD]+ +[RGSCOMDNA]+"] >/dev/null 834 grep -E -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ +U[ID]+ +P[ID]+ +P[PID]+ +[ELAPSD]+ +[RGSCOMDNA]+"] >/dev/null
835then 835then
836 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procetime,procprog,&pos]" 836 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procetime,procprog,&pos]"
837 ac_cv_ps_command="$PATH_TO_PS -weo 'stat uid pid ppid vsz rss pcpu etime comm args'" 837 ac_cv_ps_command="$PATH_TO_PS -weo 'stat uid pid ppid vsz rss pcpu etime comm args'"
@@ -841,7 +841,7 @@ then
841 841
842dnl FreeBSD 842dnl FreeBSD
843elif ps waxco 'state command vsz rss uid user pid ppid' 2>/dev/null | \ 843elif ps waxco 'state command vsz rss uid user pid ppid' 2>/dev/null | \
844 egrep -i ["^STAT +COMMAND +VSZ +RSS +UID +USER +PID +PPID"] >/dev/null 844 grep -E -i ["^STAT +COMMAND +VSZ +RSS +UID +USER +PID +PPID"] >/dev/null
845then 845then
846 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" 846 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
847 ac_cv_ps_command="$PATH_TO_PS waxco 'state uid pid ppid vsz rss pcpu command command'" 847 ac_cv_ps_command="$PATH_TO_PS waxco 'state uid pid ppid vsz rss pcpu command command'"
@@ -851,7 +851,7 @@ then
851 851
852dnl BSD-like mode in RH 6.1 852dnl BSD-like mode in RH 6.1
853elif ps waxno 'state comm vsz rss uid user pid ppid args' 2>/dev/null | \ 853elif ps waxno 'state comm vsz rss uid user pid ppid args' 2>/dev/null | \
854 egrep -i ["^S +COMMAND +VSZ +RSS +UID +USER +PID +PPID +[RGSCOMDNA]+"] >/dev/null 854 grep -E -i ["^S +COMMAND +VSZ +RSS +UID +USER +PID +PPID +[RGSCOMDNA]+"] >/dev/null
855then 855then
856 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" 856 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
857 ac_cv_ps_command="$PATH_TO_PS waxno 'state uid pid ppid vsz rss pcpu comm args'" 857 ac_cv_ps_command="$PATH_TO_PS waxno 'state uid pid ppid vsz rss pcpu comm args'"
@@ -863,7 +863,7 @@ dnl SunOS 4.1.3:
863dnl F UID PID PPID CP PRI NI SZ RSS WCHAN STAT TT TIME COMMAND 863dnl F UID PID PPID CP PRI NI SZ RSS WCHAN STAT TT TIME COMMAND
864dnl Need the head -1 otherwise test will work because arguments are found 864dnl Need the head -1 otherwise test will work because arguments are found
865elif ps -laxnwww 2>/dev/null | head -1 | \ 865elif ps -laxnwww 2>/dev/null | head -1 | \
866 egrep -i ["^ *F(LAGS)? +UID +PID +PPID +CP +PRI +NI +(SZ)|(VSZ)|(SIZE) +RSS +WCHAN +STAT? +TTY? +TIME +COMMAND"] >/dev/null 866 grep -E -i ["^ *F(LAGS)? +UID +PID +PPID +CP +PRI +NI +(SZ)|(VSZ)|(SIZE) +RSS +WCHAN +STAT? +TTY? +TIME +COMMAND"] >/dev/null
867then 867then
868 ac_cv_ps_varlist="[&procuid,&procpid,&procppid,&procvsz,&procrss,procstat,&pos,procprog]" 868 ac_cv_ps_varlist="[&procuid,&procpid,&procppid,&procvsz,&procrss,procstat,&pos,procprog]"
869 ac_cv_ps_command="$PATH_TO_PS -laxnwww" 869 ac_cv_ps_command="$PATH_TO_PS -laxnwww"
@@ -876,7 +876,7 @@ dnl FLAGS UID PID PPID PRI NI SIZE RSS WCHAN STA TTY TIME COMMA
876dnl 100 0 1 0 0 0 776 76 c0131c8c S ffff 0:11 init [2] 876dnl 100 0 1 0 0 0 776 76 c0131c8c S ffff 0:11 init [2]
877dnl 877dnl
878elif ps laxnwww 2>/dev/null | \ 878elif ps laxnwww 2>/dev/null | \
879 egrep -i ["^ *F(LAGS)? +UID +PID +PPID +PRI +NI +(VSZ)|(SIZE) +RSS +WCHAN +STAT? TTY +TIME +COMMAND"] >/dev/null 879 grep -E -i ["^ *F(LAGS)? +UID +PID +PPID +PRI +NI +(VSZ)|(SIZE) +RSS +WCHAN +STAT? TTY +TIME +COMMAND"] >/dev/null
880then 880then
881 ac_cv_ps_varlist="[&procuid,&procpid,&procppid,procstat,&procvsz,&procrss,&pos,procprog]" 881 ac_cv_ps_varlist="[&procuid,&procpid,&procppid,procstat,&procvsz,&procrss,&pos,procprog]"
882 ac_cv_ps_command="$PATH_TO_PS laxnwww" 882 ac_cv_ps_command="$PATH_TO_PS laxnwww"
@@ -886,7 +886,7 @@ then
886 886
887dnl OpenBSD (needs to come early because -exo appears to work, but does not give all procs) 887dnl OpenBSD (needs to come early because -exo appears to work, but does not give all procs)
888elif ps -axo 'stat comm vsz rss user uid pid ppid args' 2>/dev/null | \ 888elif ps -axo 'stat comm vsz rss user uid pid ppid args' 2>/dev/null | \
889 egrep -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ +U[ID]+ +P[PID]+ +P[PID]+ +[RGSCOMDNA]+"] >/dev/null 889 grep -E -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ +U[ID]+ +P[PID]+ +P[PID]+ +[RGSCOMDNA]+"] >/dev/null
890then 890then
891 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" 891 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
892 ac_cv_ps_command="$PATH_TO_PS -axo 'stat uid pid ppid vsz rss pcpu comm args'" 892 ac_cv_ps_command="$PATH_TO_PS -axo 'stat uid pid ppid vsz rss pcpu comm args'"
@@ -899,7 +899,7 @@ dnl Has /usr/bin/ps and /sbin/ps - force sbin version
899dnl Can't use vsize and rssize because comes back with text (eg, 1.5M instead 899dnl Can't use vsize and rssize because comes back with text (eg, 1.5M instead
900dnl of 1500). Will need big changes to check_procs to support 900dnl of 1500). Will need big changes to check_procs to support
901elif /sbin/ps -eo 'stat uid pid ppid pcpu etime comm args' 2>/dev/null | \ 901elif /sbin/ps -eo 'stat uid pid ppid pcpu etime comm args' 2>/dev/null | \
902 egrep -i ["^ *S +[UID]+ +[PID]+ +[PID]+ +[%CPU]+ +[ELAPSD]+ +[COMMAND]+ +[COMMAND]+"] > /dev/null 902 grep -E -i ["^ *S +[UID]+ +[PID]+ +[PID]+ +[%CPU]+ +[ELAPSD]+ +[COMMAND]+ +[COMMAND]+"] > /dev/null
903then 903then
904 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procpcpu,procetime,procprog,&pos]" 904 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procpcpu,procetime,procprog,&pos]"
905 ac_cv_ps_command="/sbin/ps -eo 'stat uid pid ppid pcpu etime comm args'" 905 ac_cv_ps_command="/sbin/ps -eo 'stat uid pid ppid pcpu etime comm args'"
@@ -908,7 +908,7 @@ then
908 AC_MSG_RESULT([$ac_cv_ps_command]) 908 AC_MSG_RESULT([$ac_cv_ps_command])
909 909
910elif ps -eo 's comm vsz rss user uid pid ppid args' 2>/dev/null | \ 910elif ps -eo 's comm vsz rss user uid pid ppid args' 2>/dev/null | \
911 egrep -i ["^S[TAUES]* +C[OMDNA]+ +[VSIZE]+ +U[SER]+ +U[ID]+ +P[PID]+ +P[PID]+ +[RGSCOMDNA]+"] >/dev/null 911 grep -E -i ["^S[TAUES]* +C[OMDNA]+ +[VSIZE]+ +U[SER]+ +U[ID]+ +P[PID]+ +P[PID]+ +[RGSCOMDNA]+"] >/dev/null
912then 912then
913 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" 913 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
914 ac_cv_ps_command="$PATH_TO_PS -eo 's uid pid ppid vsz rss pcpu comm args'" 914 ac_cv_ps_command="$PATH_TO_PS -eo 's uid pid ppid vsz rss pcpu comm args'"
@@ -918,7 +918,7 @@ then
918 918
919dnl AIX 4.3.3 and 5.1 do not have an rss field 919dnl AIX 4.3.3 and 5.1 do not have an rss field
920elif ps -eo 'stat uid pid ppid vsz pcpu comm args' 2>/dev/null | \ 920elif ps -eo 'stat uid pid ppid vsz pcpu comm args' 2>/dev/null | \
921 egrep -i ["^ *S[TAUES]* +UID +PID +PPID +VSZ +%CPU +COMMAND +COMMAND"] >/dev/null 921 grep -E -i ["^ *S[TAUES]* +UID +PID +PPID +VSZ +%CPU +COMMAND +COMMAND"] >/dev/null
922then 922then
923 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procpcpu,procprog,&pos]" 923 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procpcpu,procprog,&pos]"
924 ac_cv_ps_command="$PATH_TO_PS -eo 'stat uid pid ppid vsz pcpu comm args'" 924 ac_cv_ps_command="$PATH_TO_PS -eo 'stat uid pid ppid vsz pcpu comm args'"
@@ -928,7 +928,7 @@ then
928 928
929dnl Solaris 2.6 929dnl Solaris 2.6
930elif ps -Ao 's comm vsz rss uid user pid ppid args' 2>/dev/null | \ 930elif ps -Ao 's comm vsz rss uid user pid ppid args' 2>/dev/null | \
931 egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PID +PPID +[RGSCOMDNA]+"] >/dev/null 931 grep -E -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PID +PPID +[RGSCOMDNA]+"] >/dev/null
932then 932then
933 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" 933 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
934 ac_cv_ps_command="$PATH_TO_PS -Ao 's uid pid ppid vsz rss pcpu comm args'" 934 ac_cv_ps_command="$PATH_TO_PS -Ao 's uid pid ppid vsz rss pcpu comm args'"
@@ -939,7 +939,7 @@ then
939 AC_MSG_RESULT([$ac_cv_ps_command]) 939 AC_MSG_RESULT([$ac_cv_ps_command])
940 940
941elif ps -Ao 'status comm vsz rss uid user pid ppid args' 2>/dev/null | \ 941elif ps -Ao 'status comm vsz rss uid user pid ppid args' 2>/dev/null | \
942 egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PID +PPID +[RGSCOMDNA]+"] >/dev/null 942 grep -E -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PID +PPID +[RGSCOMDNA]+"] >/dev/null
943then 943then
944 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" 944 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
945 ac_cv_ps_command="$PATH_TO_PS -Ao 'status uid pid ppid vsz rss pcpu comm args'" 945 ac_cv_ps_command="$PATH_TO_PS -Ao 'status uid pid ppid vsz rss pcpu comm args'"
@@ -948,7 +948,7 @@ then
948 AC_MSG_RESULT([$ac_cv_ps_command]) 948 AC_MSG_RESULT([$ac_cv_ps_command])
949 949
950elif ps -Ao 'state comm vsz rss uid user pid ppid args' 2>/dev/null | \ 950elif ps -Ao 'state comm vsz rss uid user pid ppid args' 2>/dev/null | \
951 egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PID +PPID +[RGSCOMDNA]+"] >/dev/null 951 grep -E -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PID +PPID +[RGSCOMDNA]+"] >/dev/null
952then 952then
953 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" 953 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
954 ac_cv_ps_command="$PATH_TO_PS -Ao 'state uid pid ppid vsz rss pcpu comm args'" 954 ac_cv_ps_command="$PATH_TO_PS -Ao 'state uid pid ppid vsz rss pcpu comm args'"
@@ -958,7 +958,7 @@ then
958 958
959dnl wonder who takes state instead of stat 959dnl wonder who takes state instead of stat
960elif ps -ao 'state command vsz rss user pid ppid args' 2>/dev/null | \ 960elif ps -ao 'state command vsz rss user pid ppid args' 2>/dev/null | \
961 egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PID +PPID +[RGSCOMDNA]+"] >/dev/null 961 grep -E -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PID +PPID +[RGSCOMDNA]+"] >/dev/null
962then 962then
963 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" 963 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
964 ac_cv_ps_command="$PATH_TO_PS -ao 'state uid pid ppid vsz rss pcpu command args'" 964 ac_cv_ps_command="$PATH_TO_PS -ao 'state uid pid ppid vsz rss pcpu command args'"
@@ -968,7 +968,7 @@ then
968 968
969dnl IRIX 53 969dnl IRIX 53
970elif ps -el 2>/dev/null | \ 970elif ps -el 2>/dev/null | \
971 egrep -i ["^ *F +S +UID +PID +PPID +C +PRI +NI +P +SZ +RSS +WCHAN +TTY +TIME +[RGSCOMDNA]+"] >/dev/null 971 grep -E -i ["^ *F +S +UID +PID +PPID +C +PRI +NI +P +SZ +RSS +WCHAN +TTY +TIME +[RGSCOMDNA]+"] >/dev/null
972then 972then
973 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&pos,procprog]" 973 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&pos,procprog]"
974 ac_cv_ps_command="$PATH_TO_PS -el (IRIX 53)" 974 ac_cv_ps_command="$PATH_TO_PS -el (IRIX 53)"
@@ -978,7 +978,7 @@ then
978 978
979dnl IRIX 63 979dnl IRIX 63
980elif ps -el 2>/dev/null | \ 980elif ps -el 2>/dev/null | \
981 egrep -i ["^ *F +S +UID +PID +PPID +C +PRI +NI +P +ADDR +SZ +RSS +WCHAN +TTY +TIME +[RGSCOMDNA]+"] >/dev/null 981 grep -E -i ["^ *F +S +UID +PID +PPID +C +PRI +NI +P +ADDR +SZ +RSS +WCHAN +TTY +TIME +[RGSCOMDNA]+"] >/dev/null
982then 982then
983 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&pos,procprog]" 983 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&pos,procprog]"
984 ac_cv_ps_command="$PATH_TO_PS -el (IRIX 63)" 984 ac_cv_ps_command="$PATH_TO_PS -el (IRIX 63)"
@@ -991,7 +991,7 @@ dnl S UID RUID USER RUSER PID PPID VSZ %CPU COMMAND
991dnl S 0 400 root oracle 2805 1 12904 0.00 ora_dism_SEA1X ora_dism_SEA1X 991dnl S 0 400 root oracle 2805 1 12904 0.00 ora_dism_SEA1X ora_dism_SEA1X
992dnl S 400 400 oracle oracle 19261 1 126488 0.00 tnslsnr /u01/app/oracle/product/db/11.2.0.3/bin/tnslsnr LISTENER -inherit 992dnl S 400 400 oracle oracle 19261 1 126488 0.00 tnslsnr /u01/app/oracle/product/db/11.2.0.3/bin/tnslsnr LISTENER -inherit
993elif env UNIX95=1 ps -eo 'state uid ruid user ruser pid ppid vsz pcpu comm args' 2>/dev/null | head -n 1 | \ 993elif env UNIX95=1 ps -eo 'state uid ruid user ruser pid ppid vsz pcpu comm args' 2>/dev/null | head -n 1 | \
994 egrep -i ["^ *S +UID +RUID +USER +RUSER +PID +PPID +VSZ +%CPU +COMMAND +COMMAND"] >/dev/null 994 grep -E -i ["^ *S +UID +RUID +USER +RUSER +PID +PPID +VSZ +%CPU +COMMAND +COMMAND"] >/dev/null
995then 995then
996 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procpcpu,procprog,&pos]" 996 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procpcpu,procprog,&pos]"
997 ac_cv_ps_command="$PATH_TO_ENV UNIX95=1 $PATH_TO_PS -eo 'state uid pid ppid vsz pcpu comm args'" 997 ac_cv_ps_command="$PATH_TO_ENV UNIX95=1 $PATH_TO_PS -eo 'state uid pid ppid vsz pcpu comm args'"
@@ -1003,7 +1003,7 @@ dnl AIX 4.1:
1003dnl F S UID PID PPID C PRI NI ADDR SZ RSS WCHAN TTY TIME CMD 1003dnl F S UID PID PPID C PRI NI ADDR SZ RSS WCHAN TTY TIME CMD
1004dnl 303 A 0 0 0 120 16 -- 1c07 20 24 - 0:45 swapper 1004dnl 303 A 0 0 0 120 16 -- 1c07 20 24 - 0:45 swapper
1005elif ps -el 2>/dev/null | \ 1005elif ps -el 2>/dev/null | \
1006 egrep -i ["^ *F +S +UID +PID +PPID +C +PRI +NI +ADDR +SZ +WCHAN +TTY +TIME +[RGSCOMDNA]+"] >/dev/null 1006 grep -E -i ["^ *F +S +UID +PID +PPID +C +PRI +NI +ADDR +SZ +WCHAN +TTY +TIME +[RGSCOMDNA]+"] >/dev/null
1007then 1007then
1008 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&pos,procprog]" 1008 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&pos,procprog]"
1009 ac_cv_ps_command="$PATH_TO_PS -el (AIX 4.1 and HP-UX)" 1009 ac_cv_ps_command="$PATH_TO_PS -el (AIX 4.1 and HP-UX)"
@@ -1013,7 +1013,7 @@ then
1013 1013
1014dnl AIX? 1014dnl AIX?
1015elif ps glaxen 2>/dev/null | \ 1015elif ps glaxen 2>/dev/null | \
1016 egrep -i ["^ *F +UID +PID +PPID +PRI +NI +VSZ +RSS +WCHAN +STAT +TTY +TIME +COMMAND"] >/dev/null 1016 grep -E -i ["^ *F +UID +PID +PPID +PRI +NI +VSZ +RSS +WCHAN +STAT +TTY +TIME +COMMAND"] >/dev/null
1017then 1017then
1018 ac_cv_ps_varlist="[&procuid,&procpid,&procppid,&procvsz,&procrss,procstat,&pos,procprog]" 1018 ac_cv_ps_varlist="[&procuid,&procpid,&procppid,&procvsz,&procrss,procstat,&pos,procprog]"
1019 ac_cv_ps_command="$PATH_TO_PS glaxen" 1019 ac_cv_ps_command="$PATH_TO_PS glaxen"
@@ -1027,7 +1027,7 @@ dnl Some truncation will happen in UCOMM column
1027dnl STAT VSZ RSS UID PPID %CPU UCOMM COMMAND 1027dnl STAT VSZ RSS UID PPID %CPU UCOMM COMMAND
1028dnl Ss 52756 22496 501 1 6.9 Window Manager /System/Library/CoreServices/WindowServer -daemon 1028dnl Ss 52756 22496 501 1 6.9 Window Manager /System/Library/CoreServices/WindowServer -daemon
1029elif ps wwaxo 'state vsz rss uid pid ppid pcpu ucomm command' 2>/dev/null | \ 1029elif ps wwaxo 'state vsz rss uid pid ppid pcpu ucomm command' 2>/dev/null | \
1030 egrep -i ["^STAT +VSZ +RSS +UID +PPID +%CPU +UCOMM +COMMAND"] >/dev/null 1030 grep -E -i ["^STAT +VSZ +RSS +UID +PPID +%CPU +UCOMM +COMMAND"] >/dev/null
1031then 1031then
1032 ac_cv_ps_command="$PATH_TO_PS wwaxo 'state vsz rss uid pid ppid pcpu ucomm command'" 1032 ac_cv_ps_command="$PATH_TO_PS wwaxo 'state vsz rss uid pid ppid pcpu ucomm command'"
1033 ac_cv_ps_varlist="[procstat,&procvsz,&procrss,&procuid,&procpid,&procppid,&procpcpu,procprog,&pos]" 1033 ac_cv_ps_varlist="[procstat,&procvsz,&procrss,&procuid,&procpid,&procppid,&procpcpu,procprog,&pos]"
@@ -1037,7 +1037,7 @@ then
1037 1037
1038dnl UnixWare 1038dnl UnixWare
1039elif ps -Al 2>/dev/null | \ 1039elif ps -Al 2>/dev/null | \
1040 egrep -i ["^ *F +S +UID +PID +PPID +CLS +PRI +NI +C +ADDR +SZ +WCHAN +TTY +TIME +COMD"] >/dev/null 1040 grep -E -i ["^ *F +S +UID +PID +PPID +CLS +PRI +NI +C +ADDR +SZ +WCHAN +TTY +TIME +COMD"] >/dev/null
1041then 1041then
1042 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&pos,procprog]" 1042 ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&pos,procprog]"
1043 ac_cv_ps_command="$PATH_TO_PS -Al" 1043 ac_cv_ps_command="$PATH_TO_PS -Al"
@@ -1105,14 +1105,14 @@ then
1105 1105
1106elif [[ "z$ac_cv_uname_s" = "zUnixWare" ]] && \ 1106elif [[ "z$ac_cv_uname_s" = "zUnixWare" ]] && \
1107 $PATH_TO_PING -n -s 127.0.0.1 56 1 2>/dev/null | \ 1107 $PATH_TO_PING -n -s 127.0.0.1 56 1 2>/dev/null | \
1108 egrep -i "^round-trip|^rtt" >/dev/null 1108 grep -E -i "^round-trip|^rtt" >/dev/null
1109then 1109then
1110 with_ping_command="$PATH_TO_PING -n -U -c %d %s" 1110 with_ping_command="$PATH_TO_PING -n -U -c %d %s"
1111 ac_cv_ping_packets_first=yes 1111 ac_cv_ping_packets_first=yes
1112 AC_MSG_RESULT([$with_ping_command]) 1112 AC_MSG_RESULT([$with_ping_command])
1113 1113
1114elif $PATH_TO_PING -4 -n -U -w 10 -c 1 127.0.0.1 2>/dev/null | \ 1114elif $PATH_TO_PING -4 -n -U -w 10 -c 1 127.0.0.1 2>/dev/null | \
1115 egrep -i "^round-trip|^rtt" >/dev/null 1115 grep -E -i "^round-trip|^rtt" >/dev/null
1116then 1116then
1117 # check if -4 is supported - issue #1550 1117 # check if -4 is supported - issue #1550
1118 with_ping_command="$PATH_TO_PING -4 -n -U -w %d -c %d %s" 1118 with_ping_command="$PATH_TO_PING -4 -n -U -w %d -c %d %s"
@@ -1120,7 +1120,7 @@ then
1120 ac_cv_ping_has_timeout=yes 1120 ac_cv_ping_has_timeout=yes
1121 AC_MSG_RESULT([$with_ping_command]) 1121 AC_MSG_RESULT([$with_ping_command])
1122elif $PATH_TO_PING -n -U -w 10 -c 1 127.0.0.1 2>/dev/null | \ 1122elif $PATH_TO_PING -n -U -w 10 -c 1 127.0.0.1 2>/dev/null | \
1123 egrep -i "^round-trip|^rtt" >/dev/null 1123 grep -E -i "^round-trip|^rtt" >/dev/null
1124then 1124then
1125 with_ping_command="$PATH_TO_PING -n -U -w %d -c %d %s" 1125 with_ping_command="$PATH_TO_PING -n -U -w %d -c %d %s"
1126 ac_cv_ping_packets_first=yes 1126 ac_cv_ping_packets_first=yes
@@ -1128,52 +1128,52 @@ then
1128 AC_MSG_RESULT([$with_ping_command]) 1128 AC_MSG_RESULT([$with_ping_command])
1129 1129
1130elif $PATH_TO_PING -n -U -c 1 127.0.0.1 2>/dev/null | \ 1130elif $PATH_TO_PING -n -U -c 1 127.0.0.1 2>/dev/null | \
1131 egrep -i "^round-trip|^rtt" >/dev/null 1131 grep -E -i "^round-trip|^rtt" >/dev/null
1132then 1132then
1133 with_ping_command="$PATH_TO_PING -n -U -c %d %s" 1133 with_ping_command="$PATH_TO_PING -n -U -c %d %s"
1134 ac_cv_ping_packets_first=yes 1134 ac_cv_ping_packets_first=yes
1135 AC_MSG_RESULT([$with_ping_command]) 1135 AC_MSG_RESULT([$with_ping_command])
1136 1136
1137elif $PATH_TO_PING -n -c 1 127.0.0.1 2>/dev/null | \ 1137elif $PATH_TO_PING -n -c 1 127.0.0.1 2>/dev/null | \
1138 egrep -i "^round-trip|^rtt" >/dev/null 1138 grep -E -i "^round-trip|^rtt" >/dev/null
1139then 1139then
1140 with_ping_command="$PATH_TO_PING -n -c %d %s" 1140 with_ping_command="$PATH_TO_PING -n -c %d %s"
1141 ac_cv_ping_packets_first=yes 1141 ac_cv_ping_packets_first=yes
1142 AC_MSG_RESULT([$with_ping_command]) 1142 AC_MSG_RESULT([$with_ping_command])
1143 1143
1144elif $PATH_TO_PING -n 127.0.0.1 -c 1 2>/dev/null | \ 1144elif $PATH_TO_PING -n 127.0.0.1 -c 1 2>/dev/null | \
1145 egrep -i "^round-trip|^rtt" >/dev/null 1145 grep -E -i "^round-trip|^rtt" >/dev/null
1146then 1146then
1147 with_ping_command="$PATH_TO_PING -n %s -c %d" 1147 with_ping_command="$PATH_TO_PING -n %s -c %d"
1148 AC_MSG_RESULT([$with_ping_command]) 1148 AC_MSG_RESULT([$with_ping_command])
1149 1149
1150elif $PATH_TO_PING 127.0.0.1 -n 1 2>/dev/null | \ 1150elif $PATH_TO_PING 127.0.0.1 -n 1 2>/dev/null | \
1151 egrep -i "^round-trip|^rtt" >/dev/null 1151 grep -E -i "^round-trip|^rtt" >/dev/null
1152then 1152then
1153 with_ping_command="$PATH_TO_PING %s -n %d" 1153 with_ping_command="$PATH_TO_PING %s -n %d"
1154 AC_MSG_RESULT([$with_ping_command]) 1154 AC_MSG_RESULT([$with_ping_command])
1155 1155
1156elif $PATH_TO_PING -n -s 127.0.0.1 56 1 2>/dev/null | \ 1156elif $PATH_TO_PING -n -s 127.0.0.1 56 1 2>/dev/null | \
1157 egrep -i "^round-trip|^rtt" >/dev/null 1157 grep -E -i "^round-trip|^rtt" >/dev/null
1158then 1158then
1159 with_ping_command="$PATH_TO_PING -n -s %s 56 %d" 1159 with_ping_command="$PATH_TO_PING -n -s %s 56 %d"
1160 AC_MSG_RESULT([$with_ping_command]) 1160 AC_MSG_RESULT([$with_ping_command])
1161 1161
1162elif $PATH_TO_PING -n -h 127.0.0.1 -s 56 -c 1 2>/dev/null | \ 1162elif $PATH_TO_PING -n -h 127.0.0.1 -s 56 -c 1 2>/dev/null | \
1163 egrep -i "^round-trip|^rtt" >/dev/null 1163 grep -E -i "^round-trip|^rtt" >/dev/null
1164then 1164then
1165 with_ping_command="$PATH_TO_PING -n -h %s -s 56 -c %d" 1165 with_ping_command="$PATH_TO_PING -n -h %s -s 56 -c %d"
1166 AC_MSG_RESULT([$with_ping_command]) 1166 AC_MSG_RESULT([$with_ping_command])
1167 1167
1168elif $PATH_TO_PING -n -s 56 -c 1 127.0.0.1 2>/dev/null | \ 1168elif $PATH_TO_PING -n -s 56 -c 1 127.0.0.1 2>/dev/null | \
1169 egrep -i "^round-trip|^rtt" >/dev/null 1169 grep -E -i "^round-trip|^rtt" >/dev/null
1170then 1170then
1171 with_ping_command="$PATH_TO_PING -n -s 56 -c %d %s" 1171 with_ping_command="$PATH_TO_PING -n -s 56 -c %d %s"
1172 ac_cv_ping_packets_first=yes 1172 ac_cv_ping_packets_first=yes
1173 AC_MSG_RESULT([$with_ping_command]) 1173 AC_MSG_RESULT([$with_ping_command])
1174 1174
1175elif $PATH_TO_PING -n -c 1 127.0.0.1 2>/dev/null | \ 1175elif $PATH_TO_PING -n -c 1 127.0.0.1 2>/dev/null | \
1176 egrep -i "^round-trip|^rtt" >/dev/null 1176 grep -E -i "^round-trip|^rtt" >/dev/null
1177then 1177then
1178 with_ping_command="$PATH_TO_PING -n -c %d %s" 1178 with_ping_command="$PATH_TO_PING -n -c %d %s"
1179 ac_cv_ping_packets_first=yes 1179 ac_cv_ping_packets_first=yes
@@ -1229,14 +1229,14 @@ elif [[ "z$ac_cv_uname_o" = "zCygwin" -a "x$PATH_TO_PING" != "x" ]]; then
1229elif test "x$PATH_TO_PING6" != "x"; then 1229elif test "x$PATH_TO_PING6" != "x"; then
1230 if [[ "z$ac_cv_uname_s" = "zUnixWare" ]] && \ 1230 if [[ "z$ac_cv_uname_s" = "zUnixWare" ]] && \
1231 $PATH_TO_PING6 -n -s ::1 56 1 2>/dev/null | \ 1231 $PATH_TO_PING6 -n -s ::1 56 1 2>/dev/null | \
1232 egrep -i "^round-trip|^rtt" >/dev/null 1232 grep -E -i "^round-trip|^rtt" >/dev/null
1233 then 1233 then
1234 with_ping6_command="$PATH_TO_PING6 -n -U -c %d %s" 1234 with_ping6_command="$PATH_TO_PING6 -n -U -c %d %s"
1235 ac_cv_ping6_packets_first=yes 1235 ac_cv_ping6_packets_first=yes
1236 AC_MSG_RESULT([$with_ping6_command]) 1236 AC_MSG_RESULT([$with_ping6_command])
1237 1237
1238 elif $PATH_TO_PING6 -n -U -w 10 -c 1 ::1 2>/dev/null | \ 1238 elif $PATH_TO_PING6 -n -U -w 10 -c 1 ::1 2>/dev/null | \
1239 egrep -i "^round-trip|^rtt" >/dev/null 1239 grep -E -i "^round-trip|^rtt" >/dev/null
1240 then 1240 then
1241 with_ping6_command="$PATH_TO_PING6 -n -U -w %d -c %d %s" 1241 with_ping6_command="$PATH_TO_PING6 -n -U -w %d -c %d %s"
1242 ac_cv_ping6_packets_first=yes 1242 ac_cv_ping6_packets_first=yes
@@ -1244,52 +1244,52 @@ elif test "x$PATH_TO_PING6" != "x"; then
1244 AC_MSG_RESULT([$with_ping6_command]) 1244 AC_MSG_RESULT([$with_ping6_command])
1245 1245
1246 elif $PATH_TO_PING6 -n -U -c 1 ::1 2>/dev/null | \ 1246 elif $PATH_TO_PING6 -n -U -c 1 ::1 2>/dev/null | \
1247 egrep -i "^round-trip|^rtt" >/dev/null 1247 grep -E -i "^round-trip|^rtt" >/dev/null
1248 then 1248 then
1249 with_ping6_command="$PATH_TO_PING6 -n -U -c %d %s" 1249 with_ping6_command="$PATH_TO_PING6 -n -U -c %d %s"
1250 ac_cv_ping6_packets_first=yes 1250 ac_cv_ping6_packets_first=yes
1251 AC_MSG_RESULT([$with_ping6_command]) 1251 AC_MSG_RESULT([$with_ping6_command])
1252 1252
1253 elif $PATH_TO_PING6 -n -c 1 ::1 2>/dev/null | \ 1253 elif $PATH_TO_PING6 -n -c 1 ::1 2>/dev/null | \
1254 egrep -i "^round-trip|^rtt" >/dev/null 1254 grep -E -i "^round-trip|^rtt" >/dev/null
1255 then 1255 then
1256 with_ping6_command="$PATH_TO_PING6 -n -c %d %s" 1256 with_ping6_command="$PATH_TO_PING6 -n -c %d %s"
1257 ac_cv_ping6_packets_first=yes 1257 ac_cv_ping6_packets_first=yes
1258 AC_MSG_RESULT([$with_ping6_command]) 1258 AC_MSG_RESULT([$with_ping6_command])
1259 1259
1260 elif $PATH_TO_PING6 -n ::1 -c 1 2>/dev/null | \ 1260 elif $PATH_TO_PING6 -n ::1 -c 1 2>/dev/null | \
1261 egrep -i "^round-trip|^rtt" >/dev/null 1261 grep -E -i "^round-trip|^rtt" >/dev/null
1262 then 1262 then
1263 with_ping6_command="$PATH_TO_PING6 -n %s -c %d" 1263 with_ping6_command="$PATH_TO_PING6 -n %s -c %d"
1264 AC_MSG_RESULT([$with_ping6_command]) 1264 AC_MSG_RESULT([$with_ping6_command])
1265 1265
1266 elif $PATH_TO_PING6 ::1 -n 1 2>/dev/null | \ 1266 elif $PATH_TO_PING6 ::1 -n 1 2>/dev/null | \
1267 egrep -i "^round-trip|^rtt" >/dev/null 1267 grep -E -i "^round-trip|^rtt" >/dev/null
1268 then 1268 then
1269 with_ping6_command="$PATH_TO_PING6 %s -n %d" 1269 with_ping6_command="$PATH_TO_PING6 %s -n %d"
1270 AC_MSG_RESULT([$with_ping6_command]) 1270 AC_MSG_RESULT([$with_ping6_command])
1271 1271
1272 elif $PATH_TO_PING6 -n -s ::1 56 1 2>/dev/null | \ 1272 elif $PATH_TO_PING6 -n -s ::1 56 1 2>/dev/null | \
1273 egrep -i "^round-trip|^rtt" >/dev/null 1273 grep -E -i "^round-trip|^rtt" >/dev/null
1274 then 1274 then
1275 with_ping6_command="$PATH_TO_PING6 -n -s %s 56 %d" 1275 with_ping6_command="$PATH_TO_PING6 -n -s %s 56 %d"
1276 AC_MSG_RESULT([$with_ping6_command]) 1276 AC_MSG_RESULT([$with_ping6_command])
1277 1277
1278 elif $PATH_TO_PING6 -n -h ::1 -s 56 -c 1 2>/dev/null | \ 1278 elif $PATH_TO_PING6 -n -h ::1 -s 56 -c 1 2>/dev/null | \
1279 egrep -i "^round-trip|^rtt" >/dev/null 1279 grep -E -i "^round-trip|^rtt" >/dev/null
1280 then 1280 then
1281 with_ping6_command="$PATH_TO_PING6 -n -h %s -s 56 -c %d" 1281 with_ping6_command="$PATH_TO_PING6 -n -h %s -s 56 -c %d"
1282 AC_MSG_RESULT([$with_ping6_command]) 1282 AC_MSG_RESULT([$with_ping6_command])
1283 1283
1284 elif $PATH_TO_PING6 -n -s 56 -c 1 ::1 2>/dev/null | \ 1284 elif $PATH_TO_PING6 -n -s 56 -c 1 ::1 2>/dev/null | \
1285 egrep -i "^round-trip|^rtt" >/dev/null 1285 grep -E -i "^round-trip|^rtt" >/dev/null
1286 then 1286 then
1287 with_ping6_command="$PATH_TO_PING6 -n -s 56 -c %d %s" 1287 with_ping6_command="$PATH_TO_PING6 -n -s 56 -c %d %s"
1288 ac_cv_ping6_packets_first=yes 1288 ac_cv_ping6_packets_first=yes
1289 AC_MSG_RESULT([$with_ping_command]) 1289 AC_MSG_RESULT([$with_ping_command])
1290 1290
1291 elif $PATH_TO_PING6 -n -c 1 ::1 2>/dev/null | \ 1291 elif $PATH_TO_PING6 -n -c 1 ::1 2>/dev/null | \
1292 egrep -i "^round-trip|^rtt" >/dev/null 1292 grep -E -i "^round-trip|^rtt" >/dev/null
1293 then 1293 then
1294 with_ping6_command="$PATH_TO_PING6 -n -c %d %s" 1294 with_ping6_command="$PATH_TO_PING6 -n -c %d %s"
1295 ac_cv_ping6_packets_first=yes 1295 ac_cv_ping6_packets_first=yes
@@ -1300,59 +1300,59 @@ elif test "x$PATH_TO_PING6" != "x"; then
1300elif test "x$PATH_TO_PING" != "x"; then 1300elif test "x$PATH_TO_PING" != "x"; then
1301 if [[ "z$ac_cv_uname_s" = "zUnixWare" ]] && \ 1301 if [[ "z$ac_cv_uname_s" = "zUnixWare" ]] && \
1302 $PATH_TO_PING -A inet6 -n -s ::1 56 1 2>/dev/null | \ 1302 $PATH_TO_PING -A inet6 -n -s ::1 56 1 2>/dev/null | \
1303 egrep -i "^round-trip|^rtt" >/dev/null 1303 grep -E -i "^round-trip|^rtt" >/dev/null
1304 then 1304 then
1305 with_ping6_command="$PATH_TO_PING -A inet6 -n -U -c %d %s" 1305 with_ping6_command="$PATH_TO_PING -A inet6 -n -U -c %d %s"
1306 ac_cv_ping6_packets_first=yes 1306 ac_cv_ping6_packets_first=yes
1307 AC_MSG_RESULT([$with_ping6_command]) 1307 AC_MSG_RESULT([$with_ping6_command])
1308 1308
1309 elif $PATH_TO_PING -A inet6 -n -U -c 1 ::1 2>/dev/null | \ 1309 elif $PATH_TO_PING -A inet6 -n -U -c 1 ::1 2>/dev/null | \
1310 egrep -i "^round-trip|^rtt" >/dev/null 1310 grep -E -i "^round-trip|^rtt" >/dev/null
1311 then 1311 then
1312 with_ping6_command="$PATH_TO_PING -A inet6 -n -U -c %d %s" 1312 with_ping6_command="$PATH_TO_PING -A inet6 -n -U -c %d %s"
1313 ac_cv_ping6_packets_first=yes 1313 ac_cv_ping6_packets_first=yes
1314 AC_MSG_RESULT([$with_ping6_command]) 1314 AC_MSG_RESULT([$with_ping6_command])
1315 1315
1316 elif $PATH_TO_PING -A inet6 -n -c 1 ::1 2>/dev/null | \ 1316 elif $PATH_TO_PING -A inet6 -n -c 1 ::1 2>/dev/null | \
1317 egrep -i "^round-trip|^rtt" >/dev/null 1317 grep -E -i "^round-trip|^rtt" >/dev/null
1318 then 1318 then
1319 with_ping6_command="$PATH_TO_PING -A inet6 -n -c %d %s" 1319 with_ping6_command="$PATH_TO_PING -A inet6 -n -c %d %s"
1320 ac_cv_ping6_packets_first=yes 1320 ac_cv_ping6_packets_first=yes
1321 AC_MSG_RESULT([$with_ping6_command]) 1321 AC_MSG_RESULT([$with_ping6_command])
1322 1322
1323 elif $PATH_TO_PING -A inet6 -n ::1 -c 1 2>/dev/null | \ 1323 elif $PATH_TO_PING -A inet6 -n ::1 -c 1 2>/dev/null | \
1324 egrep -i "^round-trip|^rtt" >/dev/null 1324 grep -E -i "^round-trip|^rtt" >/dev/null
1325 then 1325 then
1326 with_ping6_command="$PATH_TO_PING -A inet6 -n %s -c %d" 1326 with_ping6_command="$PATH_TO_PING -A inet6 -n %s -c %d"
1327 AC_MSG_RESULT([$with_ping6_command]) 1327 AC_MSG_RESULT([$with_ping6_command])
1328 1328
1329 elif $PATH_TO_PING -A inet6 ::1 -n 1 2>/dev/null | \ 1329 elif $PATH_TO_PING -A inet6 ::1 -n 1 2>/dev/null | \
1330 egrep -i "^round-trip|^rtt" >/dev/null 1330 grep -E -i "^round-trip|^rtt" >/dev/null
1331 then 1331 then
1332 with_ping6_command="$PATH_TO_PING -A inet6 %s -n %d" 1332 with_ping6_command="$PATH_TO_PING -A inet6 %s -n %d"
1333 AC_MSG_RESULT([$with_ping6_command]) 1333 AC_MSG_RESULT([$with_ping6_command])
1334 1334
1335 elif $PATH_TO_PING -A inet6 -n -s ::1 56 1 2>/dev/null | \ 1335 elif $PATH_TO_PING -A inet6 -n -s ::1 56 1 2>/dev/null | \
1336 egrep -i "^round-trip|^rtt" >/dev/null 1336 grep -E -i "^round-trip|^rtt" >/dev/null
1337 then 1337 then
1338 with_ping6_command="$PATH_TO_PING -A inet6 -n -s %s 56 %d" 1338 with_ping6_command="$PATH_TO_PING -A inet6 -n -s %s 56 %d"
1339 AC_MSG_RESULT([$with_ping6_command]) 1339 AC_MSG_RESULT([$with_ping6_command])
1340 1340
1341 elif $PATH_TO_PING -A inet6 -n -h ::1 -s 56 -c 1 2>/dev/null | \ 1341 elif $PATH_TO_PING -A inet6 -n -h ::1 -s 56 -c 1 2>/dev/null | \
1342 egrep -i "^round-trip|^rtt" >/dev/null 1342 grep -E -i "^round-trip|^rtt" >/dev/null
1343 then 1343 then
1344 with_ping6_command="$PATH_TO_PING -A inet6 -n -h %s -s 56 -c %d" 1344 with_ping6_command="$PATH_TO_PING -A inet6 -n -h %s -s 56 -c %d"
1345 AC_MSG_RESULT([$with_ping6_command]) 1345 AC_MSG_RESULT([$with_ping6_command])
1346 1346
1347 elif $PATH_TO_PING -A inet6 -n -s 56 -c 1 ::1 2>/dev/null | \ 1347 elif $PATH_TO_PING -A inet6 -n -s 56 -c 1 ::1 2>/dev/null | \
1348 egrep -i "^round-trip|^rtt" >/dev/null 1348 grep -E -i "^round-trip|^rtt" >/dev/null
1349 then 1349 then
1350 with_ping6_command="$PATH_TO_PING -A inet6 -n -s 56 -c %d %s" 1350 with_ping6_command="$PATH_TO_PING -A inet6 -n -s 56 -c %d %s"
1351 ac_cv_ping6_packets_first=yes 1351 ac_cv_ping6_packets_first=yes
1352 AC_MSG_RESULT([$with_ping_command]) 1352 AC_MSG_RESULT([$with_ping_command])
1353 1353
1354 elif $PATH_TO_PING -A inet6 -n -c 1 ::1 2>/dev/null | \ 1354 elif $PATH_TO_PING -A inet6 -n -c 1 ::1 2>/dev/null | \
1355 egrep -i "^round-trip|^rtt" >/dev/null 1355 grep -E -i "^round-trip|^rtt" >/dev/null
1356 then 1356 then
1357 with_ping6_command="$PATH_TO_PING -A inet6 -n -c %d %s" 1357 with_ping6_command="$PATH_TO_PING -A inet6 -n -c %d %s"
1358 ac_cv_ping6_packets_first=yes 1358 ac_cv_ping6_packets_first=yes
@@ -1589,14 +1589,14 @@ then
1589 ac_cv_have_swap=yes 1589 ac_cv_have_swap=yes
1590 ac_cv_swap_command="$PATH_TO_SWAP -l" 1590 ac_cv_swap_command="$PATH_TO_SWAP -l"
1591 if [$PATH_TO_SWAP -l 2>/dev/null | \ 1591 if [$PATH_TO_SWAP -l 2>/dev/null | \
1592 egrep -i "^lswap +path +pri +swaplo +blocks +free +maxswap" \ 1592 grep -E -i "^lswap +path +pri +swaplo +blocks +free +maxswap" \
1593 >/dev/null] 1593 >/dev/null]
1594 then 1594 then
1595 ac_cv_swap_format=[" %*d %*s %*d,%*d %*d %*d %f %f"] 1595 ac_cv_swap_format=[" %*d %*s %*d,%*d %*d %*d %f %f"]
1596 ac_cv_swap_conv=2048 1596 ac_cv_swap_conv=2048
1597 AC_MSG_RESULT([using IRIX format swap]) 1597 AC_MSG_RESULT([using IRIX format swap])
1598 1598
1599 elif [$PATH_TO_SWAP -l 2>/dev/null | egrep -i "^path +dev +swaplo +blocks +free" >/dev/null] 1599 elif [$PATH_TO_SWAP -l 2>/dev/null | grep -E -i "^path +dev +swaplo +blocks +free" >/dev/null]
1600 then 1600 then
1601 ac_cv_swap_format=["%*s %*[0-9,-] %*d %f %f"] 1601 ac_cv_swap_format=["%*s %*[0-9,-] %*d %f %f"]
1602 ac_cv_swap_conv=2048 1602 ac_cv_swap_conv=2048
@@ -1615,19 +1615,19 @@ AC_PATH_PROG(PATH_TO_SWAPINFO,swapinfo)
1615if (test -n "$PATH_TO_SWAPINFO") 1615if (test -n "$PATH_TO_SWAPINFO")
1616then 1616then
1617AC_MSG_CHECKING([for $PATH_TO_SWAPINFO format]) 1617AC_MSG_CHECKING([for $PATH_TO_SWAPINFO format])
1618if [$PATH_TO_SWAPINFO -k 2>&1 | egrep -i "^Device" >/dev/null] 1618if [$PATH_TO_SWAPINFO -k 2>&1 | grep -E -i "^Device" >/dev/null]
1619then 1619then
1620 ac_cv_have_swap=yes 1620 ac_cv_have_swap=yes
1621 ac_cv_swap_command="$PATH_TO_SWAPINFO -k" 1621 ac_cv_swap_command="$PATH_TO_SWAPINFO -k"
1622 1622
1623 if [$PATH_TO_SWAPINFO -k 2>/dev/null | egrep -i "^Device +1K-blocks +Used +Avail" >/dev/null] 1623 if [$PATH_TO_SWAPINFO -k 2>/dev/null | grep -E -i "^Device +1K-blocks +Used +Avail" >/dev/null]
1624 then 1624 then
1625 ac_cv_swap_format=["%*s %f %*d %f"] 1625 ac_cv_swap_format=["%*s %f %*d %f"]
1626 ac_cv_swap_conv=1024 1626 ac_cv_swap_conv=1024
1627 AC_MSG_RESULT([using FreeBSD format swapinfo]) 1627 AC_MSG_RESULT([using FreeBSD format swapinfo])
1628 fi 1628 fi
1629 1629
1630elif [$PATH_TO_SWAPINFO -dfM 2>/dev/null | egrep -i "^TYPE +AVAIL +USED +FREE" >/dev/null] 1630elif [$PATH_TO_SWAPINFO -dfM 2>/dev/null | grep -E -i "^TYPE +AVAIL +USED +FREE" >/dev/null]
1631then 1631then
1632 ac_cv_have_swap=yes 1632 ac_cv_have_swap=yes
1633 ac_cv_swap_command="$PATH_TO_SWAPINFO -dfM" 1633 ac_cv_swap_command="$PATH_TO_SWAPINFO -dfM"
@@ -1642,7 +1642,7 @@ AC_PATH_PROG(PATH_TO_LSPS,lsps)
1642if (test -n "$PATH_TO_LSPS") 1642if (test -n "$PATH_TO_LSPS")
1643then 1643then
1644AC_MSG_CHECKING([for $PATH_TO_LSPS format]) 1644AC_MSG_CHECKING([for $PATH_TO_LSPS format])
1645if [$PATH_TO_LSPS -a 2>/dev/null | egrep -i "^Page Space" > /dev/null] 1645if [$PATH_TO_LSPS -a 2>/dev/null | grep -E -i "^Page Space" > /dev/null]
1646then 1646then
1647 ac_cv_have_swap=yes 1647 ac_cv_have_swap=yes
1648 ac_cv_swap_command="$PATH_TO_LSPS -a" 1648 ac_cv_swap_command="$PATH_TO_LSPS -a"
@@ -1844,7 +1844,7 @@ AC_ARG_ENABLE(redhat-pthread-workaround,
1844 [ac_cv_enable_redhat_pthread_workaround=$enableval], 1844 [ac_cv_enable_redhat_pthread_workaround=$enableval],
1845 [ac_cv_enable_redhat_pthread_workaround=test]) 1845 [ac_cv_enable_redhat_pthread_workaround=test])
1846if test "$ac_cv_enable_redhat_pthread_workaround" = "test" ; then 1846if test "$ac_cv_enable_redhat_pthread_workaround" = "test" ; then
1847 if echo $ac_cv_uname_r | egrep "\.EL(smp)?$" >/dev/null 2>&1 ; then 1847 if echo $ac_cv_uname_r | grep -E "\.EL(smp)?$" >/dev/null 2>&1 ; then
1848 AC_MSG_NOTICE([See https://www.monitoring-plugins.org/doc/faq/configure-hangs.html if this next part takes a long time]) 1848 AC_MSG_NOTICE([See https://www.monitoring-plugins.org/doc/faq/configure-hangs.html if this next part takes a long time])
1849 AC_MSG_CHECKING(for redhat spopen problem) 1849 AC_MSG_CHECKING(for redhat spopen problem)
1850 ( cd config_test && make && make test ) > /dev/null 2>&1 1850 ( cd config_test && make && make test ) > /dev/null 2>&1
diff --git a/doc/RELEASING.md b/doc/RELEASING.md
index bcd2c5a..58ec3e1 100644
--- a/doc/RELEASING.md
+++ b/doc/RELEASING.md
@@ -2,14 +2,14 @@ Releasing a New Monitoring Plugins Version
2========================================== 2==========================================
3 3
4Throughout this document, it is assumed that the current Monitoring 4Throughout this document, it is assumed that the current Monitoring
5Plugins version is 2.2.1, and that we're about to publish version 2.3. 5Plugins version is 2.3.2, and that we're about to publish version 2.4.
6It is also assumed that the official repository on GitHub is tracked 6It is also assumed that the official repository on GitHub is tracked
7using the remote name `monitoring-plugins` (rather than `origin`). 7using the remote name `monitoring-plugins` (rather than `origin`).
8 8
9Before you start 9Before you start
10---------------- 10----------------
11 11
12- Check Travis CI status. 12- Check Github Actions status.
13- Update local Git repository to the current `master` tip. For a 13- Update local Git repository to the current `master` tip. For a
14 maintenance release (e.g., version 2.3.2), update to the current 14 maintenance release (e.g., version 2.3.2), update to the current
15 `maint-2.3` tip, instead. 15 `maint-2.3` tip, instead.
@@ -55,7 +55,7 @@ Build the tarball
55----------------- 55-----------------
56 56
57 cd /tmp/plugins 57 cd /tmp/plugins
58 tools/setup 58 tools/setup # requires docbook to be installed
59 ./configure 59 ./configure
60 make dist 60 make dist
61 61
diff --git a/pkg/solaris/solpkg b/pkg/solaris/solpkg
index a21176e..73b3c64 100755
--- a/pkg/solaris/solpkg
+++ b/pkg/solaris/solpkg
@@ -9,7 +9,7 @@ $pkgtrans = "/usr/bin/pkgtrans";
9$prototype = "prototype"; 9$prototype = "prototype";
10$pkginfo = "pkginfo"; 10$pkginfo = "pkginfo";
11$preinstall = "preinstall"; 11$preinstall = "preinstall";
12$egrep = "/usr/bin/egrep"; 12$egrep = "/usr/bin/grep -E";
13 13
14# Sanity check 14# Sanity check
15 15
diff --git a/plugins-scripts/check_sensors.sh b/plugins-scripts/check_sensors.sh
index ab4e726..921e7b3 100755
--- a/plugins-scripts/check_sensors.sh
+++ b/plugins-scripts/check_sensors.sh
@@ -49,10 +49,10 @@ case "$1" in
49 elif test "${status}" -ne 0; then 49 elif test "${status}" -ne 0; then
50 text="WARNING - sensors returned state $status" 50 text="WARNING - sensors returned state $status"
51 exit=$STATE_WARNING 51 exit=$STATE_WARNING
52 elif echo "${sensordata}" | egrep ALARM > /dev/null; then 52 elif echo "${sensordata}" | grep -E ALARM > /dev/null; then
53 text="SENSOR CRITICAL - Sensor alarm detected!" 53 text="SENSOR CRITICAL - Sensor alarm detected!"
54 exit=$STATE_CRITICAL 54 exit=$STATE_CRITICAL
55 elif echo "${sensordata}" | egrep FAULT > /dev/null \ 55 elif echo "${sensordata}" | grep -E FAULT > /dev/null \
56 && test "$1" != "-i" -a "$1" != "--ignore-fault"; then 56 && test "$1" != "-i" -a "$1" != "--ignore-fault"; then
57 text="SENSOR UNKNOWN - Sensor reported fault" 57 text="SENSOR UNKNOWN - Sensor reported fault"
58 exit=$STATE_UNKNOWN 58 exit=$STATE_UNKNOWN
diff --git a/plugins/check_curl.c b/plugins/check_curl.c
index a69854a..2ad373c 100644
--- a/plugins/check_curl.c
+++ b/plugins/check_curl.c
@@ -476,6 +476,18 @@ check_http (void)
476 printf ("* curl CURLOPT_RESOLVE: %s\n", dnscache); 476 printf ("* curl CURLOPT_RESOLVE: %s\n", dnscache);
477 } 477 }
478 478
479 // If server_address is an IPv6 address it must be surround by square brackets
480 struct in6_addr tmp_in_addr;
481 if (inet_pton(AF_INET6, server_address, &tmp_in_addr) == 1) {
482 char *new_server_address = malloc(strlen(server_address) + 3);
483 if (new_server_address == NULL) {
484 die(STATE_UNKNOWN, "HTTP UNKNOWN - Unable to allocate memory\n");
485 }
486 snprintf(new_server_address, strlen(server_address)+3, "[%s]", server_address);
487 free(server_address);
488 server_address = new_server_address;
489 }
490
479 /* compose URL: use the address we want to connect to, set Host: header later */ 491 /* compose URL: use the address we want to connect to, set Host: header later */
480 snprintf (url, DEFAULT_BUFFER_SIZE, "%s://%s:%d%s", 492 snprintf (url, DEFAULT_BUFFER_SIZE, "%s://%s:%d%s",
481 use_ssl ? "https" : "http", 493 use_ssl ? "https" : "http",
@@ -999,10 +1011,12 @@ GOT_FIRST_CERT:
999 result = max_state_alt(get_status(total_time, thlds), result); 1011 result = max_state_alt(get_status(total_time, thlds), result);
1000 1012
1001 /* Cut-off trailing characters */ 1013 /* Cut-off trailing characters */
1002 if(msg[strlen(msg)-2] == ',') 1014 if (strlen(msg) >= 2) {
1003 msg[strlen(msg)-2] = '\0'; 1015 if(msg[strlen(msg)-2] == ',')
1004 else 1016 msg[strlen(msg)-2] = '\0';
1005 msg[strlen(msg)-3] = '\0'; 1017 else
1018 msg[strlen(msg)-3] = '\0';
1019 }
1006 1020
1007 /* TODO: separate _() msg and status code: die (result, "HTTP %s: %s\n", state_text(result), msg); */ 1021 /* TODO: separate _() msg and status code: die (result, "HTTP %s: %s\n", state_text(result), msg); */
1008 die (result, "HTTP %s: %s %d %s%s%s - %d bytes in %.3f second response time %s|%s\n%s%s", 1022 die (result, "HTTP %s: %s %d %s%s%s - %d bytes in %.3f second response time %s|%s\n%s%s",
diff --git a/plugins/check_disk.c b/plugins/check_disk.c
index 66c5dd3..7018c6f 100644
--- a/plugins/check_disk.c
+++ b/plugins/check_disk.c
@@ -171,7 +171,6 @@ main (int argc, char **argv)
171 char *perf_ilabel; 171 char *perf_ilabel;
172 char *preamble; 172 char *preamble;
173 char *flag_header; 173 char *flag_header;
174 double inode_space_pct;
175 int temp_result; 174 int temp_result;
176 175
177 struct mount_entry *me; 176 struct mount_entry *me;
@@ -288,7 +287,7 @@ main (int argc, char **argv)
288 get_stats (path, &fsp); 287 get_stats (path, &fsp);
289 288
290 if (verbose >= 3) { 289 if (verbose >= 3) {
291 printf ("For %s, used_pct=%g free_pct=%g used_units=%llu free_units=%llu total_units=%llu used_inodes_pct=%g free_inodes_pct=%g fsp.fsu_blocksize=%llu mult=%llu\n", 290 printf ("For %s, used_pct=%g free_pct=%g used_units=%lu free_units=%lu total_units=%lu used_inodes_pct=%g free_inodes_pct=%g fsp.fsu_blocksize=%lu mult=%lu\n",
292 me->me_mountdir, 291 me->me_mountdir,
293 path->dused_pct, 292 path->dused_pct,
294 path->dfree_pct, 293 path->dfree_pct,
@@ -369,10 +368,10 @@ main (int argc, char **argv)
369 critical_high_tide = UINT64_MAX; 368 critical_high_tide = UINT64_MAX;
370 369
371 if (path->freeinodes_percent->warning != NULL) { 370 if (path->freeinodes_percent->warning != NULL) {
372 warning_high_tide = llabs( min( (double) warning_high_tide, (double) (1.0 - path->freeinodes_percent->warning->end/100)*path->inodes_total )); 371 warning_high_tide = (uint64_t) fabs( min( (double) warning_high_tide, (double) (1.0 - path->freeinodes_percent->warning->end/100)*path->inodes_total ));
373 } 372 }
374 if (path->freeinodes_percent->critical != NULL) { 373 if (path->freeinodes_percent->critical != NULL) {
375 critical_high_tide = llabs( min( (double) critical_high_tide, (double) (1.0 - path->freeinodes_percent->critical->end/100)*path->inodes_total )); 374 critical_high_tide = (uint64_t) fabs( min( (double) critical_high_tide, (double) (1.0 - path->freeinodes_percent->critical->end/100)*path->inodes_total ));
376 } 375 }
377 376
378 xasprintf (&perf_ilabel, "%s (inodes)", (!strcmp(me->me_mountdir, "none") || display_mntp) ? me->me_devname : me->me_mountdir); 377 xasprintf (&perf_ilabel, "%s (inodes)", (!strcmp(me->me_mountdir, "none") || display_mntp) ? me->me_devname : me->me_mountdir);
@@ -406,15 +405,7 @@ main (int argc, char **argv)
406 xasprintf(&output, "%s inode=%.0f%%)%s;", output, path->dfree_inodes_percent, ((disk_result && verbose >= 1) ? "]" : "")); 405 xasprintf(&output, "%s inode=%.0f%%)%s;", output, path->dfree_inodes_percent, ((disk_result && verbose >= 1) ? "]" : ""));
407 } 406 }
408 free(flag_header); 407 free(flag_header);
409 /* TODO: Need to do a similar debug line
410 xasprintf (&details, _("%s\n\%.0f of %.0f %s (%.0f%% inode=%.0f%%) free on %s (type %s mounted on %s) warn:%lu crit:%lu warn%%:%.0f%% crit%%:%.0f%%"),
411 details, dfree_units, dtotal_units, units, dfree_pct, inode_space_pct,
412 me->me_devname, me->me_type, me->me_mountdir,
413 (unsigned long)w_df, (unsigned long)c_df, w_dfp, c_dfp);
414 */
415
416 } 408 }
417
418 } 409 }
419 410
420 if (verbose >= 2) 411 if (verbose >= 2)
@@ -689,6 +680,7 @@ process_arguments (int argc, char **argv)
689 break; 680 break;
690 case 'I': 681 case 'I':
691 cflags |= REG_ICASE; 682 cflags |= REG_ICASE;
683 // Intentional fallthrough
692 case 'i': 684 case 'i':
693 if (!path_selected) 685 if (!path_selected)
694 die (STATE_UNKNOWN, "DISK %s: %s\n", _("UNKNOWN"), _("Paths need to be selected before using -i/-I. Use -A to select all paths explicitly")); 686 die (STATE_UNKNOWN, "DISK %s: %s\n", _("UNKNOWN"), _("Paths need to be selected before using -i/-I. Use -A to select all paths explicitly"));
@@ -728,8 +720,10 @@ process_arguments (int argc, char **argv)
728 720
729 case 'A': 721 case 'A':
730 optarg = strdup(".*"); 722 optarg = strdup(".*");
723 // Intentional fallthrough
731 case 'R': 724 case 'R':
732 cflags |= REG_ICASE; 725 cflags |= REG_ICASE;
726 // Intentional fallthrough
733 case 'r': 727 case 'r':
734 if (! (warn_freespace_units || crit_freespace_units || warn_freespace_percent || 728 if (! (warn_freespace_units || crit_freespace_units || warn_freespace_percent ||
735 crit_freespace_percent || warn_usedspace_units || crit_usedspace_units || 729 crit_freespace_percent || warn_usedspace_units || crit_usedspace_units ||
@@ -862,51 +856,6 @@ set_all_thresholds (struct parameter_list *path)
862 set_thresholds(&path->freeinodes_percent, warn_freeinodes_percent, crit_freeinodes_percent); 856 set_thresholds(&path->freeinodes_percent, warn_freeinodes_percent, crit_freeinodes_percent);
863} 857}
864 858
865/* TODO: Remove?
866
867int
868validate_arguments (uintmax_t w, uintmax_t c, double wp, double cp, double iwp, double icp, char *mypath)
869{
870 if (w < 0 && c < 0 && wp < 0.0 && cp < 0.0) {
871 printf (_("INPUT ERROR: No thresholds specified"));
872 print_path (mypath);
873 return ERROR;
874 }
875 else if ((wp >= 0.0 || cp >= 0.0) &&
876 (wp < 0.0 || cp < 0.0 || wp > 100.0 || cp > 100.0 || cp > wp)) {
877 printf (_("\
878INPUT ERROR: C_DFP (%f) should be less than W_DFP (%.1f) and both should be between zero and 100 percent, inclusive"),
879 cp, wp);
880 print_path (mypath);
881 return ERROR;
882 }
883 else if ((iwp >= 0.0 || icp >= 0.0) &&
884 (iwp < 0.0 || icp < 0.0 || iwp > 100.0 || icp > 100.0 || icp > iwp)) {
885 printf (_("\
886INPUT ERROR: C_IDFP (%f) should be less than W_IDFP (%.1f) and both should be between zero and 100 percent, inclusive"),
887 icp, iwp);
888 print_path (mypath);
889 return ERROR;
890 }
891 else if ((w > 0 || c > 0) && (w == 0 || c == 0 || c > w)) {
892 printf (_("\
893INPUT ERROR: C_DF (%lu) should be less than W_DF (%lu) and both should be greater than zero"),
894 (unsigned long)c, (unsigned long)w);
895 print_path (mypath);
896 return ERROR;
897 }
898
899 return OK;
900}
901
902*/
903
904
905
906
907
908
909
910void 859void
911print_help (void) 860print_help (void)
912{ 861{
@@ -1042,7 +991,7 @@ get_stats (struct parameter_list *p, struct fs_usage *fsp) {
1042 get_fs_usage (p_list->best_match->me_mountdir, p_list->best_match->me_devname, &tmpfsp); 991 get_fs_usage (p_list->best_match->me_mountdir, p_list->best_match->me_devname, &tmpfsp);
1043 get_path_stats(p_list, &tmpfsp); 992 get_path_stats(p_list, &tmpfsp);
1044 if (verbose >= 3) 993 if (verbose >= 3)
1045 printf("Group %s: adding %llu blocks sized %llu, (%s) used_units=%lu free_units=%llu total_units=%llu mult=%llu\n", 994 printf("Group %s: adding %lu blocks sized %lu, (%s) used_units=%lu free_units=%lu total_units=%lu mult=%lu\n",
1046 p_list->group, 995 p_list->group,
1047 tmpfsp.fsu_blocks, 996 tmpfsp.fsu_blocks,
1048 tmpfsp.fsu_blocksize, 997 tmpfsp.fsu_blocksize,
@@ -1071,7 +1020,7 @@ get_stats (struct parameter_list *p, struct fs_usage *fsp) {
1071 first = 0; 1020 first = 0;
1072 } 1021 }
1073 if (verbose >= 3) 1022 if (verbose >= 3)
1074 printf("Group %s now has: used_units=%llu free_units=%llu total_units=%llu fsu_blocksize=%llu mult=%llu\n", 1023 printf("Group %s now has: used_units=%lu free_units=%lu total_units=%lu fsu_blocksize=%lu mult=%lu\n",
1075 p->group, 1024 p->group,
1076 p->dused_units, 1025 p->dused_units,
1077 p->dfree_units, 1026 p->dfree_units,
diff --git a/plugins/check_http.c b/plugins/check_http.c
index f8ec853..41d4781 100644
--- a/plugins/check_http.c
+++ b/plugins/check_http.c
@@ -1070,9 +1070,8 @@ check_http (void)
1070 } 1070 }
1071 1071
1072 xasprintf (&buf, "%sContent-Length: %i\r\n\r\n", buf, (int)strlen (http_post_data)); 1072 xasprintf (&buf, "%sContent-Length: %i\r\n\r\n", buf, (int)strlen (http_post_data));
1073 xasprintf (&buf, "%s%s%s", buf, http_post_data, CRLF); 1073 xasprintf (&buf, "%s%s", buf, http_post_data);
1074 } 1074 } else {
1075 else {
1076 /* or just a newline so the server knows we're done with the request */ 1075 /* or just a newline so the server knows we're done with the request */
1077 xasprintf (&buf, "%s%s", buf, CRLF); 1076 xasprintf (&buf, "%s%s", buf, CRLF);
1078 } 1077 }
@@ -1363,7 +1362,9 @@ check_http (void)
1363#define HD2 URI_HTTP "://" URI_HOST "/" URI_PATH 1362#define HD2 URI_HTTP "://" URI_HOST "/" URI_PATH
1364#define HD3 URI_HTTP "://" URI_HOST ":" URI_PORT 1363#define HD3 URI_HTTP "://" URI_HOST ":" URI_PORT
1365#define HD4 URI_HTTP "://" URI_HOST 1364#define HD4 URI_HTTP "://" URI_HOST
1366#define HD5 URI_PATH 1365/* relative reference redirect like //www.site.org/test https://tools.ietf.org/html/rfc3986 */
1366#define HD5 "//" URI_HOST "/" URI_PATH
1367#define HD6 URI_PATH
1367 1368
1368void 1369void
1369redir (char *pos, char *status_line) 1370redir (char *pos, char *status_line)
@@ -1440,9 +1441,21 @@ redir (char *pos, char *status_line)
1440 use_ssl = server_type_check (type); 1441 use_ssl = server_type_check (type);
1441 i = server_port_check (use_ssl); 1442 i = server_port_check (use_ssl);
1442 } 1443 }
1444 /* URI_HTTP, URI_HOST, URI_PATH */
1445 else if (sscanf (pos, HD5, addr, url) == 2) {
1446 if(use_ssl){
1447 strcpy (type,"https");
1448 }
1449 else{
1450 strcpy (type, server_type);
1451 }
1452 xasprintf (&url, "/%s", url);
1453 use_ssl = server_type_check (type);
1454 i = server_port_check (use_ssl);
1455 }
1443 1456
1444 /* URI_PATH */ 1457 /* URI_PATH */
1445 else if (sscanf (pos, HD5, url) == 1) { 1458 else if (sscanf (pos, HD6, url) == 1) {
1446 /* relative url */ 1459 /* relative url */
1447 if ((url[0] != '/')) { 1460 if ((url[0] != '/')) {
1448 if ((x = strrchr(server_url, '/'))) 1461 if ((x = strrchr(server_url, '/')))
diff --git a/plugins/check_load.c b/plugins/check_load.c
index 0e4de54..00f7c87 100644
--- a/plugins/check_load.c
+++ b/plugins/check_load.c
@@ -1,41 +1,43 @@
1/***************************************************************************** 1/*****************************************************************************
2* 2*
3* Monitoring check_load plugin 3* Monitoring check_load plugin
4* 4*
5* License: GPL 5* License: GPL
6* Copyright (c) 1999-2007 Monitoring Plugins Development Team 6* Copyright (c) 1999-2007 Monitoring Plugins Development Team
7* 7*
8* Description: 8* Description:
9* 9*
10* This file contains the check_load plugin 10* This file contains the check_load plugin
11* 11*
12* This plugin tests the current system load average. 12* This plugin tests the current system load average.
13* 13*
14* 14*
15* This program is free software: you can redistribute it and/or modify 15* This program is free software: you can redistribute it and/or modify
16* it under the terms of the GNU General Public License as published by 16* it under the terms of the GNU General Public License as published by
17* the Free Software Foundation, either version 3 of the License, or 17* the Free Software Foundation, either version 3 of the License, or
18* (at your option) any later version. 18* (at your option) any later version.
19* 19*
20* This program is distributed in the hope that it will be useful, 20* This program is distributed in the hope that it will be useful,
21* but WITHOUT ANY WARRANTY; without even the implied warranty of 21* but WITHOUT ANY WARRANTY; without even the implied warranty of
22* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23* GNU General Public License for more details. 23* GNU General Public License for more details.
24* 24*
25* You should have received a copy of the GNU General Public License 25* You should have received a copy of the GNU General Public License
26* along with this program. If not, see <http://www.gnu.org/licenses/>. 26* along with this program. If not, see <http://www.gnu.org/licenses/>.
27* 27*
28* 28*
29*****************************************************************************/ 29*****************************************************************************/
30 30
31const char *progname = "check_load"; 31const char *progname = "check_load";
32const char *copyright = "1999-2007"; 32const char *copyright = "1999-2022";
33const char *email = "devel@monitoring-plugins.org"; 33const char *email = "devel@monitoring-plugins.org";
34 34
35#include "common.h" 35#include "./common.h"
36#include "runcmd.h" 36#include "./runcmd.h"
37#include "utils.h" 37#include "./utils.h"
38#include "popen.h" 38#include "./popen.h"
39
40#include <string.h>
39 41
40#ifdef HAVE_SYS_LOADAVG_H 42#ifdef HAVE_SYS_LOADAVG_H
41#include <sys/loadavg.h> 43#include <sys/loadavg.h>
@@ -68,7 +70,7 @@ double cload[3] = { 0.0, 0.0, 0.0 };
68#define la15 la[2] 70#define la15 la[2]
69 71
70char *status_line; 72char *status_line;
71int take_into_account_cpus = 0; 73bool take_into_account_cpus = false;
72 74
73static void 75static void
74get_threshold(char *arg, double *th) 76get_threshold(char *arg, double *th)
@@ -101,7 +103,7 @@ get_threshold(char *arg, double *th)
101int 103int
102main (int argc, char **argv) 104main (int argc, char **argv)
103{ 105{
104 int result; 106 int result = -1;
105 int i; 107 int i;
106 long numcpus; 108 long numcpus;
107 109
@@ -164,7 +166,7 @@ main (int argc, char **argv)
164 sscanf (input_buffer, "%*[^l]load averages: %lf, %lf, %lf", &la1, &la5, &la15); 166 sscanf (input_buffer, "%*[^l]load averages: %lf, %lf, %lf", &la1, &la5, &la15);
165 } 167 }
166 else { 168 else {
167 printf (_("could not parse load from uptime %s: %s\n"), PATH_TO_UPTIME, result); 169 printf (_("could not parse load from uptime %s: %d\n"), PATH_TO_UPTIME, result);
168 return STATE_UNKNOWN; 170 return STATE_UNKNOWN;
169 } 171 }
170 172
@@ -176,13 +178,6 @@ main (int argc, char **argv)
176# endif 178# endif
177#endif 179#endif
178 180
179 if (take_into_account_cpus == 1) {
180 if ((numcpus = GET_NUMBER_OF_CPUS()) > 0) {
181 la[0] = la[0] / numcpus;
182 la[1] = la[1] / numcpus;
183 la[2] = la[2] / numcpus;
184 }
185 }
186 if ((la[0] < 0.0) || (la[1] < 0.0) || (la[2] < 0.0)) { 181 if ((la[0] < 0.0) || (la[1] < 0.0) || (la[2] < 0.0)) {
187#ifdef HAVE_GETLOADAVG 182#ifdef HAVE_GETLOADAVG
188 printf (_("Error in getloadavg()\n")); 183 printf (_("Error in getloadavg()\n"));
@@ -200,18 +195,49 @@ main (int argc, char **argv)
200 result = STATE_OK; 195 result = STATE_OK;
201 196
202 xasprintf(&status_line, _("load average: %.2f, %.2f, %.2f"), la1, la5, la15); 197 xasprintf(&status_line, _("load average: %.2f, %.2f, %.2f"), la1, la5, la15);
198 xasprintf(&status_line, ("total %s"), status_line);
199
200
201 double scaled_la[3] = { 0.0, 0.0, 0.0 };
202 bool is_using_scaled_load_values = false;
203
204 if (take_into_account_cpus == true && (numcpus = GET_NUMBER_OF_CPUS()) > 0) {
205 is_using_scaled_load_values = true;
206
207 scaled_la[0] = la[0] / numcpus;
208 scaled_la[1] = la[1] / numcpus;
209 scaled_la[2] = la[2] / numcpus;
210
211 char *tmp = NULL;
212 xasprintf(&tmp, _("load average: %.2f, %.2f, %.2f"), scaled_la[0], scaled_la[1], scaled_la[2]);
213 xasprintf(&status_line, "scaled %s - %s", tmp, status_line);
214 }
203 215
204 for(i = 0; i < 3; i++) { 216 for(i = 0; i < 3; i++) {
205 if(la[i] > cload[i]) { 217 if (is_using_scaled_load_values) {
206 result = STATE_CRITICAL; 218 if(scaled_la[i] > cload[i]) {
207 break; 219 result = STATE_CRITICAL;
220 break;
221 }
222 else if(scaled_la[i] > wload[i]) result = STATE_WARNING;
223 } else {
224 if(la[i] > cload[i]) {
225 result = STATE_CRITICAL;
226 break;
227 }
228 else if(la[i] > wload[i]) result = STATE_WARNING;
208 } 229 }
209 else if(la[i] > wload[i]) result = STATE_WARNING;
210 } 230 }
211 231
212 printf("LOAD %s - %s|", state_text(result), status_line); 232 printf("LOAD %s - %s|", state_text(result), status_line);
213 for(i = 0; i < 3; i++) 233 for(i = 0; i < 3; i++) {
214 printf("load%d=%.3f;%.3f;%.3f;0; ", nums[i], la[i], wload[i], cload[i]); 234 if (is_using_scaled_load_values) {
235 printf("load%d=%.3f;;;0; ", nums[i], la[i]);
236 printf("scaled_load%d=%.3f;%.3f;%.3f;0; ", nums[i], scaled_la[i], wload[i], cload[i]);
237 } else {
238 printf("load%d=%.3f;%.3f;%.3f;0; ", nums[i], la[i], wload[i], cload[i]);
239 }
240 }
215 241
216 putchar('\n'); 242 putchar('\n');
217 if (n_procs_to_show > 0) { 243 if (n_procs_to_show > 0) {
@@ -255,7 +281,7 @@ process_arguments (int argc, char **argv)
255 get_threshold(optarg, cload); 281 get_threshold(optarg, cload);
256 break; 282 break;
257 case 'r': /* Divide load average by number of CPUs */ 283 case 'r': /* Divide load average by number of CPUs */
258 take_into_account_cpus = 1; 284 take_into_account_cpus = true;
259 break; 285 break;
260 case 'V': /* version */ 286 case 'V': /* version */
261 print_revision (progname, NP_VERSION); 287 print_revision (progname, NP_VERSION);
@@ -289,7 +315,6 @@ process_arguments (int argc, char **argv)
289} 315}
290 316
291 317
292
293static int 318static int
294validate_arguments (void) 319validate_arguments (void)
295{ 320{
@@ -310,7 +335,6 @@ validate_arguments (void)
310} 335}
311 336
312 337
313
314void 338void
315print_help (void) 339print_help (void)
316{ 340{
@@ -321,7 +345,7 @@ print_help (void)
321 345
322 printf (_("This plugin tests the current system load average.")); 346 printf (_("This plugin tests the current system load average."));
323 347
324 printf ("\n\n"); 348 printf ("\n\n");
325 349
326 print_usage (); 350 print_usage ();
327 351
@@ -329,15 +353,15 @@ print_help (void)
329 printf (UT_EXTRA_OPTS); 353 printf (UT_EXTRA_OPTS);
330 354
331 printf (" %s\n", "-w, --warning=WLOAD1,WLOAD5,WLOAD15"); 355 printf (" %s\n", "-w, --warning=WLOAD1,WLOAD5,WLOAD15");
332 printf (" %s\n", _("Exit with WARNING status if load average exceeds WLOADn")); 356 printf (" %s\n", _("Exit with WARNING status if load average exceeds WLOADn"));
333 printf (" %s\n", "-c, --critical=CLOAD1,CLOAD5,CLOAD15"); 357 printf (" %s\n", "-c, --critical=CLOAD1,CLOAD5,CLOAD15");
334 printf (" %s\n", _("Exit with CRITICAL status if load average exceed CLOADn")); 358 printf (" %s\n", _("Exit with CRITICAL status if load average exceed CLOADn"));
335 printf (" %s\n", _("the load average format is the same used by \"uptime\" and \"w\"")); 359 printf (" %s\n", _("the load average format is the same used by \"uptime\" and \"w\""));
336 printf (" %s\n", "-r, --percpu"); 360 printf (" %s\n", "-r, --percpu");
337 printf (" %s\n", _("Divide the load averages by the number of CPUs (when possible)")); 361 printf (" %s\n", _("Divide the load averages by the number of CPUs (when possible)"));
338 printf (" %s\n", "-n, --procs-to-show=NUMBER_OF_PROCS"); 362 printf (" %s\n", "-n, --procs-to-show=NUMBER_OF_PROCS");
339 printf (" %s\n", _("Number of processes to show when printing the top consuming processes.")); 363 printf (" %s\n", _("Number of processes to show when printing the top consuming processes."));
340 printf (" %s\n", _("NUMBER_OF_PROCS=0 disables this feature. Default value is 0")); 364 printf (" %s\n", _("NUMBER_OF_PROCS=0 disables this feature. Default value is 0"));
341 365
342 printf (UT_SUPPORT); 366 printf (UT_SUPPORT);
343} 367}
@@ -345,8 +369,8 @@ print_help (void)
345void 369void
346print_usage (void) 370print_usage (void)
347{ 371{
348 printf ("%s\n", _("Usage:")); 372 printf ("%s\n", _("Usage:"));
349 printf ("%s [-r] -w WLOAD1,WLOAD5,WLOAD15 -c CLOAD1,CLOAD5,CLOAD15 [-n NUMBER_OF_PROCS]\n", progname); 373 printf ("%s [-r] -w WLOAD1,WLOAD5,WLOAD15 -c CLOAD1,CLOAD5,CLOAD15 [-n NUMBER_OF_PROCS]\n", progname);
350} 374}
351 375
352#ifdef PS_USES_PROCPCPU 376#ifdef PS_USES_PROCPCPU
@@ -384,8 +408,8 @@ static int print_top_consuming_processes() {
384#ifdef PS_USES_PROCPCPU 408#ifdef PS_USES_PROCPCPU
385 qsort(chld_out.line + 1, chld_out.lines - 1, sizeof(char*), cmpstringp); 409 qsort(chld_out.line + 1, chld_out.lines - 1, sizeof(char*), cmpstringp);
386#endif /* PS_USES_PROCPCPU */ 410#endif /* PS_USES_PROCPCPU */
387 int lines_to_show = chld_out.lines < (n_procs_to_show + 1) 411 int lines_to_show = chld_out.lines < (size_t)(n_procs_to_show + 1)
388 ? chld_out.lines : n_procs_to_show + 1; 412 ? (int)chld_out.lines : n_procs_to_show + 1;
389 for (i = 0; i < lines_to_show; i += 1) { 413 for (i = 0; i < lines_to_show; i += 1) {
390 printf("%s\n", chld_out.line[i]); 414 printf("%s\n", chld_out.line[i]);
391 } 415 }
diff --git a/plugins/check_ntp.c b/plugins/check_ntp.c
index 914b40c..8b776ba 100644
--- a/plugins/check_ntp.c
+++ b/plugins/check_ntp.c
@@ -355,7 +355,7 @@ int best_offset_server(const ntp_server_results *slist, int nservers){
355 * - we also "manually" handle resolving host names and connecting, because 355 * - we also "manually" handle resolving host names and connecting, because
356 * we have to do it in a way that our lazy macros don't handle currently :( */ 356 * we have to do it in a way that our lazy macros don't handle currently :( */
357double offset_request(const char *host, int *status){ 357double offset_request(const char *host, int *status){
358 int i=0, j=0, ga_result=0, num_hosts=0, *socklist=NULL, respnum=0; 358 int i=0, ga_result=0, num_hosts=0, *socklist=NULL, respnum=0;
359 int servers_completed=0, one_read=0, servers_readable=0, best_index=-1; 359 int servers_completed=0, one_read=0, servers_readable=0, best_index=-1;
360 time_t now_time=0, start_ts=0; 360 time_t now_time=0, start_ts=0;
361 ntp_message *req=NULL; 361 ntp_message *req=NULL;
@@ -488,7 +488,7 @@ double offset_request(const char *host, int *status){
488 /* cleanup */ 488 /* cleanup */
489 /* FIXME: Not closing the socket to avoid re-use of the local port 489 /* FIXME: Not closing the socket to avoid re-use of the local port
490 * which can cause old NTP packets to be read instead of NTP control 490 * which can cause old NTP packets to be read instead of NTP control
491 * pactets in jitter_request(). THERE MUST BE ANOTHER WAY... 491 * packets in jitter_request(). THERE MUST BE ANOTHER WAY...
492 * for(j=0; j<num_hosts; j++){ close(socklist[j]); } */ 492 * for(j=0; j<num_hosts; j++){ close(socklist[j]); } */
493 free(socklist); 493 free(socklist);
494 free(ufds); 494 free(ufds);
@@ -512,7 +512,7 @@ setup_control_request(ntp_control_message *p, uint8_t opcode, uint16_t seq){
512} 512}
513 513
514/* XXX handle responses with the error bit set */ 514/* XXX handle responses with the error bit set */
515double jitter_request(const char *host, int *status){ 515double jitter_request(int *status){
516 int conn=-1, i, npeers=0, num_candidates=0, syncsource_found=0; 516 int conn=-1, i, npeers=0, num_candidates=0, syncsource_found=0;
517 int run=0, min_peer_sel=PEER_INCLUDED, num_selected=0, num_valid=0; 517 int run=0, min_peer_sel=PEER_INCLUDED, num_selected=0, num_valid=0;
518 int peers_size=0, peer_offset=0; 518 int peers_size=0, peer_offset=0;
@@ -803,7 +803,7 @@ int main(int argc, char *argv[]){
803 * (for example) will result in an error 803 * (for example) will result in an error
804 */ 804 */
805 if(do_jitter){ 805 if(do_jitter){
806 jitter=jitter_request(server_address, &jitter_result); 806 jitter=jitter_request(&jitter_result);
807 result = max_state_alt(result, get_status(jitter, jitter_thresholds)); 807 result = max_state_alt(result, get_status(jitter, jitter_thresholds));
808 /* -1 indicates that we couldn't calculate the jitter 808 /* -1 indicates that we couldn't calculate the jitter
809 * Only overrides STATE_OK from the offset */ 809 * Only overrides STATE_OK from the offset */
diff --git a/plugins/check_pgsql.c b/plugins/check_pgsql.c
index c893386..c26cd43 100644
--- a/plugins/check_pgsql.c
+++ b/plugins/check_pgsql.c
@@ -69,7 +69,6 @@ int process_arguments (int, char **);
69int validate_arguments (void); 69int validate_arguments (void);
70void print_usage (void); 70void print_usage (void);
71void print_help (void); 71void print_help (void);
72int is_pg_dbname (char *);
73int is_pg_logname (char *); 72int is_pg_logname (char *);
74int do_query (PGconn *, char *); 73int do_query (PGconn *, char *);
75 74
@@ -347,10 +346,10 @@ process_arguments (int argc, char **argv)
347 pgport = optarg; 346 pgport = optarg;
348 break; 347 break;
349 case 'd': /* database name */ 348 case 'd': /* database name */
350 if (!is_pg_dbname (optarg)) /* checks length and valid chars */ 349 if (strlen(optarg) >= NAMEDATALEN) {
351 usage2 (_("Database name is not valid"), optarg); 350 usage2 (_("Database name exceeds the maximum length"), optarg);
352 else /* we know length, and know optarg is terminated, so us strcpy */ 351 }
353 snprintf(dbName, NAMEDATALEN, "%s", optarg); 352 snprintf(dbName, NAMEDATALEN, "%s", optarg);
354 break; 353 break;
355 case 'l': /* login name */ 354 case 'l': /* login name */
356 if (!is_pg_logname (optarg)) 355 if (!is_pg_logname (optarg))
@@ -414,45 +413,6 @@ validate_arguments ()
414 return OK; 413 return OK;
415} 414}
416 415
417
418/******************************************************************************
419
420@@-
421<sect3>
422<title>is_pg_dbname</title>
423
424<para>&PROTO_is_pg_dbname;</para>
425
426<para>Given a database name, this function returns TRUE if the string
427is a valid PostgreSQL database name, and returns false if it is
428not.</para>
429
430<para>Valid PostgreSQL database names are less than &NAMEDATALEN;
431characters long and consist of letters, numbers, and underscores. The
432first character cannot be a number, however.</para>
433
434</sect3>
435-@@
436******************************************************************************/
437
438
439
440int
441is_pg_dbname (char *dbname)
442{
443 char txt[NAMEDATALEN];
444 char tmp[NAMEDATALEN];
445 if (strlen (dbname) > NAMEDATALEN - 1)
446 return (FALSE);
447 strncpy (txt, dbname, NAMEDATALEN - 1);
448 txt[NAMEDATALEN - 1] = 0;
449 if (sscanf (txt, "%[_a-zA-Z]%[^_a-zA-Z0-9-]", tmp, tmp) == 1)
450 return (TRUE);
451 if (sscanf (txt, "%[_a-zA-Z]%[_a-zA-Z0-9-]%[^_a-zA-Z0-9-]", tmp, tmp, tmp) ==
452 2) return (TRUE);
453 return (FALSE);
454}
455
456/** 416/**
457 417
458the tango program should eventually create an entity here based on the 418the tango program should eventually create an entity here based on the
diff --git a/plugins/check_swap.c b/plugins/check_swap.c
index ff58b15..a607da1 100644
--- a/plugins/check_swap.c
+++ b/plugins/check_swap.c
@@ -410,7 +410,6 @@ check_swap(float free_swap_mb, float total_swap_mb)
410 uint64_t usage_percentage = ((total_swap_mb - free_swap_mb) / total_swap_mb) * 100; 410 uint64_t usage_percentage = ((total_swap_mb - free_swap_mb) / total_swap_mb) * 100;
411 411
412 if (crit.is_percentage && 412 if (crit.is_percentage &&
413 usage_percentage >= 0 &&
414 crit.value != 0 && 413 crit.value != 0 &&
415 usage_percentage >= (100 - crit.value)) 414 usage_percentage >= (100 - crit.value))
416 { 415 {
@@ -418,7 +417,6 @@ check_swap(float free_swap_mb, float total_swap_mb)
418 } 417 }
419 418
420 if (warn.is_percentage && 419 if (warn.is_percentage &&
421 usage_percentage >= 0 &&
422 warn.value != 0 && 420 warn.value != 0 &&
423 usage_percentage >= (100 - warn.value)) 421 usage_percentage >= (100 - warn.value))
424 { 422 {
@@ -475,10 +473,9 @@ process_arguments (int argc, char **argv)
475 if (is_uint64(optarg, &warn.value)) { 473 if (is_uint64(optarg, &warn.value)) {
476 if (warn.value > 100) { 474 if (warn.value > 100) {
477 usage4 (_("Warning threshold percentage must be <= 100!")); 475 usage4 (_("Warning threshold percentage must be <= 100!"));
478 } else {
479 break;
480 } 476 }
481 } 477 }
478 break;
482 } else { 479 } else {
483 /* It's Bytes */ 480 /* It's Bytes */
484 warn.is_percentage = 0; 481 warn.is_percentage = 0;
@@ -506,10 +503,9 @@ process_arguments (int argc, char **argv)
506 if (is_uint64(optarg, &crit.value)) { 503 if (is_uint64(optarg, &crit.value)) {
507 if (crit.value> 100) { 504 if (crit.value> 100) {
508 usage4 (_("Critical threshold percentage must be <= 100!")); 505 usage4 (_("Critical threshold percentage must be <= 100!"));
509 } else {
510 break;
511 } 506 }
512 } 507 }
508 break;
513 } else { 509 } else {
514 /* It's Bytes */ 510 /* It's Bytes */
515 crit.is_percentage = 0; 511 crit.is_percentage = 0;
@@ -527,6 +523,7 @@ process_arguments (int argc, char **argv)
527 if ((no_swap_state = mp_translate_state(optarg)) == ERROR) { 523 if ((no_swap_state = mp_translate_state(optarg)) == ERROR) {
528 usage4 (_("no-swap result must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3).")); 524 usage4 (_("no-swap result must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3)."));
529 } 525 }
526 break;
530 case 'v': /* verbose */ 527 case 'v': /* verbose */
531 verbose++; 528 verbose++;
532 break; 529 break;
diff --git a/plugins/t/check_curl.t b/plugins/t/check_curl.t
index 693f4b2..eae98cc 100644
--- a/plugins/t/check_curl.t
+++ b/plugins/t/check_curl.t
@@ -1,15 +1,22 @@
1#! /usr/bin/perl -w -I .. 1#! /usr/bin/perl -w -I ..
2# 2#
3# HyperText Transfer Protocol (HTTP) Test via check_http 3# HyperText Transfer Protocol (HTTP) Test via check_curl
4# 4#
5# 5#
6 6
7use strict; 7use strict;
8use Test::More; 8use Test::More;
9use POSIX qw/mktime strftime/; 9use POSIX qw/mktime strftime/;
10use NPTest;
11 10
12plan tests => 57; 11use vars qw($tests $has_ipv6);
12
13BEGIN {
14 use NPTest;
15 $has_ipv6 = NPTest::has_ipv6();
16 $tests = $has_ipv6 ? 59 : 57;
17 plan tests => $tests;
18}
19
13 20
14my $successOutput = '/OK.*HTTP.*second/'; 21my $successOutput = '/OK.*HTTP.*second/';
15 22
@@ -18,6 +25,7 @@ my $plugin = 'check_http';
18$plugin = 'check_curl' if $0 =~ m/check_curl/mx; 25$plugin = 'check_curl' if $0 =~ m/check_curl/mx;
19 26
20my $host_tcp_http = getTestParameter("NP_HOST_TCP_HTTP", "A host providing the HTTP Service (a web server)", "localhost"); 27my $host_tcp_http = getTestParameter("NP_HOST_TCP_HTTP", "A host providing the HTTP Service (a web server)", "localhost");
28my $host_tcp_http_ipv6 = getTestParameter("NP_HOST_TCP_HTTP_IPV6", "An IPv6 address providing a HTTP Service (a web server)", "::1");
21my $host_tls_http = getTestParameter("NP_HOST_TLS_HTTP", "A host providing the HTTPS Service (a tls web server)", "localhost"); 29my $host_tls_http = getTestParameter("NP_HOST_TLS_HTTP", "A host providing the HTTPS Service (a tls web server)", "localhost");
22my $host_tls_cert = getTestParameter("NP_HOST_TLS_CERT", "the common name of the certificate.", "localhost"); 30my $host_tls_cert = getTestParameter("NP_HOST_TLS_CERT", "the common name of the certificate.", "localhost");
23my $host_nonresponsive = getTestParameter("NP_HOST_NONRESPONSIVE", "The hostname of system not responsive to network requests", "10.0.0.1"); 31my $host_nonresponsive = getTestParameter("NP_HOST_NONRESPONSIVE", "The hostname of system not responsive to network requests", "10.0.0.1");
@@ -31,26 +39,35 @@ my $faketime = -x '/usr/bin/faketime' ? 1 : 0;
31 39
32 40
33$res = NPTest->testCmd( 41$res = NPTest->testCmd(
34 "./$plugin $host_tcp_http -wt 300 -ct 600" 42 "./$plugin $host_tcp_http -wt 300 -ct 600"
35 ); 43 );
36cmp_ok( $res->return_code, '==', 0, "Webserver $host_tcp_http responded" ); 44cmp_ok( $res->return_code, '==', 0, "Webserver $host_tcp_http responded" );
37like( $res->output, $successOutput, "Output OK" ); 45like( $res->output, $successOutput, "Output OK" );
38 46
47if ($has_ipv6) {
48 # Test for IPv6 formatting
49 $res = NPTest->testCmd(
50 "./$plugin -I $host_tcp_http_ipv6 -wt 300 -ct 600"
51 );
52 cmp_ok( $res->return_code, '==', 0, "IPv6 URL formatting is working" );
53 like( $res->output, $successOutput, "Output OK" );
54}
55
39$res = NPTest->testCmd( 56$res = NPTest->testCmd(
40 "./$plugin $host_tcp_http -wt 300 -ct 600 -v -v -v -k 'bob:there' -k 'carl:frown'" 57 "./$plugin $host_tcp_http -wt 300 -ct 600 -v -v -v -k 'bob:there' -k 'carl:frown'"
41 ); 58 );
42like( $res->output, '/bob:there\r\ncarl:frown\r\n/', "Got headers with multiple -k options" ); 59like( $res->output, '/bob:there\r\ncarl:frown\r\n/', "Got headers with multiple -k options" );
43 60
44$res = NPTest->testCmd( 61$res = NPTest->testCmd(
45 "./$plugin $host_nonresponsive -wt 1 -ct 2 -t 3" 62 "./$plugin $host_nonresponsive -wt 1 -ct 2 -t 3"
46 ); 63 );
47cmp_ok( $res->return_code, '==', 2, "Webserver $host_nonresponsive not responding" ); 64cmp_ok( $res->return_code, '==', 2, "Webserver $host_nonresponsive not responding" );
48# was CRITICAL only, but both check_curl and check_http print HTTP CRITICAL (puzzle?!) 65# was CRITICAL only, but both check_curl and check_http print HTTP CRITICAL (puzzle?!)
49like( $res->output, "/HTTP CRITICAL - Invalid HTTP response received from host on port 80: cURL returned 28 - Connection timed out after/", "Output OK"); 66like( $res->output, "/HTTP CRITICAL - Invalid HTTP response received from host on port 80: cURL returned 28 - Connection timed out after/", "Output OK");
50 67
51$res = NPTest->testCmd( 68$res = NPTest->testCmd(
52 "./$plugin $hostname_invalid -wt 1 -ct 2" 69 "./$plugin $hostname_invalid -wt 1 -ct 2"
53 ); 70 );
54cmp_ok( $res->return_code, '==', 2, "Webserver $hostname_invalid not valid" ); 71cmp_ok( $res->return_code, '==', 2, "Webserver $hostname_invalid not valid" );
55# The first part of the message comes from the OS catalogue, so cannot check this. 72# The first part of the message comes from the OS catalogue, so cannot check this.
56# On Debian, it is Name or service not known, on Darwin, it is No address associated with nodename 73# On Debian, it is Name or service not known, on Darwin, it is No address associated with nodename
diff --git a/plugins/t/check_load.t b/plugins/t/check_load.t
index 60837ef..bba8947 100644
--- a/plugins/t/check_load.t
+++ b/plugins/t/check_load.t
@@ -11,10 +11,12 @@ use NPTest;
11my $res; 11my $res;
12 12
13my $loadValue = "[0-9]+\.?[0-9]+"; 13my $loadValue = "[0-9]+\.?[0-9]+";
14my $successOutput = "/^LOAD OK - load average: $loadValue, $loadValue, $loadValue/"; 14my $successOutput = "/^LOAD OK - total load average: $loadValue, $loadValue, $loadValue/";
15my $failureOutput = "/^LOAD CRITICAL - load average: $loadValue, $loadValue, $loadValue/"; 15my $successScaledOutput = "/^LOAD OK - scaled load average: $loadValue, $loadValue, $loadValue - total load average: $loadValue, $loadValue, $loadValue/";
16my $failureOutput = "/^LOAD CRITICAL - total load average: $loadValue, $loadValue, $loadValue/";
17my $failurScaledOutput = "/^LOAD CRITICAL - scaled load average: $loadValue, $loadValue, $loadValue - total load average: $loadValue, $loadValue, $loadValue/";
16 18
17plan tests => 11; 19plan tests => 13;
18 20
19$res = NPTest->testCmd( "./check_load -w 100,100,100 -c 100,100,100" ); 21$res = NPTest->testCmd( "./check_load -w 100,100,100 -c 100,100,100" );
20cmp_ok( $res->return_code, 'eq', 0, "load not over 100"); 22cmp_ok( $res->return_code, 'eq', 0, "load not over 100");
@@ -26,7 +28,7 @@ like( $res->output, $failureOutput, "Output OK");
26 28
27$res = NPTest->testCmd( "./check_load -r -w 0,0,0 -c 0,0,0" ); 29$res = NPTest->testCmd( "./check_load -r -w 0,0,0 -c 0,0,0" );
28cmp_ok( $res->return_code, 'eq', 2, "Load over 0 with per cpu division"); 30cmp_ok( $res->return_code, 'eq', 2, "Load over 0 with per cpu division");
29like( $res->output, $failureOutput, "Output OK"); 31like( $res->output, $failurScaledOutput, "Output OK");
30 32
31$res = NPTest->testCmd( "./check_load -w 100 -c 100,110" ); 33$res = NPTest->testCmd( "./check_load -w 100 -c 100,110" );
32cmp_ok( $res->return_code, 'eq', 0, "Plugin can handle non-triplet-arguments"); 34cmp_ok( $res->return_code, 'eq', 0, "Plugin can handle non-triplet-arguments");
@@ -34,3 +36,8 @@ like( $res->output, $successOutput, "Output OK");
34like( $res->perf_output, "/load1=$loadValue;100.000;100.000/", "Test handling of non triplet thresholds (load1)"); 36like( $res->perf_output, "/load1=$loadValue;100.000;100.000/", "Test handling of non triplet thresholds (load1)");
35like( $res->perf_output, "/load5=$loadValue;100.000;110.000/", "Test handling of non triplet thresholds (load5)"); 37like( $res->perf_output, "/load5=$loadValue;100.000;110.000/", "Test handling of non triplet thresholds (load5)");
36like( $res->perf_output, "/load15=$loadValue;100.000;110.000/", "Test handling of non triplet thresholds (load15)"); 38like( $res->perf_output, "/load15=$loadValue;100.000;110.000/", "Test handling of non triplet thresholds (load15)");
39
40
41$res = NPTest->testCmd( "./check_load -w 100,100,100 -c 100,100,100 -r" );
42cmp_ok( $res->return_code, 'eq', 0, "load not over 100");
43like( $res->output, $successScaledOutput, "Output OK");
diff --git a/plugins/utils.c b/plugins/utils.c
index 17dd581..b4214c6 100644
--- a/plugins/utils.c
+++ b/plugins/utils.c
@@ -615,27 +615,27 @@ char *perfdata_uint64 (const char *label,
615 char *data = NULL; 615 char *data = NULL;
616 616
617 if (strpbrk (label, "'= ")) 617 if (strpbrk (label, "'= "))
618 xasprintf (&data, "'%s'=%ld%s;", label, val, uom); 618 xasprintf (&data, "'%s'=%" PRIu64 "%s;", label, val, uom);
619 else 619 else
620 xasprintf (&data, "%s=%ld%s;", label, val, uom); 620 xasprintf (&data, "%s=%" PRIu64 "%s;", label, val, uom);
621 621
622 if (warnp) 622 if (warnp)
623 xasprintf (&data, "%s%lu;", data, warn); 623 xasprintf (&data, "%s%" PRIu64 ";", data, warn);
624 else 624 else
625 xasprintf (&data, "%s;", data); 625 xasprintf (&data, "%s;", data);
626 626
627 if (critp) 627 if (critp)
628 xasprintf (&data, "%s%lu;", data, crit); 628 xasprintf (&data, "%s%" PRIu64 ";", data, crit);
629 else 629 else
630 xasprintf (&data, "%s;", data); 630 xasprintf (&data, "%s;", data);
631 631
632 if (minp) 632 if (minp)
633 xasprintf (&data, "%s%lu;", data, minv); 633 xasprintf (&data, "%s%" PRIu64 ";", data, minv);
634 else 634 else
635 xasprintf (&data, "%s;", data); 635 xasprintf (&data, "%s;", data);
636 636
637 if (maxp) 637 if (maxp)
638 xasprintf (&data, "%s%lu", data, maxv); 638 xasprintf (&data, "%s%" PRIu64, data, maxv);
639 639
640 return data; 640 return data;
641} 641}
@@ -656,27 +656,27 @@ char *perfdata_int64 (const char *label,
656 char *data = NULL; 656 char *data = NULL;
657 657
658 if (strpbrk (label, "'= ")) 658 if (strpbrk (label, "'= "))
659 xasprintf (&data, "'%s'=%ld%s;", label, val, uom); 659 xasprintf (&data, "'%s'=%" PRId64 "%s;", label, val, uom);
660 else 660 else
661 xasprintf (&data, "%s=%ld%s;", label, val, uom); 661 xasprintf (&data, "%s=%" PRId64 "%s;", label, val, uom);
662 662
663 if (warnp) 663 if (warnp)
664 xasprintf (&data, "%s%ld;", data, warn); 664 xasprintf (&data, "%s%" PRId64 ";", data, warn);
665 else 665 else
666 xasprintf (&data, "%s;", data); 666 xasprintf (&data, "%s;", data);
667 667
668 if (critp) 668 if (critp)
669 xasprintf (&data, "%s%ld;", data, crit); 669 xasprintf (&data, "%s%" PRId64 ";", data, crit);
670 else 670 else
671 xasprintf (&data, "%s;", data); 671 xasprintf (&data, "%s;", data);
672 672
673 if (minp) 673 if (minp)
674 xasprintf (&data, "%s%ld;", data, minv); 674 xasprintf (&data, "%s%" PRId64 ";", data, minv);
675 else 675 else
676 xasprintf (&data, "%s;", data); 676 xasprintf (&data, "%s;", data);
677 677
678 if (maxp) 678 if (maxp)
679 xasprintf (&data, "%s%ld", data, maxv); 679 xasprintf (&data, "%s%" PRId64, data, maxv);
680 680
681 return data; 681 return data;
682} 682}