diff options
111 files changed, 5359 insertions, 19319 deletions
diff --git a/.clang-format b/.clang-format new file mode 100644 index 00000000..c7f0b5ed --- /dev/null +++ b/.clang-format | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | BasedOnStyle: LLVM | ||
| 2 | UseTab: ForContinuationAndIndentation | ||
| 3 | IndentWidth: 4 | ||
| 4 | TabWidth: 4 | ||
| 5 | AllowShortIfStatementsOnASingleLine: false | ||
| 6 | BreakBeforeBraces: Attach | ||
| 7 | AlignConsecutiveMacros: true | ||
| 8 | ColumnLimit: 180 | ||
| 9 | IndentPPDirectives: AfterHash | ||
| 10 | SortIncludes: Never | ||
diff --git a/.github/mock.sh b/.github/mock.sh new file mode 100755 index 00000000..7fbe6903 --- /dev/null +++ b/.github/mock.sh | |||
| @@ -0,0 +1,50 @@ | |||
| 1 | #!/bin/bash | ||
| 2 | |||
| 3 | set -x | ||
| 4 | |||
| 5 | export DEBIAN_FRONTEND=noninteractive | ||
| 6 | |||
| 7 | BASE_PATH="/src" | ||
| 8 | |||
| 9 | ls -la ${BASE_PATH}/.github/os_detect.sh | ||
| 10 | . ${BASE_PATH}/.github/os_detect.sh | ||
| 11 | |||
| 12 | SRCRPM_DIR="/tmp/result-srcrpm" | ||
| 13 | RPM_DIR="/tmp/result-rpm" | ||
| 14 | SPEC_DIR="${BASE_PATH}/.github/" | ||
| 15 | SOURCE_DIR="." | ||
| 16 | SPEC_FILE="${SPEC_DIR}monitoring-plugins.spec" | ||
| 17 | |||
| 18 | cd ${BASE_PATH} | ||
| 19 | |||
| 20 | dnf -y --setopt="tsflags=nodocs" update && \ | ||
| 21 | if [ ${distro_id} != "fedora" ]; then dnf -y --setopt="tsflags=nodocs" install epel-release; else platform_id="$(echo ${platform_id} | sed s/^f/fc/)"; fi && \ | ||
| 22 | case ${distro_id} in | ||
| 23 | ol) | ||
| 24 | case ${platform_id} in | ||
| 25 | el9) | ||
| 26 | dnf config-manager --add-repo https://copr.fedorainfracloud.org/coprs/g/mock/mock-stable/repo/epel-9/group_mock-mock-stable-epel-9.repo | ||
| 27 | ;; | ||
| 28 | el8) | ||
| 29 | dnf config-manager --add-repo https://copr.fedorainfracloud.org/coprs/g/mock/mock-stable/repo/epel-8/group_mock-mock-stable-epel-8.repo | ||
| 30 | ;; | ||
| 31 | esac | ||
| 32 | ;; | ||
| 33 | esac | ||
| 34 | dnf -y --setopt="tsflags=nodocs" install mock rpm-build git-core && \ | ||
| 35 | usermod -a -G mock $(whoami) | ||
| 36 | SRC_RPM="monitoring-plugins-*-1.${platform_id}.src.rpm" | ||
| 37 | if command -v git > /dev/null 2>&1; then | ||
| 38 | git config --global --add safe.directory ${BASE_PATH} | ||
| 39 | SHA="$(git rev-parse HEAD)" | ||
| 40 | sed "s/^%global commit.*/%global commit ${SHA}/" ${SPEC_FILE} > ${SPEC_DIR}monitoring-plugins-git.spec | ||
| 41 | sed -i "s/^%global fromgit.*/%global fromgit 1/" ${SPEC_DIR}monitoring-plugins-git.spec | ||
| 42 | SPEC_FILE="${SPEC_DIR}monitoring-plugins-git.spec" | ||
| 43 | SRC_RPM="monitoring-plugins-*git.$(echo ${SHA:0:7})*.${platform_id}.src.rpm" | ||
| 44 | fi | ||
| 45 | mkdir -p "${SRCRPM_DIR}" "${RPM_DIR}" | ||
| 46 | #rpmbuild --undefine=_disable_source_fetch --define "_sourcedir ${SOURCE_DIR}" -ba ${SPEC_FILE} | ||
| 47 | dnf -y --setopt="tsflags=nodocs" install rpmdevtools && spectool -g -C ${SOURCE_DIR} ${SPEC_FILE} && \ | ||
| 48 | mock --dnf --clean --spec ${SPEC_FILE} --sources=${SOURCE_DIR} --result=${SRCRPM_DIR} --build || { cat ${SRCRPM_DIR}/{root,build}.log; exit 1; } | ||
| 49 | mock --dnf --clean --sources=${SOURCE_DIR} --result=${RPM_DIR} --rebuild ${SRCRPM_DIR}/${SRC_RPM} || { cat ${RPM_DIR}/{root,build}.log; exit 1; } | ||
| 50 | ls -la ${SOURCE_DIR} ${SRCRPM_DIR} ${RPM_DIR} | ||
diff --git a/.github/monitoring-plugins.spec b/.github/monitoring-plugins.spec new file mode 100644 index 00000000..5cae3e59 --- /dev/null +++ b/.github/monitoring-plugins.spec | |||
| @@ -0,0 +1,975 @@ | |||
| 1 | %global upstream_name monitoring-plugins | ||
| 2 | %global version 2.3.3 | ||
| 3 | %global plugindir %{_libdir}/monitoring/plugins | ||
| 4 | %global commit 72dd0a308130b9778828d143d1b9d9906218d6ac | ||
| 5 | %global shortcommit %(c=%{commit}; echo ${c:0:7}) | ||
| 6 | %global fromgit 0 | ||
| 7 | |||
| 8 | %define _unpackaged_files_terminate_build 0 | ||
| 9 | |||
| 10 | Name: %{upstream_name} | ||
| 11 | Version: %{version} | ||
| 12 | Summary: Monitoring Plugins from the Monitoring Plugins Team | ||
| 13 | |||
| 14 | License: GPLv3 | ||
| 15 | URL: https://www.monitoring-plugins.org | ||
| 16 | ## When using checkouts from git, use the following | ||
| 17 | %if 0%{?fromgit} | ||
| 18 | Release: git.%{?shortcommit}.1%{?dist} | ||
| 19 | Source0: https://github.com/monitoring-plugins/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz | ||
| 20 | %else | ||
| 21 | Release: 1%{?dist} | ||
| 22 | Source0: https://www.monitoring-plugins.org/download/monitoring-plugins-%{version}.tar.gz | ||
| 23 | %endif | ||
| 24 | Conflicts: nagios-plugins | ||
| 25 | |||
| 26 | |||
| 27 | |||
| 28 | |||
| 29 | ##### BUILD REQUIREMENTS ##### | ||
| 30 | # Needed for the git code | ||
| 31 | %if 0%{?fromgit} | ||
| 32 | BuildRequires: automake | ||
| 33 | BuildRequires: autoconf | ||
| 34 | BuildRequires: gettext-devel | ||
| 35 | %endif | ||
| 36 | ### General build requirements | ||
| 37 | BuildRequires: gcc | ||
| 38 | BuildRequires: make | ||
| 39 | BuildRequires: automake | ||
| 40 | |||
| 41 | ### Check Plugin specific build requirements | ||
| 42 | # check_by_ssh | ||
| 43 | BuildRequires: openssh-clients | ||
| 44 | |||
| 45 | # check_curl | ||
| 46 | BuildRequires: libcurl-devel >= 7.15.2 | ||
| 47 | BuildRequires: openssl-devel | ||
| 48 | BuildRequires: uriparser-devel >= 0.7.5 | ||
| 49 | |||
| 50 | # check_dbi | ||
| 51 | %if 0%{?rhel} != 9 | ||
| 52 | BuildRequires: libdbi-devel | ||
| 53 | %endif | ||
| 54 | |||
| 55 | # check_dig check_dns | ||
| 56 | BuildRequires: bind-utils | ||
| 57 | |||
| 58 | # check_disk_smb | ||
| 59 | %if 0%{?rhel} == 7 | ||
| 60 | BuildRequires: samba-client | ||
| 61 | %endif | ||
| 62 | |||
| 63 | # check_fping | ||
| 64 | BuildRequires: fping | ||
| 65 | |||
| 66 | # check_game | ||
| 67 | %if 0%{?rhel} != 8 | ||
| 68 | BuildRequires: qstat | ||
| 69 | %endif | ||
| 70 | |||
| 71 | # check_hpjd | ||
| 72 | BuildRequires: net-snmp-utils | ||
| 73 | |||
| 74 | # check_ldap check_ldaps | ||
| 75 | BuildRequires: openldap-devel | ||
| 76 | |||
| 77 | # check_load | ||
| 78 | BuildRequires: procps-ng | ||
| 79 | |||
| 80 | # check_mysql check_mysql_query | ||
| 81 | %if 0%{?rhel} == 7 | ||
| 82 | BuildRequires: mariadb-devel | ||
| 83 | %endif | ||
| 84 | |||
| 85 | # check_pgsql | ||
| 86 | BuildRequires: postgresql-devel | ||
| 87 | |||
| 88 | # check_radius | ||
| 89 | BuildRequires: radcli-devel | ||
| 90 | |||
| 91 | %description | ||
| 92 | Common files for Monitoring Plugins | ||
| 93 | |||
| 94 | %files | ||
| 95 | %{plugindir}/negate | ||
| 96 | %{plugindir}/urlize | ||
| 97 | %{plugindir}/utils.pm | ||
| 98 | %{plugindir}/utils.sh | ||
| 99 | %doc ABOUT-NLS | ||
| 100 | %doc ACKNOWLEDGEMENTS | ||
| 101 | %doc AUTHORS | ||
| 102 | %doc CODING | ||
| 103 | %doc FAQ | ||
| 104 | %doc NEWS | ||
| 105 | %doc README | ||
| 106 | %doc REQUIREMENTS | ||
| 107 | %doc SUPPORT | ||
| 108 | %license COPYING | ||
| 109 | |||
| 110 | |||
| 111 | |||
| 112 | |||
| 113 | ##### ACTUAL BUILD ##### | ||
| 114 | %prep | ||
| 115 | %if 0%{?fromgit} | ||
| 116 | %autosetup -n %{upstream_name}-%{commit} | ||
| 117 | %else | ||
| 118 | %autosetup -n %{upstream_name}-%{version} | ||
| 119 | %endif | ||
| 120 | |||
| 121 | |||
| 122 | %build | ||
| 123 | %if 0%{?fromgit} | ||
| 124 | ./tools/setup | ||
| 125 | %endif | ||
| 126 | %configure \ | ||
| 127 | --prefix=%{_prefix} \ | ||
| 128 | --libexecdir=%{plugindir} \ | ||
| 129 | --with-openssl=/usr \ | ||
| 130 | --with-ping-command="/usr/bin/ping -4 -n -U -w %d -c %d %s" \ | ||
| 131 | --with-ping6-command="/usr/bin/ping -6 -n -U -w %d -c %d %s" | ||
| 132 | %make_build | ||
| 133 | |||
| 134 | %if 0%{?fromgit} | ||
| 135 | make THANKS | ||
| 136 | %endif | ||
| 137 | |||
| 138 | %install | ||
| 139 | %make_install | ||
| 140 | %{__make} install-root DESTDIR=%{buildroot} INSTALL="%{__install} -p" | ||
| 141 | |||
| 142 | |||
| 143 | |||
| 144 | |||
| 145 | ##### SUB PACKAGES ##### | ||
| 146 | # all | ||
| 147 | %package all | ||
| 148 | Summary: Monitoring Plugins - All Check Plugins | ||
| 149 | Requires: %{name} | ||
| 150 | Requires: %{name}-apt | ||
| 151 | Requires: %{name}-breeze | ||
| 152 | Requires: %{name}-by_ssh | ||
| 153 | Requires: %{name}-cluster | ||
| 154 | Requires: %{name}-curl | ||
| 155 | %if 0%{?rhel} != 9 | ||
| 156 | Requires: %{name}-dbi | ||
| 157 | %endif | ||
| 158 | Requires: %{name}-dhcp | ||
| 159 | Requires: %{name}-dig | ||
| 160 | Requires: %{name}-disk | ||
| 161 | %if 0%{?rhel} == 7 | ||
| 162 | Requires: %{name}-disk_smb | ||
| 163 | %endif | ||
| 164 | Requires: %{name}-dns | ||
| 165 | Requires: %{name}-dummy | ||
| 166 | Requires: %{name}-file_age | ||
| 167 | Requires: %{name}-flexlm | ||
| 168 | Requires: %{name}-fping | ||
| 169 | %if 0%{?rhel} != 8 | ||
| 170 | Requires: %{name}-game | ||
| 171 | %endif | ||
| 172 | Requires: %{name}-hpjd | ||
| 173 | Requires: %{name}-http | ||
| 174 | Requires: %{name}-icmp | ||
| 175 | Requires: %{name}-ide_smart | ||
| 176 | Requires: %{name}-ifoperstatus | ||
| 177 | Requires: %{name}-ifstatus | ||
| 178 | Requires: %{name}-ircd | ||
| 179 | Requires: %{name}-ldap | ||
| 180 | Requires: %{name}-load | ||
| 181 | Requires: %{name}-log | ||
| 182 | Requires: %{name}-mailq | ||
| 183 | Requires: %{name}-mrtg | ||
| 184 | Requires: %{name}-mrtgtraf | ||
| 185 | %if 0%{?rhel} == 7 | ||
| 186 | Requires: %{name}-mysql | ||
| 187 | Requires: %{name}-mysql_query | ||
| 188 | %endif | ||
| 189 | Requires: %{name}-nagios | ||
| 190 | Requires: %{name}-nt | ||
| 191 | Requires: %{name}-ntp | ||
| 192 | Requires: %{name}-ntp_peer | ||
| 193 | Requires: %{name}-ntp_time | ||
| 194 | Requires: %{name}-nwstat | ||
| 195 | Requires: %{name}-oracle | ||
| 196 | Requires: %{name}-overcr | ||
| 197 | Requires: %{name}-pgsql | ||
| 198 | Requires: %{name}-ping | ||
| 199 | Requires: %{name}-procs | ||
| 200 | Requires: %{name}-radius | ||
| 201 | Requires: %{name}-real | ||
| 202 | Requires: %{name}-rpc | ||
| 203 | Requires: %{name}-sensors | ||
| 204 | Requires: %{name}-smtp | ||
| 205 | Requires: %{name}-snmp | ||
| 206 | Requires: %{name}-ssh | ||
| 207 | Requires: %{name}-swap | ||
| 208 | Requires: %{name}-tcp | ||
| 209 | Requires: %{name}-time | ||
| 210 | Requires: %{name}-ups | ||
| 211 | Requires: %{name}-uptime | ||
| 212 | Requires: %{name}-users | ||
| 213 | Requires: %{name}-wave | ||
| 214 | |||
| 215 | %description all | ||
| 216 | Meta package that requires all the check plugins of the Monitoring Plugins | ||
| 217 | |||
| 218 | %files all | ||
| 219 | |||
| 220 | |||
| 221 | |||
| 222 | # check_apt | ||
| 223 | %package apt | ||
| 224 | Summary: Monitoring Plugins - check_apt | ||
| 225 | Requires: %{name} = %{version}-%{release} | ||
| 226 | |||
| 227 | %description apt | ||
| 228 | Provides check_apt of the Monitoring Plugins. | ||
| 229 | |||
| 230 | %files apt | ||
| 231 | %{plugindir}/check_apt | ||
| 232 | |||
| 233 | |||
| 234 | |||
| 235 | # check_breeze | ||
| 236 | %package breeze | ||
| 237 | Summary: Monitoring Plugins - check_breeze | ||
| 238 | Requires: %{name} = %{version}-%{release} | ||
| 239 | |||
| 240 | %description breeze | ||
| 241 | Provides check_breeze of the Monitoring Plugins. | ||
| 242 | |||
| 243 | %files breeze | ||
| 244 | %{plugindir}/check_breeze | ||
| 245 | |||
| 246 | |||
| 247 | |||
| 248 | # check_by_ssh | ||
| 249 | %package by_ssh | ||
| 250 | Summary: Monitoring Plugins - check_by_ssh | ||
| 251 | Requires: %{name} = %{version}-%{release} | ||
| 252 | |||
| 253 | %description by_ssh | ||
| 254 | Provides check_by_ssh of the Monitoring Plugins. | ||
| 255 | |||
| 256 | %files by_ssh | ||
| 257 | %{plugindir}/check_by_ssh | ||
| 258 | |||
| 259 | |||
| 260 | |||
| 261 | # check_cluster | ||
| 262 | %package cluster | ||
| 263 | Summary: Monitoring Plugins - check_cluster | ||
| 264 | Requires: %{name} = %{version}-%{release} | ||
| 265 | |||
| 266 | %description cluster | ||
| 267 | Provides check_cluster of the Monitoring Plugins. | ||
| 268 | |||
| 269 | %files cluster | ||
| 270 | %{plugindir}/check_cluster | ||
| 271 | |||
| 272 | |||
| 273 | |||
| 274 | # check_curl | ||
| 275 | %package curl | ||
| 276 | Summary: Monitoring Plugins - check_curl | ||
| 277 | Requires: %{name} = %{version}-%{release} | ||
| 278 | |||
| 279 | %description curl | ||
| 280 | Provides check_curl of the Monitoring Plugins. | ||
| 281 | |||
| 282 | %files curl | ||
| 283 | %{plugindir}/check_curl | ||
| 284 | |||
| 285 | |||
| 286 | |||
| 287 | # check_dbi | ||
| 288 | %if 0%{?rhel} != 9 | ||
| 289 | %package dbi | ||
| 290 | Summary: Monitoring Plugins - check_dbi | ||
| 291 | Requires: %{name} = %{version}-%{release} | ||
| 292 | |||
| 293 | %description dbi | ||
| 294 | Provides check_dbi of the Monitoring Plugins. | ||
| 295 | |||
| 296 | %files dbi | ||
| 297 | %{plugindir}/check_dbi | ||
| 298 | %endif | ||
| 299 | |||
| 300 | |||
| 301 | |||
| 302 | # check_dhcp | ||
| 303 | %package dhcp | ||
| 304 | Summary: Monitoring Plugins - check_dhcp | ||
| 305 | Requires: %{name} = %{version}-%{release} | ||
| 306 | |||
| 307 | %description dhcp | ||
| 308 | Provides check_dhcp of the Monitoring Plugins. | ||
| 309 | |||
| 310 | %files dhcp | ||
| 311 | %{plugindir}/check_dhcp | ||
| 312 | |||
| 313 | |||
| 314 | |||
| 315 | # check_dig | ||
| 316 | %package dig | ||
| 317 | Summary: Monitoring Plugins - check_dig | ||
| 318 | Requires: %{name} = %{version}-%{release} | ||
| 319 | Requires: bind-utils | ||
| 320 | |||
| 321 | %description dig | ||
| 322 | Provides check_dig of the Monitoring Plugins. | ||
| 323 | |||
| 324 | %files dig | ||
| 325 | %{plugindir}/check_dig | ||
| 326 | |||
| 327 | |||
| 328 | |||
| 329 | # check_disk | ||
| 330 | %package disk | ||
| 331 | Summary: Monitoring Plugins - check_disk | ||
| 332 | Requires: %{name} = %{version}-%{release} | ||
| 333 | |||
| 334 | %description disk | ||
| 335 | Provides check_disk of the Monitoring Plugins. | ||
| 336 | |||
| 337 | %files disk | ||
| 338 | %{plugindir}/check_disk | ||
| 339 | |||
| 340 | |||
| 341 | |||
| 342 | # check_disk_smb | ||
| 343 | %if 0%{?rhel} == 7 | ||
| 344 | %package disk_smb | ||
| 345 | Summary: Monitoring Plugins - check_disk_smb | ||
| 346 | Requires: %{name} = %{version}-%{release} | ||
| 347 | Requires: samba-client | ||
| 348 | |||
| 349 | %description disk_smb | ||
| 350 | Provides check_disk_smb of the Monitoring Plugins. | ||
| 351 | |||
| 352 | %files disk_smb | ||
| 353 | %{plugindir}/check_disk_smb | ||
| 354 | %endif | ||
| 355 | |||
| 356 | |||
| 357 | |||
| 358 | # check_dns | ||
| 359 | %package dns | ||
| 360 | Summary: Monitoring Plugins - check_dns | ||
| 361 | Requires: %{name} = %{version}-%{release} | ||
| 362 | Requires: bind-utils | ||
| 363 | |||
| 364 | %description dns | ||
| 365 | Provides check_dns of the Monitoring Plugins. | ||
| 366 | |||
| 367 | %files dns | ||
| 368 | %{plugindir}/check_dns | ||
| 369 | |||
| 370 | |||
| 371 | |||
| 372 | # check_dummy | ||
| 373 | %package dummy | ||
| 374 | Summary: Monitoring Plugins - check_dummy | ||
| 375 | Requires: %{name} = %{version}-%{release} | ||
| 376 | |||
| 377 | %description dummy | ||
| 378 | Provides check_dummy of the Monitoring Plugins. | ||
| 379 | |||
| 380 | %files dummy | ||
| 381 | %{plugindir}/check_dummy | ||
| 382 | |||
| 383 | |||
| 384 | |||
| 385 | # check_file_age | ||
| 386 | %package file_age | ||
| 387 | Summary: Monitoring Plugins - check_file_age | ||
| 388 | Requires: %{name} = %{version}-%{release} | ||
| 389 | |||
| 390 | %description file_age | ||
| 391 | Provides check_file_age of the Monitoring Plugins. | ||
| 392 | |||
| 393 | %files file_age | ||
| 394 | %{plugindir}/check_file_age | ||
| 395 | |||
| 396 | |||
| 397 | |||
| 398 | # check_flexlm | ||
| 399 | %package flexlm | ||
| 400 | Summary: Monitoring Plugins - check_flexlm | ||
| 401 | Requires: %{name} = %{version}-%{release} | ||
| 402 | |||
| 403 | %description flexlm | ||
| 404 | Provides check_flexlm of the Monitoring Plugins. | ||
| 405 | |||
| 406 | %files flexlm | ||
| 407 | %{plugindir}/check_flexlm | ||
| 408 | |||
| 409 | |||
| 410 | |||
| 411 | # check_fping | ||
| 412 | %package fping | ||
| 413 | Summary: Monitoring Plugins - check_fping | ||
| 414 | Requires: %{name} = %{version}-%{release} | ||
| 415 | Requires: fping | ||
| 416 | |||
| 417 | %description fping | ||
| 418 | Provides check_fping of the Monitoring Plugins. | ||
| 419 | |||
| 420 | %files fping | ||
| 421 | %{plugindir}/check_fping | ||
| 422 | |||
| 423 | |||
| 424 | |||
| 425 | # check_game | ||
| 426 | %if 0%{?rhel} != 8 | ||
| 427 | %package game | ||
| 428 | Summary: Monitoring Plugins - check_fping | ||
| 429 | Requires: %{name} = %{version}-%{release} | ||
| 430 | Requires: qstat | ||
| 431 | |||
| 432 | %description game | ||
| 433 | Provides check_game of the Monitoring Plugins. | ||
| 434 | |||
| 435 | %files game | ||
| 436 | %{plugindir}/check_game | ||
| 437 | %endif | ||
| 438 | |||
| 439 | |||
| 440 | |||
| 441 | # check_hpjd | ||
| 442 | %package hpjd | ||
| 443 | Summary: Monitoring Plugins - check_hpjd | ||
| 444 | Requires: %{name} = %{version}-%{release} | ||
| 445 | |||
| 446 | %description hpjd | ||
| 447 | Provides check_hpjd of the Monitoring Plugins. | ||
| 448 | |||
| 449 | %files hpjd | ||
| 450 | %{plugindir}/check_hpjd | ||
| 451 | |||
| 452 | |||
| 453 | |||
| 454 | # check_http | ||
| 455 | %package http | ||
| 456 | Summary: Monitoring Plugins - check_http | ||
| 457 | Requires: %{name} = %{version}-%{release} | ||
| 458 | |||
| 459 | %description http | ||
| 460 | Provides check_http of the Monitoring Plugins. | ||
| 461 | |||
| 462 | %files http | ||
| 463 | %{plugindir}/check_http | ||
| 464 | |||
| 465 | |||
| 466 | |||
| 467 | # check_icmp | ||
| 468 | %package icmp | ||
| 469 | Summary: Monitoring Plugins - check_icmp | ||
| 470 | Requires: %{name} = %{version}-%{release} | ||
| 471 | |||
| 472 | %description icmp | ||
| 473 | Provides check_icmp of the Monitoring Plugins. | ||
| 474 | |||
| 475 | %files icmp | ||
| 476 | %{plugindir}/check_icmp | ||
| 477 | |||
| 478 | |||
| 479 | |||
| 480 | # check_ide_smart | ||
| 481 | %package ide_smart | ||
| 482 | Summary: Monitoring Plugins - check_ide_smart | ||
| 483 | Requires: %{name} = %{version}-%{release} | ||
| 484 | |||
| 485 | %description ide_smart | ||
| 486 | Provides check_ide_smart of the Monitoring Plugins. | ||
| 487 | |||
| 488 | %files ide_smart | ||
| 489 | %{plugindir}/check_ide_smart | ||
| 490 | |||
| 491 | |||
| 492 | |||
| 493 | # check_ifoperstatus | ||
| 494 | %package ifoperstatus | ||
| 495 | Summary: Monitoring Plugins - check_ifoperstatus | ||
| 496 | Requires: %{name} = %{version}-%{release} | ||
| 497 | Requires: perl(Net::SNMP) | ||
| 498 | |||
| 499 | %description ifoperstatus | ||
| 500 | Provides check_ifoperstatus of the Monitoring Plugins. | ||
| 501 | |||
| 502 | %files ifoperstatus | ||
| 503 | %{plugindir}/check_ifoperstatus | ||
| 504 | |||
| 505 | |||
| 506 | |||
| 507 | # check_ifstatus | ||
| 508 | %package ifstatus | ||
| 509 | Summary: Monitoring Plugins - check_ifstatus | ||
| 510 | Requires: %{name} = %{version}-%{release} | ||
| 511 | |||
| 512 | %description ifstatus | ||
| 513 | Provides check_ifstatus of the Monitoring Plugins. | ||
| 514 | |||
| 515 | %files ifstatus | ||
| 516 | %{plugindir}/check_ifstatus | ||
| 517 | |||
| 518 | |||
| 519 | |||
| 520 | # check_ircd | ||
| 521 | %package ircd | ||
| 522 | Summary: Monitoring Plugins - check_ircd | ||
| 523 | Requires: %{name} = %{version}-%{release} | ||
| 524 | |||
| 525 | %description ircd | ||
| 526 | Provides check_ircd of the Monitoring Plugins. | ||
| 527 | |||
| 528 | %files ircd | ||
| 529 | %{plugindir}/check_ircd | ||
| 530 | |||
| 531 | |||
| 532 | |||
| 533 | # check_ldap | ||
| 534 | %package ldap | ||
| 535 | Summary: Monitoring Plugins - check_ldap | ||
| 536 | Requires: %{name} = %{version}-%{release} | ||
| 537 | |||
| 538 | %description ldap | ||
| 539 | Provides check_ldap of the Monitoring Plugins. | ||
| 540 | |||
| 541 | %files ldap | ||
| 542 | %{plugindir}/check_ldap | ||
| 543 | %{plugindir}/check_ldaps | ||
| 544 | |||
| 545 | |||
| 546 | |||
| 547 | # check_load | ||
| 548 | %package load | ||
| 549 | Summary: Monitoring Plugins - check_load | ||
| 550 | Requires: %{name} = %{version}-%{release} | ||
| 551 | Requires: procps-ng | ||
| 552 | |||
| 553 | %description load | ||
| 554 | Provides check_load of the Monitoring Plugins. | ||
| 555 | |||
| 556 | %files load | ||
| 557 | %{plugindir}/check_load | ||
| 558 | |||
| 559 | |||
| 560 | |||
| 561 | # check_log | ||
| 562 | %package log | ||
| 563 | Summary: Monitoring Plugins - check_log | ||
| 564 | Requires: %{name} = %{version}-%{release} | ||
| 565 | |||
| 566 | %description log | ||
| 567 | Provides check_log of the Monitoring Plugins. | ||
| 568 | |||
| 569 | %files log | ||
| 570 | %{plugindir}/check_log | ||
| 571 | |||
| 572 | |||
| 573 | |||
| 574 | # check_mailq | ||
| 575 | %package mailq | ||
| 576 | Summary: Monitoring Plugins - check_mailq | ||
| 577 | Requires: %{name} = %{version}-%{release} | ||
| 578 | |||
| 579 | %description mailq | ||
| 580 | Provides check_mailq of the Monitoring Plugins. | ||
| 581 | |||
| 582 | %files mailq | ||
| 583 | %{plugindir}/check_mailq | ||
| 584 | |||
| 585 | |||
| 586 | |||
| 587 | # check_mrtg | ||
| 588 | %package mrtg | ||
| 589 | Summary: Monitoring Plugins - check_mrtg | ||
| 590 | Requires: %{name} = %{version}-%{release} | ||
| 591 | |||
| 592 | %description mrtg | ||
| 593 | Provides check_mrtg of the Monitoring Plugins. | ||
| 594 | |||
| 595 | %files mrtg | ||
| 596 | %{plugindir}/check_mrtg | ||
| 597 | |||
| 598 | |||
| 599 | |||
| 600 | # check_mrtgtraf | ||
| 601 | %package mrtgtraf | ||
| 602 | Summary: Monitoring Plugins - check_mrtgtraf | ||
| 603 | Requires: %{name} = %{version}-%{release} | ||
| 604 | |||
| 605 | %description mrtgtraf | ||
| 606 | Provides check_mrtgtraf of the Monitoring Plugins. | ||
| 607 | |||
| 608 | %files mrtgtraf | ||
| 609 | %{plugindir}/check_mrtgtraf | ||
| 610 | |||
| 611 | |||
| 612 | |||
| 613 | %if 0%{?rhel} == 7 | ||
| 614 | # check_mysql | ||
| 615 | %package mysql | ||
| 616 | Summary: Monitoring Plugins - check_mysql | ||
| 617 | Requires: %{name} = %{version}-%{release} | ||
| 618 | |||
| 619 | %description mysql | ||
| 620 | Provides check_mysql of the Monitoring Plugins. | ||
| 621 | |||
| 622 | %files mysql | ||
| 623 | %{plugindir}/check_mysql | ||
| 624 | |||
| 625 | |||
| 626 | |||
| 627 | # check_mysql_query | ||
| 628 | %package mysql_query | ||
| 629 | Summary: Monitoring Plugins - check_mysql_query | ||
| 630 | Requires: %{name} = %{version}-%{release} | ||
| 631 | |||
| 632 | %description mysql_query | ||
| 633 | Provides check_mysql_query of the Monitoring Plugins. | ||
| 634 | |||
| 635 | %files mysql_query | ||
| 636 | %{plugindir}/check_mysql_query | ||
| 637 | %endif | ||
| 638 | |||
| 639 | |||
| 640 | |||
| 641 | # check_nagios | ||
| 642 | %package nagios | ||
| 643 | Summary: Monitoring Plugins - check_nagios | ||
| 644 | Requires: %{name} = %{version}-%{release} | ||
| 645 | |||
| 646 | %description nagios | ||
| 647 | Provides check_nagios of the Monitoring Plugins. | ||
| 648 | |||
| 649 | %files nagios | ||
| 650 | %{plugindir}/check_nagios | ||
| 651 | |||
| 652 | |||
| 653 | |||
| 654 | # check_nt | ||
| 655 | %package nt | ||
| 656 | Summary: Monitoring Plugins - check_nt | ||
| 657 | Requires: %{name} = %{version}-%{release} | ||
| 658 | |||
| 659 | %description nt | ||
| 660 | Provides check_nt of the Monitoring Plugins. | ||
| 661 | |||
| 662 | %files nt | ||
| 663 | %{plugindir}/check_nt | ||
| 664 | |||
| 665 | |||
| 666 | |||
| 667 | # check_ntp | ||
| 668 | %package ntp | ||
| 669 | Summary: Monitoring Plugins - check_ntp | ||
| 670 | Requires: %{name} = %{version}-%{release} | ||
| 671 | |||
| 672 | %description ntp | ||
| 673 | Provides check_ntp of the Monitoring Plugins. | ||
| 674 | |||
| 675 | %files ntp | ||
| 676 | %{plugindir}/check_ntp | ||
| 677 | |||
| 678 | |||
| 679 | |||
| 680 | # check_ntp_peer | ||
| 681 | %package ntp_peer | ||
| 682 | Summary: Monitoring Plugins - check_ntp_peer | ||
| 683 | Requires: %{name} = %{version}-%{release} | ||
| 684 | |||
| 685 | %description ntp_peer | ||
| 686 | Provides check_ntp_peer of the Monitoring Plugins. | ||
| 687 | |||
| 688 | %files ntp_peer | ||
| 689 | %{plugindir}/check_ntp_peer | ||
| 690 | |||
| 691 | |||
| 692 | |||
| 693 | # check_ntp_time | ||
| 694 | %package ntp_time | ||
| 695 | Summary: Monitoring Plugins - check_ntp_time | ||
| 696 | Requires: %{name} = %{version}-%{release} | ||
| 697 | |||
| 698 | %description ntp_time | ||
| 699 | Provides check_ntp_time of the Monitoring Plugins. | ||
| 700 | |||
| 701 | %files ntp_time | ||
| 702 | %{plugindir}/check_ntp_time | ||
| 703 | |||
| 704 | |||
| 705 | |||
| 706 | # check_nwstat | ||
| 707 | %package nwstat | ||
| 708 | Summary: Monitoring Plugins - check_nwstat | ||
| 709 | Requires: %{name} = %{version}-%{release} | ||
| 710 | |||
| 711 | %description nwstat | ||
| 712 | Provides check_nwstat of the Monitoring Plugins. | ||
| 713 | |||
| 714 | %files nwstat | ||
| 715 | %{plugindir}/check_nwstat | ||
| 716 | |||
| 717 | |||
| 718 | |||
| 719 | # check_oracle | ||
| 720 | %package oracle | ||
| 721 | Summary: Monitoring Plugins - check_oracle | ||
| 722 | Requires: %{name} = %{version}-%{release} | ||
| 723 | |||
| 724 | %description oracle | ||
| 725 | Provides check_oracle of the Monitoring Plugins. | ||
| 726 | |||
| 727 | %files oracle | ||
| 728 | %{plugindir}/check_oracle | ||
| 729 | |||
| 730 | |||
| 731 | |||
| 732 | # check_overcr | ||
| 733 | %package overcr | ||
| 734 | Summary: Monitoring Plugins - check_overcr | ||
| 735 | Requires: %{name} = %{version}-%{release} | ||
| 736 | |||
| 737 | %description overcr | ||
| 738 | Provides check_overcr of the Monitoring Plugins. | ||
| 739 | |||
| 740 | %files overcr | ||
| 741 | %{plugindir}/check_overcr | ||
| 742 | |||
| 743 | |||
| 744 | |||
| 745 | # check_pgsql | ||
| 746 | %package pgsql | ||
| 747 | Summary: Monitoring Plugins - check_pgsql | ||
| 748 | Requires: %{name} = %{version}-%{release} | ||
| 749 | |||
| 750 | %description pgsql | ||
| 751 | Provides check_pgsql of the Monitoring Plugins. | ||
| 752 | |||
| 753 | %files pgsql | ||
| 754 | %{plugindir}/check_pgsql | ||
| 755 | |||
| 756 | |||
| 757 | |||
| 758 | # check_ping | ||
| 759 | %package ping | ||
| 760 | Summary: Monitoring Plugins - check_ping | ||
| 761 | Requires: %{name} = %{version}-%{release} | ||
| 762 | |||
| 763 | %description ping | ||
| 764 | Provides check_ping of the Monitoring Plugins. | ||
| 765 | |||
| 766 | %files ping | ||
| 767 | %{plugindir}/check_ping | ||
| 768 | |||
| 769 | |||
| 770 | |||
| 771 | # check_procs | ||
| 772 | %package procs | ||
| 773 | Summary: Monitoring Plugins - check_procs | ||
| 774 | Requires: %{name} = %{version}-%{release} | ||
| 775 | |||
| 776 | %description procs | ||
| 777 | Provides check_procs of the Monitoring Plugins. | ||
| 778 | |||
| 779 | %files procs | ||
| 780 | %{plugindir}/check_procs | ||
| 781 | |||
| 782 | |||
| 783 | |||
| 784 | # check_radius | ||
| 785 | %package radius | ||
| 786 | Summary: Monitoring Plugins - check_radius | ||
| 787 | Requires: %{name} = %{version}-%{release} | ||
| 788 | |||
| 789 | %description radius | ||
| 790 | Provides check_radius of the Monitoring Plugins. | ||
| 791 | |||
| 792 | %files radius | ||
| 793 | %{plugindir}/check_radius | ||
| 794 | |||
| 795 | |||
| 796 | |||
| 797 | # check_real | ||
| 798 | %package real | ||
| 799 | Summary: Monitoring Plugins - check_real | ||
| 800 | Requires: %{name} = %{version}-%{release} | ||
| 801 | |||
| 802 | %description real | ||
| 803 | Provides check_real of the Monitoring Plugins. | ||
| 804 | |||
| 805 | %files real | ||
| 806 | %{plugindir}/check_real | ||
| 807 | |||
| 808 | |||
| 809 | |||
| 810 | # check_rpc | ||
| 811 | %package rpc | ||
| 812 | Summary: Monitoring Plugins - check_rpc | ||
| 813 | Requires: %{name} = %{version}-%{release} | ||
| 814 | |||
| 815 | %description rpc | ||
| 816 | Provides check_rpc of the Monitoring Plugins. | ||
| 817 | |||
| 818 | %files rpc | ||
| 819 | %{plugindir}/check_rpc | ||
| 820 | |||
| 821 | |||
| 822 | |||
| 823 | # check_sensors | ||
| 824 | %package sensors | ||
| 825 | Summary: Monitoring Plugins - check_sensors | ||
| 826 | Requires: %{name} = %{version}-%{release} | ||
| 827 | Requires: lm_sensors | ||
| 828 | |||
| 829 | %description sensors | ||
| 830 | Provides check_sensors of the Monitoring Plugins. | ||
| 831 | |||
| 832 | %files sensors | ||
| 833 | %{plugindir}/check_sensors | ||
| 834 | |||
| 835 | |||
| 836 | |||
| 837 | # check_smtp | ||
| 838 | %package smtp | ||
| 839 | Summary: Monitoring Plugins - check_smtp | ||
| 840 | Requires: %{name} = %{version}-%{release} | ||
| 841 | |||
| 842 | %description smtp | ||
| 843 | Provides check_smtp of the Monitoring Plugins. | ||
| 844 | |||
| 845 | %files smtp | ||
| 846 | %{plugindir}/check_smtp | ||
| 847 | |||
| 848 | |||
| 849 | |||
| 850 | # check_snmp | ||
| 851 | %package snmp | ||
| 852 | Summary: Monitoring Plugins - check_snmp | ||
| 853 | Requires: %{name} = %{version}-%{release} | ||
| 854 | Requires: net-snmp | ||
| 855 | |||
| 856 | %description snmp | ||
| 857 | Provides check_snmp of the Monitoring Plugins. | ||
| 858 | |||
| 859 | %files snmp | ||
| 860 | %{plugindir}/check_snmp | ||
| 861 | |||
| 862 | |||
| 863 | |||
| 864 | # check_ssh | ||
| 865 | %package ssh | ||
| 866 | Summary: Monitoring Plugins - check_ssh | ||
| 867 | Requires: %{name} = %{version}-%{release} | ||
| 868 | |||
| 869 | %description ssh | ||
| 870 | Provides check_ssh of the Monitoring Plugins. | ||
| 871 | |||
| 872 | %files ssh | ||
| 873 | %{plugindir}/check_ssh | ||
| 874 | |||
| 875 | |||
| 876 | |||
| 877 | # check_swap | ||
| 878 | %package swap | ||
| 879 | Summary: Monitoring Plugins - check_swap | ||
| 880 | Requires: %{name} = %{version}-%{release} | ||
| 881 | |||
| 882 | %description swap | ||
| 883 | Provides check_swap of the Monitoring Plugins. | ||
| 884 | |||
| 885 | %files swap | ||
| 886 | %{plugindir}/check_swap | ||
| 887 | |||
| 888 | |||
| 889 | |||
| 890 | # check_tcp | ||
| 891 | %package tcp | ||
| 892 | Summary: Monitoring Plugins - check_tcp | ||
| 893 | Requires: %{name} = %{version}-%{release} | ||
| 894 | |||
| 895 | %description tcp | ||
| 896 | Provides check_tcp of the Monitoring Plugins. | ||
| 897 | |||
| 898 | %files tcp | ||
| 899 | %{plugindir}/check_clamd | ||
| 900 | %{plugindir}/check_ftp | ||
| 901 | %{plugindir}/check_imap | ||
| 902 | %{plugindir}/check_jabber | ||
| 903 | %{plugindir}/check_nntp | ||
| 904 | %{plugindir}/check_nntps | ||
| 905 | %{plugindir}/check_pop | ||
| 906 | %{plugindir}/check_simap | ||
| 907 | %{plugindir}/check_spop | ||
| 908 | %{plugindir}/check_ssmtp | ||
| 909 | %{plugindir}/check_tcp | ||
| 910 | %{plugindir}/check_udp | ||
| 911 | |||
| 912 | |||
| 913 | |||
| 914 | # check_time | ||
| 915 | %package time | ||
| 916 | Summary: Monitoring Plugins - check_time | ||
| 917 | Requires: %{name} = %{version}-%{release} | ||
| 918 | |||
| 919 | %description time | ||
| 920 | Provides check_time of the Monitoring Plugins. | ||
| 921 | |||
| 922 | %files time | ||
| 923 | %{plugindir}/check_time | ||
| 924 | |||
| 925 | |||
| 926 | |||
| 927 | # check_ups | ||
| 928 | %package ups | ||
| 929 | Summary: Monitoring Plugins - check_ups | ||
| 930 | Requires: %{name} = %{version}-%{release} | ||
| 931 | |||
| 932 | %description ups | ||
| 933 | Provides check_ups of the Monitoring Plugins. | ||
| 934 | |||
| 935 | %files ups | ||
| 936 | %{plugindir}/check_ups | ||
| 937 | |||
| 938 | |||
| 939 | |||
| 940 | # check_uptime | ||
| 941 | %package uptime | ||
| 942 | Summary: Monitoring Plugins - check_uptime | ||
| 943 | Requires: %{name} = %{version}-%{release} | ||
| 944 | |||
| 945 | %description uptime | ||
| 946 | Provides check_uptime of the Monitoring Plugins. | ||
| 947 | |||
| 948 | %files uptime | ||
| 949 | %{plugindir}/check_uptime | ||
| 950 | |||
| 951 | |||
| 952 | |||
| 953 | # check_users | ||
| 954 | %package users | ||
| 955 | Summary: Monitoring Plugins - check_users | ||
| 956 | Requires: %{name} = %{version}-%{release} | ||
| 957 | |||
| 958 | %description users | ||
| 959 | Provides check_users of the Monitoring Plugins. | ||
| 960 | |||
| 961 | %files users | ||
| 962 | %{plugindir}/check_users | ||
| 963 | |||
| 964 | |||
| 965 | |||
| 966 | # check_wave | ||
| 967 | %package wave | ||
| 968 | Summary: Monitoring Plugins - check_wave | ||
| 969 | Requires: %{name} = %{version}-%{release} | ||
| 970 | |||
| 971 | %description wave | ||
| 972 | Provides check_wave of the Monitoring Plugins. | ||
| 973 | |||
| 974 | %files wave | ||
| 975 | %{plugindir}/check_wave | ||
diff --git a/.github/os_detect.sh b/.github/os_detect.sh new file mode 100644 index 00000000..ee9c145d --- /dev/null +++ b/.github/os_detect.sh | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | #!/bin/sh -e | ||
| 2 | # workaround for really bare-bones Archlinux containers: | ||
| 3 | if [ -x "$(command -v pacman)" ]; then | ||
| 4 | pacman --noconfirm -Sy | ||
| 5 | pacman --noconfirm -S grep gawk sed | ||
| 6 | fi | ||
| 7 | |||
| 8 | os_release_file= | ||
| 9 | if [ -s "/etc/os-release" ]; then | ||
| 10 | os_release_file="/etc/os-release" | ||
| 11 | elif [ -s "/usr/lib/os-release" ]; then | ||
| 12 | os_release_file="/usr/lib/os-release" | ||
| 13 | else | ||
| 14 | echo >&2 "Cannot find an os-release file ..." | ||
| 15 | return 1 | ||
| 16 | fi | ||
| 17 | export distro_id=$(grep '^ID=' $os_release_file|awk -F = '{print $2}'|sed 's/\"//g') | ||
| 18 | export platform_id=$(grep '^PLATFORM_ID=' /etc/os-release|awk -F = '{print $2}'|sed 's/\"//g'| cut -d":" -f2) | ||
diff --git a/.github/prepare_debian.sh b/.github/prepare_debian.sh index dcf778bc..3f4674a2 100755 --- a/.github/prepare_debian.sh +++ b/.github/prepare_debian.sh | |||
| @@ -64,13 +64,9 @@ apt-get -y install perl \ | |||
| 64 | iproute2 | 64 | iproute2 |
| 65 | 65 | ||
| 66 | # remove ipv6 interface from hosts | 66 | # remove ipv6 interface from hosts |
| 67 | if [ $(ip addr show | grep "inet6 ::1" | wc -l) -eq "0" ]; then | 67 | sed '/^::1/d' /etc/hosts > /tmp/hosts |
| 68 | sed '/^::1/d' /etc/hosts > /tmp/hosts | 68 | cp -f /tmp/hosts /etc/hosts |
| 69 | cp -f /tmp/hosts /etc/hosts | ||
| 70 | fi | ||
| 71 | |||
| 72 | ip addr show | 69 | ip addr show |
| 73 | |||
| 74 | cat /etc/hosts | 70 | cat /etc/hosts |
| 75 | 71 | ||
| 76 | # apache | 72 | # apache |
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 0317c8c0..c402e0cf 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml | |||
| @@ -44,7 +44,7 @@ jobs: | |||
| 44 | 44 | ||
| 45 | # Initializes the CodeQL tools for scanning. | 45 | # Initializes the CodeQL tools for scanning. |
| 46 | - name: Initialize CodeQL | 46 | - name: Initialize CodeQL |
| 47 | uses: github/codeql-action/init@v2 | 47 | uses: github/codeql-action/init@v3 |
| 48 | with: | 48 | with: |
| 49 | languages: ${{ matrix.language }} | 49 | languages: ${{ matrix.language }} |
| 50 | # If you wish to specify custom queries, you can do so here or in a config file. | 50 | # If you wish to specify custom queries, you can do so here or in a config file. |
| @@ -70,4 +70,4 @@ jobs: | |||
| 70 | make | 70 | make |
| 71 | 71 | ||
| 72 | - name: Perform CodeQL Analysis | 72 | - name: Perform CodeQL Analysis |
| 73 | uses: github/codeql-action/analyze@v2 | 73 | uses: github/codeql-action/analyze@v3 |
diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml new file mode 100644 index 00000000..72f7c7eb --- /dev/null +++ b/.github/workflows/spellcheck.yml | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | --- | ||
| 2 | name: Spellcheck | ||
| 3 | |||
| 4 | on: | ||
| 5 | # Run for pushes on any branch | ||
| 6 | push: | ||
| 7 | branches: | ||
| 8 | - '*' | ||
| 9 | # Run for any PRs | ||
| 10 | pull_request: | ||
| 11 | |||
| 12 | jobs: | ||
| 13 | codespell: | ||
| 14 | name: codespell | ||
| 15 | strategy: | ||
| 16 | fail-fast: false | ||
| 17 | runs-on: ubuntu-latest | ||
| 18 | steps: | ||
| 19 | - name: Checkout | ||
| 20 | uses: actions/checkout@v4 | ||
| 21 | - name: Codespell | ||
| 22 | uses: codespell-project/actions-codespell@v2 | ||
| 23 | with: | ||
| 24 | skip: "./.git,./.gitignore,./ABOUT-NLS,./gl,./tools/squid.conf,./build-aux/ltmain.sh,THANKS.in" | ||
| 25 | ignore_words_list: allright,gord,didi,hda,nd,alis,clen,scrit,ser,fot,te,parm,isnt,consol,oneliners,esponse,slac | ||
| 26 | check_filenames: true | ||
| 27 | check_hidden: true | ||
diff --git a/.github/workflows/test-next.yml b/.github/workflows/test-next.yml new file mode 100644 index 00000000..81240759 --- /dev/null +++ b/.github/workflows/test-next.yml | |||
| @@ -0,0 +1,78 @@ | |||
| 1 | --- | ||
| 2 | name: Tests Debian:Testing and Fedora:Rawhide | ||
| 3 | |||
| 4 | on: | ||
| 5 | workflow_dispatch: {} | ||
| 6 | push: | ||
| 7 | branches-ignore: | ||
| 8 | - '*' | ||
| 9 | schedule: | ||
| 10 | # Run every week on Monday at 9:00 AM (UTC) | ||
| 11 | - cron: '0 9 * * 1' | ||
| 12 | |||
| 13 | jobs: | ||
| 14 | full-test: | ||
| 15 | name: Running unit and integrationt tests | ||
| 16 | runs-on: ubuntu-latest | ||
| 17 | strategy: | ||
| 18 | fail-fast: false | ||
| 19 | matrix: | ||
| 20 | distro: | ||
| 21 | - 'debian:testing' | ||
| 22 | include: | ||
| 23 | - distro: 'debian:testing' | ||
| 24 | prepare: .github/prepare_debian.sh | ||
| 25 | steps: | ||
| 26 | - name: Git clone repository | ||
| 27 | uses: actions/checkout@v4 | ||
| 28 | - name: Run the tests on ${{ matrix.distro }} | ||
| 29 | run: | | ||
| 30 | docker volume create --driver local --opt type=tmpfs --opt device=tmpfs --opt o=size=100m,uid=1000 tmp-vol | ||
| 31 | docker run \ | ||
| 32 | -e NPTEST_ACCEPTDEFAULT=1 \ | ||
| 33 | -e NPTEST_CACHE="/src/.github/NPTest.cache" \ | ||
| 34 | -w /src -v ${PWD}:/src \ | ||
| 35 | --tmpfs /media/ramdisk1 \ | ||
| 36 | -v /var/run/utmp:/var/run/utmp \ | ||
| 37 | --mount source=tmp-vol,destination=/src,target=/media/ramdisk2 \ | ||
| 38 | ${{ matrix.distro }} \ | ||
| 39 | /bin/sh -c '${{ matrix.prepare }} && \ | ||
| 40 | tools/setup && \ | ||
| 41 | ./configure --enable-libtap --with-ipv6=no && \ | ||
| 42 | make && \ | ||
| 43 | make test && \ | ||
| 44 | make dist && \ | ||
| 45 | tar zxf monitoring-plugins-*.tar.gz && \ | ||
| 46 | cd monitoring-plugins-*/ && \ | ||
| 47 | ./configure && \ | ||
| 48 | make' | ||
| 49 | docker container prune -f | ||
| 50 | docker volume prune -f | ||
| 51 | |||
| 52 | build-test: | ||
| 53 | name: Running rpm build test on ${{ matrix.distro }} | ||
| 54 | runs-on: ubuntu-latest | ||
| 55 | strategy: | ||
| 56 | fail-fast: false | ||
| 57 | matrix: | ||
| 58 | include: | ||
| 59 | - {"distro": "fedora:rawhide", "build": ".github/mock.sh"} | ||
| 60 | steps: | ||
| 61 | - name: Git clone repository | ||
| 62 | uses: actions/checkout@v4 | ||
| 63 | - name: Run the tests on ${{ matrix.distro }} | ||
| 64 | run: | | ||
| 65 | docker volume create --driver local --opt type=tmpfs --opt device=tmpfs --opt o=size=100m,uid=1000 tmp-vol | ||
| 66 | docker run \ | ||
| 67 | --privileged=true \ | ||
| 68 | -e NPTEST_ACCEPTDEFAULT=1 \ | ||
| 69 | -e NPTEST_CACHE="/src/.github/NPTest.cache" \ | ||
| 70 | -w /src -v ${PWD}:/src \ | ||
| 71 | --tmpfs /media/ramdisk1 \ | ||
| 72 | -v /var/run/utmp:/var/run/utmp \ | ||
| 73 | --mount source=tmp-vol,destination=/src,target=/media/ramdisk2 \ | ||
| 74 | ${{ matrix.distro }} \ | ||
| 75 | /bin/sh -c '${{ matrix.build }} && \ | ||
| 76 | ls -la' | ||
| 77 | docker container prune -f | ||
| 78 | docker volume prune -f | ||
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 77b09f43..77ca6585 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml | |||
| @@ -1,65 +1,27 @@ | |||
| 1 | --- | 1 | --- |
| 2 | name: Test | 2 | name: Tests |
| 3 | 3 | ||
| 4 | on: | 4 | on: |
| 5 | push: | 5 | push: |
| 6 | branches: | 6 | branches: |
| 7 | - '*' | 7 | - '*' |
| 8 | # Run test for any PRs | ||
| 9 | pull_request: | 8 | pull_request: |
| 10 | 9 | ||
| 11 | jobs: | 10 | jobs: |
| 12 | codespell: | 11 | full-test: |
| 13 | name: codespell | 12 | name: Running unit and integrationt tests |
| 14 | strategy: | ||
| 15 | fail-fast: false | ||
| 16 | runs-on: ubuntu-latest | 13 | runs-on: ubuntu-latest |
| 17 | steps: | ||
| 18 | - name: Checkout | ||
| 19 | uses: actions/checkout@v4 | ||
| 20 | - name: Codespell | ||
| 21 | uses: codespell-project/actions-codespell@v2 | ||
| 22 | with: | ||
| 23 | skip: "./.git,./.gitignore,./ABOUT-NLS,*.po,./gl,./po,./tools/squid.conf,./build-aux/ltmain.sh" | ||
| 24 | ignore_words_list: allright,gord,didi,hda,nd,alis,clen,scrit,ser,fot,te,parm,isnt,consol,oneliners | ||
| 25 | check_filenames: true | ||
| 26 | check_hidden: true | ||
| 27 | # super-linter: | ||
| 28 | # name: super-linter | ||
| 29 | # strategy: | ||
| 30 | # fail-fast: false | ||
| 31 | # runs-on: ubuntu-latest | ||
| 32 | # steps: | ||
| 33 | # - name: Checkout | ||
| 34 | # uses: actions/checkout@v4 | ||
| 35 | # - name: Lint Code Base | ||
| 36 | # uses: github/super-linter@v5.0.0 | ||
| 37 | # env: | ||
| 38 | # DEFAULT_BRANCH: master | ||
| 39 | # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| 40 | # macos: | ||
| 41 | # ... | ||
| 42 | linux: | ||
| 43 | needs: | ||
| 44 | - codespell | ||
| 45 | # - super-linter | ||
| 46 | runs-on: ubuntu-latest | ||
| 47 | name: Running tests on ${{ matrix.distro }} | ||
| 48 | strategy: | 14 | strategy: |
| 49 | fail-fast: false | 15 | fail-fast: false |
| 50 | matrix: | 16 | matrix: |
| 51 | distro: | 17 | distro: |
| 52 | - 'debian:testing' | 18 | - 'debian:stable' |
| 53 | #... | ||
| 54 | include: | 19 | include: |
| 55 | - distro: 'debian:testing' | 20 | - distro: 'debian:stable' |
| 56 | prepare: .github/prepare_debian.sh | 21 | prepare: .github/prepare_debian.sh |
| 57 | #... | ||
| 58 | steps: | 22 | steps: |
| 59 | - name: Git clone repository | 23 | - name: Git clone repository |
| 60 | uses: actions/checkout@v4 | 24 | uses: actions/checkout@v4 |
| 61 | #- name: Setup tmate session, see https://github.com/marketplace/actions/debugging-with-tmate | ||
| 62 | # uses: mxschmitt/action-tmate@v3 | ||
| 63 | - name: Run the tests on ${{ matrix.distro }} | 25 | - name: Run the tests on ${{ matrix.distro }} |
| 64 | run: | | 26 | run: | |
| 65 | docker volume create --driver local --opt type=tmpfs --opt device=tmpfs --opt o=size=100m,uid=1000 tmp-vol | 27 | docker volume create --driver local --opt type=tmpfs --opt device=tmpfs --opt o=size=100m,uid=1000 tmp-vol |
| @@ -74,11 +36,43 @@ jobs: | |||
| 74 | /bin/sh -c '${{ matrix.prepare }} && \ | 36 | /bin/sh -c '${{ matrix.prepare }} && \ |
| 75 | tools/setup && \ | 37 | tools/setup && \ |
| 76 | ./configure --enable-libtap --with-ipv6=no && \ | 38 | ./configure --enable-libtap --with-ipv6=no && \ |
| 77 | set -x && \ | ||
| 78 | tmp_dir=$(mktemp -d -t test-XXXX) && cp -a po/ $tmp_dir/ && \ | ||
| 79 | cd po && make update-po && cd .. && \ | ||
| 80 | diff -Nur $tmp_dir/po/*.po po/*.po | tee -a /tmp/po.diff && diff -Nur $tmp_dir/po/*.pot po/*.pot | tee -a /tmp/po.diff && if [ $(wc -l /tmp/po.diff | cut -f 1 -d" ") -gt 0 ]; then echo "Error: Translations needs to be updated with make update-po!" && exit 1; fi && \ | ||
| 81 | make && \ | 39 | make && \ |
| 82 | make test' | 40 | make test && \ |
| 41 | make dist && \ | ||
| 42 | tar zxf monitoring-plugins-*.tar.gz && \ | ||
| 43 | cd monitoring-plugins-*/ && \ | ||
| 44 | ./configure && \ | ||
| 45 | make' | ||
| 46 | docker container prune -f | ||
| 47 | docker volume prune -f | ||
| 48 | |||
| 49 | build-test: | ||
| 50 | name: Running rpm build test on ${{ matrix.distro }} | ||
| 51 | runs-on: ubuntu-latest | ||
| 52 | strategy: | ||
| 53 | fail-fast: false | ||
| 54 | matrix: | ||
| 55 | include: | ||
| 56 | - {"distro": "fedora:latest", "build": ".github/mock.sh"} | ||
| 57 | - {"distro": "rockylinux:8", "build": ".github/mock.sh"} | ||
| 58 | - {"distro": "almalinux:9", "build": ".github/mock.sh"} | ||
| 59 | # - {"distro": "oraclelinux:9", "build": ".github/mock.sh"} | ||
| 60 | steps: | ||
| 61 | - name: Git clone repository | ||
| 62 | uses: actions/checkout@v4 | ||
| 63 | - name: Run the tests on ${{ matrix.distro }} | ||
| 64 | run: | | ||
| 65 | docker volume create --driver local --opt type=tmpfs --opt device=tmpfs --opt o=size=100m,uid=1000 tmp-vol | ||
| 66 | docker run \ | ||
| 67 | --privileged=true \ | ||
| 68 | -e NPTEST_ACCEPTDEFAULT=1 \ | ||
| 69 | -e NPTEST_CACHE="/src/.github/NPTest.cache" \ | ||
| 70 | -w /src -v ${PWD}:/src \ | ||
| 71 | --tmpfs /media/ramdisk1 \ | ||
| 72 | -v /var/run/utmp:/var/run/utmp \ | ||
| 73 | --mount source=tmp-vol,destination=/src,target=/media/ramdisk2 \ | ||
| 74 | ${{ matrix.distro }} \ | ||
| 75 | /bin/sh -c '${{ matrix.build }} && \ | ||
| 76 | ls -la' | ||
| 83 | docker container prune -f | 77 | docker container prune -f |
| 84 | docker volume prune -f | 78 | docker volume prune -f |
| @@ -94,7 +94,7 @@ NP-VERSION-FILE | |||
| 94 | /gl/limits.h | 94 | /gl/limits.h |
| 95 | /gl/malloc/dynarray-skeleton.gl.h | 95 | /gl/malloc/dynarray-skeleton.gl.h |
| 96 | /gl/malloc/dynarray.gl.h | 96 | /gl/malloc/dynarray.gl.h |
| 97 | /gl/stdckdint. | 97 | /gl/stdckdint.h |
| 98 | 98 | ||
| 99 | # /lib/ | 99 | # /lib/ |
| 100 | /lib/.deps | 100 | /lib/.deps |
| @@ -7,33 +7,20 @@ readability in a wide range of environments. | |||
| 7 | 7 | ||
| 8 | 1. C Language Programming | 8 | 1. C Language Programming |
| 9 | 9 | ||
| 10 | All code should comply with the requirements of the Free Software | 10 | All code should comply with most of the requirements of the Free Software |
| 11 | Foundation Coding standards (which are currently available at | 11 | Foundation Coding standards (which are currently available at |
| 12 | http://www.gnu.org/prep/standards_toc.html). We also follow most of | 12 | https://www.gnu.org/prep/standards/standards.html ). |
| 13 | the FSF guidelines. Developers may suggest deviations from the FSF | 13 | We also follow most of the FSF guidelines, with the huge and explicit |
| 14 | exception of the style guidelines. | ||
| 15 | Developers may suggest deviations from the FSF | ||
| 14 | style recommendations, which will be considered by open discussion on | 16 | style recommendations, which will be considered by open discussion on |
| 15 | the Monitoring Plugins devel mailing list. Any such deviations will | 17 | the Monitoring Plugins devel mailing list or the Github Pull Request. |
| 16 | apply to the entire code base to ensure consistency. | 18 | Any such deviations should be |
| 17 | 19 | applied to the entire code base to ensure consistency. | |
| 18 | Currently, the exceptions to FSF recommendations are roughly equivalent | ||
| 19 | to GNU indent with invoked as 'indent -ts 2 -br'. Specifically, the | ||
| 20 | exceptions are as follows: | ||
| 21 | |||
| 22 | a) leading white space for a statement should be formatted as tabs, | ||
| 23 | with one tab for each code indentation level. | ||
| 24 | |||
| 25 | b) in statement continuation lines, format whitespace up to the column | ||
| 26 | starting the statement as tabs, format the rest as spaces (this | ||
| 27 | results in code that is legible regardless of tab-width setting). | ||
| 28 | |||
| 29 | c) with the exception of the above, tabs should generally be avoided | ||
| 30 | |||
| 31 | d) when tab width is 2 spaces, line-length should not exceed 80 | ||
| 32 | characters | ||
| 33 | |||
| 34 | e) The opening brace of an if or while block is on the same line as | ||
| 35 | the end of the conditional expression (the '-br' option). | ||
| 36 | 20 | ||
| 21 | The style guideline is the following: | ||
| 22 | Whatever clang-format does with the configuration file available (.clang-format) | ||
| 23 | Apart from that, code should naturally be readable and easy to understand. | ||
| 37 | 24 | ||
| 38 | 2. Perl Language Programming | 25 | 2. Perl Language Programming |
| 39 | 26 | ||
diff --git a/Makefile.am b/Makefile.am index df1bcbb3..5959f70f 100644 --- a/Makefile.am +++ b/Makefile.am | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ## Process this file with automake to produce Makefile.in | 1 | ## Process this file with automake to produce Makefile.in |
| 2 | 2 | ||
| 3 | SUBDIRS = gl tap lib plugins plugins-scripts plugins-root po @PERLMODS_DIR@ | 3 | SUBDIRS = gl tap lib plugins plugins-scripts plugins-root @PERLMODS_DIR@ |
| 4 | 4 | ||
| 5 | EXTRA_DIST = config.rpath \ | 5 | EXTRA_DIST = config.rpath \ |
| 6 | ABOUT-NLS ACKNOWLEDGEMENTS AUTHORS CODING ChangeLog FAQ NEWS \ | 6 | ABOUT-NLS ACKNOWLEDGEMENTS AUTHORS CODING ChangeLog FAQ NEWS \ |
| @@ -1,5 +1,98 @@ | |||
| 1 | This file documents the major additions and syntax changes between releases. | 1 | This file documents the major additions and syntax changes between releases. |
| 2 | 2 | ||
| 3 | 2.4.0 25th Jul 2024 | ||
| 4 | FIXES | ||
| 5 | * check_dbi: Compiler warning for uninitialized variable | ||
| 6 | * check_curl: Initialize pointer before usage | ||
| 7 | * check_ntp: Initialize intermediate results in any case | ||
| 8 | * Fixes for -Wsign-compare | ||
| 9 | * check_tcp: Fixes an error with using the wrong type for a variable | ||
| 10 | * check_mailq: exit on empty strings and exit early | ||
| 11 | * check_users: Change option for sanity checking arguments to avoid segfault | ||
| 12 | * check_users: Update help to properly show that thresholds are ranges | ||
| 13 | * check_users: fix segfault | ||
| 14 | * check_dbi: Fix compiler warning for uninitialized variable | ||
| 15 | * check_curl: Initialize pointer before usage | ||
| 16 | * check_ntp: Initialize intermediate results in any case | ||
| 17 | * Fix logic in is_uint64_t to fix type-limit warning | ||
| 18 | * check_ntp_peer: Fixes for Wmaybe-unitialized and some restructuring | ||
| 19 | * check_dns: Remove unused variable | ||
| 20 | * check_disk: fix ignore-missing in combination with includes | ||
| 21 | * check_procs: ignore our own children | ||
| 22 | * Prevent -lcrypto from showing up in Makefile dependencies | ||
| 23 | * Change irritating NULL assignment | ||
| 24 | * check_http: Remove self assignment of a variable and add some comments | ||
| 25 | * check_snmp: Remove unused variable | ||
| 26 | * check_dhcp: Make implicit conversion explicit to dismiss warning | ||
| 27 | * Ini Parser: Avoid freeing symbols from text section | ||
| 28 | * check_icmp: keep performance data order in case of none-reachable hosts | ||
| 29 | * check_swap: Change another fake boolean to a real one | ||
| 30 | * check_swap: Rename type since *_t is reserved for C standard types | ||
| 31 | * check_ssh: Fix a typo in "remote-protocol parameter | ||
| 32 | * check_ssh: Handle non-alpha software versions | ||
| 33 | * check_ssh: properly parse a delayed version control string | ||
| 34 | * check_disk: Fail on missing arguments for --warning and --critical and fix a test case | ||
| 35 | * check_disk: Use new test function for percentage expressions | ||
| 36 | * check_load: remove unused code | ||
| 37 | * check_curl/check_http: clarified format of POST data | ||
| 38 | |||
| 39 | ENHANCEMENTS | ||
| 40 | * Use C99 booleans | ||
| 41 | * check_mailq: remove trailing whitespaces | ||
| 42 | * check_mailq: unify tabs/spaces | ||
| 43 | * check_oracle: Shellcheck fixes | ||
| 44 | * check_ups: output ups.realpower if supported | ||
| 45 | * check_disk: add -n short option for --ignore-missing | ||
| 46 | * check_procs: Improve help text, mentioning excluded processes | ||
| 47 | * check_procs: Generalise wording, remove mentioning of nrpe | ||
| 48 | * check_curl: add haproxy protocol option | ||
| 49 | * Improve negate plugin helptext | ||
| 50 | * check_disk: increase alert precision | ||
| 51 | * check_ircd: IPv6 support | ||
| 52 | * check_nwstat: adds percentage used space | ||
| 53 | * Add new test function for percentage expressions | ||
| 54 | * check_swap: Possibility to run check_swap without thresholds | ||
| 55 | * check_ups: additional alarm conditions | ||
| 56 | * check_http/check_curl: added a --regex-state option to change the state of a regex check | ||
| 57 | |||
| 58 | 2.3.5 18th Oct 2023 | ||
| 59 | FIXES | ||
| 60 | * Include maxfd.h in lib Makefile | ||
| 61 | |||
| 62 | 2.3.4 18th Oct 2023 | ||
| 63 | ENHANCEMENTS | ||
| 64 | * check_curl: added --cookie-jar and doing proper cleanup of libcurl | ||
| 65 | * check_curl: Include all IPs from getaddrinfo() in curl DNS cache | ||
| 66 | * check_dhcp: Add dhcp rogue detection | ||
| 67 | * check_disk: add ignore-missing option to return OK for missing fs | ||
| 68 | * check_disk_smb: allow checking 0-sized resource (ex. IPC$) | ||
| 69 | * check_disk: The options to include or exclude specific file systems now allow the usage of regex(7) | ||
| 70 | * check_icmp: Add support to Jitter, MOS and Score | ||
| 71 | * check_mysql: Detect running mysqldump and handle it more gracefully | ||
| 72 | * check_procs: Implement --exclude-process to exclude specific processes | ||
| 73 | * check_smtp: add new longoption --tls | ||
| 74 | * check_smtp: Add option to prefix PROXY header | ||
| 75 | * check_smtp: Add support for SMTP over TLS | ||
| 76 | * check_smtp: Add support for SNI | ||
| 77 | * check_snmp: Implement option to ignore mib file parsing errors | ||
| 78 | * check_users: prefer systemd-logind over utmp | ||
| 79 | |||
| 80 | FIXES | ||
| 81 | * check_disk: Display SI units correctly | ||
| 82 | * check_ircd: use pack_sockaddr_in rather than hand-rolled | ||
| 83 | * check_log/check_oracle/check_sensors: fixed the outputs of the help functionality | ||
| 84 | * check_mysql: Add mysql_close to avoid spamming the server logs | ||
| 85 | * check_smtp: add missing -r option in usage | ||
| 86 | * check_snmp: disable multiplier when unused | ||
| 87 | * check_wave: Use compile time determined path to snmpget | ||
| 88 | |||
| 89 | GENERAL | ||
| 90 | * Sync with the Gnulib code 668c0b8ffa | ||
| 91 | * Set autoconf prerequisite version to 2.64 | ||
| 92 | * Remove sha1 and use sha256 in some parts of the plugin structure | ||
| 93 | * A lot of compiler warnings were fixed | ||
| 94 | * Some code was refactored a little bit | ||
| 95 | |||
| 3 | 2.3.3 2nd Feb 2023 | 96 | 2.3.3 2nd Feb 2023 |
| 4 | ENHANCEMENTS | 97 | ENHANCEMENTS |
| 5 | using PRId64 and PRIu64 instead of %ld directly | 98 | using PRId64 and PRIu64 instead of %ld directly |
diff --git a/NP-VERSION-GEN b/NP-VERSION-GEN index c353b1d1..e16f37da 100755 --- a/NP-VERSION-GEN +++ b/NP-VERSION-GEN | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | SRC_ROOT=`dirname $0` | 6 | SRC_ROOT=`dirname $0` |
| 7 | 7 | ||
| 8 | NPVF=NP-VERSION-FILE | 8 | NPVF=NP-VERSION-FILE |
| 9 | DEF_VER=2.3git | 9 | DEF_VER=2.4git |
| 10 | 10 | ||
| 11 | LF=' | 11 | LF=' |
| 12 | ' | 12 | ' |
| @@ -406,3 +406,23 @@ Wolfgang Nieder | |||
| 406 | andrew bezella | 406 | andrew bezella |
| 407 | Lorenz Gruenwald | 407 | Lorenz Gruenwald |
| 408 | John Morrissey | 408 | John Morrissey |
| 409 | Ralph Gottschalkson | ||
| 410 | Arkadiusz Miśkiewicz | ||
| 411 | Björn Berg | ||
| 412 | Franz Schwartau | ||
| 413 | Gerardo Malazdrewicz | ||
| 414 | Kristian Schuster | ||
| 415 | Patrick Cervicek | ||
| 416 | Patrick Uiterwijk | ||
| 417 | Platon Pronko | ||
| 418 | Stefan Taferner | ||
| 419 | Stuart Henderson | ||
| 420 | Thoralf Rickert-Wendt | ||
| 421 | Thorsten Kukuk | ||
| 422 | Matthias Döhler | ||
| 423 | Emmanuel Riviere | ||
| 424 | Eric Knibbe | ||
| 425 | Eunice Remoquillo | ||
| 426 | Louis Sautier | ||
| 427 | Sven Hartge | ||
| 428 | Alvar Penning | ||
diff --git a/configure.ac b/configure.ac index a294b00f..8594238f 100644 --- a/configure.ac +++ b/configure.ac | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | dnl Process this file with autoconf to produce a configure script. | 1 | dnl Process this file with autoconf to produce a configure script. |
| 2 | AC_PREREQ(2.64) | 2 | AC_PREREQ(2.64) |
| 3 | AC_INIT(monitoring-plugins,2.3git) | 3 | AC_INIT(monitoring-plugins,2.4git) |
| 4 | AC_CONFIG_SRCDIR(NPTest.pm) | 4 | AC_CONFIG_SRCDIR(NPTest.pm) |
| 5 | AC_CONFIG_FILES([gl/Makefile]) | 5 | AC_CONFIG_FILES([gl/Makefile]) |
| 6 | AC_CONFIG_AUX_DIR(build-aux) | 6 | AC_CONFIG_AUX_DIR(build-aux) |
| @@ -621,7 +621,6 @@ AC_C_CONST | |||
| 621 | AC_STRUCT_TM | 621 | AC_STRUCT_TM |
| 622 | AC_TYPE_PID_T | 622 | AC_TYPE_PID_T |
| 623 | AC_TYPE_SIZE_T | 623 | AC_TYPE_SIZE_T |
| 624 | AC_TYPE_SIGNAL | ||
| 625 | 624 | ||
| 626 | AC_CACHE_CHECK([for va_copy],ac_cv_HAVE_VA_COPY,[ | 625 | AC_CACHE_CHECK([for va_copy],ac_cv_HAVE_VA_COPY,[ |
| 627 | AC_TRY_LINK([#include <stdarg.h> | 626 | AC_TRY_LINK([#include <stdarg.h> |
| @@ -645,12 +644,16 @@ AC_TRY_COMPILE([#include <sys/time.h>], | |||
| 645 | [struct timeval *tv; | 644 | [struct timeval *tv; |
| 646 | struct timezone *tz;], | 645 | struct timezone *tz;], |
| 647 | AC_DEFINE(HAVE_STRUCT_TIMEVAL,1,[Define if we have a timeval structure]) | 646 | AC_DEFINE(HAVE_STRUCT_TIMEVAL,1,[Define if we have a timeval structure]) |
| 648 | AC_TRY_COMPILE([#include <sys/time.h>], | 647 | FOUND_STRUCT_TIMEVAL="yes") |
| 649 | [struct timeval *tv; | 648 | |
| 650 | struct timezone *tz; | 649 | if test x"$FOUND_STRUCT_TIMEVAL" = x"yes"; then |
| 651 | gettimeofday(tv, tz);], | 650 | AC_TRY_COMPILE([#include <sys/time.h>], |
| 652 | AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define if gettimeofday is found]), | 651 | [struct timeval *tv; |
| 653 | AC_DEFINE(NEED_GETTIMEOFDAY,1,[Define if gettimeofday is needed]))) | 652 | struct timezone *tz; |
| 653 | gettimeofday(tv, tz);], | ||
| 654 | AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define if gettimeofday is found]), | ||
| 655 | AC_DEFINE(NEED_GETTIMEOFDAY,1,[Define if gettimeofday is needed])) | ||
| 656 | fi | ||
| 654 | 657 | ||
| 655 | dnl Checks for library functions. | 658 | dnl Checks for library functions. |
| 656 | AC_CHECK_FUNCS(memmove select socket strdup strstr strtol strtoul floor) | 659 | AC_CHECK_FUNCS(memmove select socket strdup strstr strtol strtoul floor) |
| @@ -1921,7 +1924,6 @@ AC_OUTPUT( | |||
| 1921 | perlmods/Makefile | 1924 | perlmods/Makefile |
| 1922 | test.pl | 1925 | test.pl |
| 1923 | pkg/solaris/pkginfo | 1926 | pkg/solaris/pkginfo |
| 1924 | po/Makefile.in | ||
| 1925 | ) | 1927 | ) |
| 1926 | 1928 | ||
| 1927 | 1929 | ||
diff --git a/doc/RELEASING.md b/doc/RELEASING.md index 432b1da1..e1f3bf74 100644 --- a/doc/RELEASING.md +++ b/doc/RELEASING.md | |||
| @@ -2,7 +2,7 @@ Releasing a New Monitoring Plugins Version | |||
| 2 | ========================================== | 2 | ========================================== |
| 3 | 3 | ||
| 4 | Throughout this document, it is assumed that the current Monitoring | 4 | Throughout this document, it is assumed that the current Monitoring |
| 5 | Plugins version is 2.3.3, and that we're about to publish version 2.4. | 5 | Plugins version is 2.4.0, and that we're about to publish version 2.5. |
| 6 | It is also assumed that the official repository on GitHub is tracked | 6 | It is also assumed that the official repository on GitHub is tracked |
| 7 | using the remote name `monitoring-plugins` (rather than `origin`). | 7 | using the remote name `monitoring-plugins` (rather than `origin`). |
| 8 | 8 | ||
| @@ -11,14 +11,14 @@ Before you start | |||
| 11 | 11 | ||
| 12 | - Check Github Actions 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.4), update to the current | 14 | maintenance release (e.g., version 2.4.1), update to the current |
| 15 | `maint-2.3` tip, instead. | 15 | `maint-2.4` tip, instead. |
| 16 | 16 | ||
| 17 | Prepare and commit files | 17 | Prepare and commit files |
| 18 | ------------------------ | 18 | ------------------------ |
| 19 | 19 | ||
| 20 | - Update `configure.ac` and `NP-VERSION-GEN` with new version. | 20 | - Update `configure.ac` and `NP-VERSION-GEN` with new version. |
| 21 | - Update `NEWS` from `git log --reverse v2.3.3..` output, and specify | 21 | - Update `NEWS` from `git log --reverse v2.4.0..` output, and specify |
| 22 | the release version/date. | 22 | the release version/date. |
| 23 | - Update `AUTHORS` if there are new team members. | 23 | - Update `AUTHORS` if there are new team members. |
| 24 | - Update `THANKS.in` using `tools/update-thanks`. | 24 | - Update `THANKS.in` using `tools/update-thanks`. |
| @@ -29,27 +29,27 @@ Prepare and commit files | |||
| 29 | Create annotated tag | 29 | Create annotated tag |
| 30 | -------------------- | 30 | -------------------- |
| 31 | 31 | ||
| 32 | git tag -a -m 'Monitoring Plugins 2.4' v2.4 | 32 | git tag -a -m 'Monitoring Plugins 2.5' v2.5 |
| 33 | 33 | ||
| 34 | Push the code and tag to GitHub | 34 | Push the code and tag to GitHub |
| 35 | ------------------------------- | 35 | ------------------------------- |
| 36 | 36 | ||
| 37 | git push monitoring-plugins master | 37 | git push monitoring-plugins master |
| 38 | git push monitoring-plugins v2.4 | 38 | git push monitoring-plugins v2.5 |
| 39 | 39 | ||
| 40 | Create new maintenance branch | 40 | Create new maintenance branch |
| 41 | ----------------------------- | 41 | ----------------------------- |
| 42 | 42 | ||
| 43 | _Only necessary when creating a feature release._ | 43 | _Only necessary when creating a feature release._ |
| 44 | 44 | ||
| 45 | git checkout -b maint-2.4 v2.4 | 45 | git checkout -b maint-2.5 v2.5 |
| 46 | git push -u monitoring-plugins maint-2.4 | 46 | git push -u monitoring-plugins maint-2.5 |
| 47 | 47 | ||
| 48 | Checkout new version | 48 | Checkout new version |
| 49 | -------------------- | 49 | -------------------- |
| 50 | 50 | ||
| 51 | rm -rf /tmp/plugins | 51 | rm -rf /tmp/plugins |
| 52 | git archive --prefix=tmp/plugins/ v2.4 | (cd /; tar -xf -) | 52 | git archive --prefix=tmp/plugins/ v2.5 | (cd /; tar -xf -) |
| 53 | 53 | ||
| 54 | Build the tarball | 54 | Build the tarball |
| 55 | ----------------- | 55 | ----------------- |
| @@ -62,26 +62,26 @@ Build the tarball | |||
| 62 | Upload tarball to web site | 62 | Upload tarball to web site |
| 63 | -------------------------- | 63 | -------------------------- |
| 64 | 64 | ||
| 65 | scp monitoring-plugins-2.4.tar.gz \ | 65 | scp monitoring-plugins-2.5.tar.gz \ |
| 66 | plugins@orwell.monitoring-plugins.org:web/download/ | 66 | plugins@orwell.monitoring-plugins.org:web/download/ |
| 67 | 67 | ||
| 68 | Generate SHA1 checksum file on web site | 68 | Generate SHA1 checksum file on web site |
| 69 | --------------------------------------- | 69 | --------------------------------------- |
| 70 | 70 | ||
| 71 | ssh plugins@orwell.monitoring-plugins.org \ | 71 | ssh plugins@orwell.monitoring-plugins.org \ |
| 72 | '(cd web/download; $HOME/bin/create-checksum monitoring-plugins-2.4.tar.gz)' | 72 | '(cd web/download; $HOME/bin/create-checksum monitoring-plugins-2.5.tar.gz)' |
| 73 | 73 | ||
| 74 | Announce new release | 74 | Announce new release |
| 75 | -------------------- | 75 | -------------------- |
| 76 | 76 | ||
| 77 | - In the site.git repository: | 77 | - In the site.git repository: |
| 78 | 78 | ||
| 79 | - Create `web/input/news/release-2-4.md`. | 79 | - Create `web/input/news/release-2.5.md`. |
| 80 | - Update the `plugins_release` version in `web/macros.py`. | 80 | - Update the `plugins_release` version in `web/macros.py`. |
| 81 | - Commit and push the result: | 81 | - Commit and push the result: |
| 82 | 82 | ||
| 83 | git add web/input/news/release-2-4.md | 83 | git add web/input/news/release-2.5.md |
| 84 | git commit web/input/news/release-2-4.md web/macros.py | 84 | git commit web/input/news/release-2.5.md web/macros.py |
| 85 | git push origin master | 85 | git push origin master |
| 86 | 86 | ||
| 87 | - Post an announcement on (at least) the following mailing lists: | 87 | - Post an announcement on (at least) the following mailing lists: |
| @@ -93,6 +93,6 @@ Announce new release | |||
| 93 | 93 | ||
| 94 | If you want to mention the number of contributors in the announcement: | 94 | If you want to mention the number of contributors in the announcement: |
| 95 | 95 | ||
| 96 | git shortlog -s v2.3.3..v2.4 | wc -l | 96 | git shortlog -s v2.4.0..v2.5 | wc -l |
| 97 | 97 | ||
| 98 | <!-- vim:set filetype=markdown textwidth=72: --> | 98 | <!-- vim:set filetype=markdown textwidth=72: --> |
diff --git a/doc/developer-guidelines.sgml b/doc/developer-guidelines.sgml index 37c963ed..0afa733b 100644 --- a/doc/developer-guidelines.sgml +++ b/doc/developer-guidelines.sgml | |||
| @@ -14,15 +14,8 @@ | |||
| 14 | <pubdate>2013</pubdate> | 14 | <pubdate>2013</pubdate> |
| 15 | <title>Monitoring Plugins Development Guidelines</title> | 15 | <title>Monitoring Plugins Development Guidelines</title> |
| 16 | 16 | ||
| 17 | <revhistory> | ||
| 18 | <revision> | ||
| 19 | <revnumber>1796</revnumber> | ||
| 20 | <date>2007-09-24 14:51:07 -0400 (Mon, 24 Sep 2007)</date> | ||
| 21 | </revision> | ||
| 22 | </revhistory> | ||
| 23 | |||
| 24 | <copyright> | 17 | <copyright> |
| 25 | <year>2000 - 2013</year> | 18 | <year>2000 - 2024</year> |
| 26 | <holder>Monitoring Plugins Development Team</holder> | 19 | <holder>Monitoring Plugins Development Team</holder> |
| 27 | </copyright> | 20 | </copyright> |
| 28 | 21 | ||
| @@ -34,7 +27,7 @@ | |||
| 34 | the plugin developers and encourage the standardization of the | 27 | the plugin developers and encourage the standardization of the |
| 35 | different kind of plugins: C, shell, perl, python, etc.</para> | 28 | different kind of plugins: C, shell, perl, python, etc.</para> |
| 36 | 29 | ||
| 37 | <para>Monitoring Plugins Development Guidelines Copyright (C) 2000-2013 | 30 | <para>Monitoring Plugins Development Guidelines Copyright (C) 2000-2024 |
| 38 | (Monitoring Plugins Team)</para> | 31 | (Monitoring Plugins Team)</para> |
| 39 | 32 | ||
| 40 | <para>Permission is granted to make and distribute verbatim | 33 | <para>Permission is granted to make and distribute verbatim |
| @@ -383,13 +376,6 @@ | |||
| 383 | <para>It is up to third party programs to convert the Monitoring Plugins | 376 | <para>It is up to third party programs to convert the Monitoring Plugins |
| 384 | performance data into graphs.</para> | 377 | performance data into graphs.</para> |
| 385 | </section> | 378 | </section> |
| 386 | |||
| 387 | <section><title>Translations</title> | ||
| 388 | <para>If possible, use translation tools for all output to respect the user's language | ||
| 389 | settings. See <xref linkend="translationsdevelopers"> for guidelines | ||
| 390 | for the core plugins. | ||
| 391 | </para> | ||
| 392 | </section> | ||
| 393 | </section> | 379 | </section> |
| 394 | 380 | ||
| 395 | <section id="SysCmdAuxFiles"><title>System Commands and Auxiliary Files</title> | 381 | <section id="SysCmdAuxFiles"><title>System Commands and Auxiliary Files</title> |
| @@ -727,19 +713,18 @@ setup the tests. Run "make test" to run all the tests. | |||
| 727 | </section> | 713 | </section> |
| 728 | <section id="CodingGuidelines"><title>Coding guidelines</title> | 714 | <section id="CodingGuidelines"><title>Coding guidelines</title> |
| 729 | <para>See <ulink url="http://www.gnu.org/prep/standards_toc.html">GNU | 715 | <para>See <ulink url="http://www.gnu.org/prep/standards_toc.html">GNU |
| 730 | Coding standards</ulink> for general guidelines.</para> | 716 | Coding standards</ulink> for general guidelines. |
| 717 | Some parts of the guidelines (namely and explicitly the coding style) | ||
| 718 | are not seen as best practice by us.</para> | ||
| 731 | <section><title>C coding</title> | 719 | <section><title>C coding</title> |
| 732 | 720 | ||
| 733 | <para>Variables should be declared at the beginning of code blocks and | ||
| 734 | not inline because of portability with older compilers.</para> | ||
| 735 | |||
| 736 | <para>You should use the type "bool" and its values | 721 | <para>You should use the type "bool" and its values |
| 737 | "true" and "false" instead of the "int" type for booleans. | 722 | "true" and "false" instead of the "int" type for booleans. |
| 738 | </para> | 723 | </para> |
| 739 | </section> | 724 | </section> |
| 740 | 725 | ||
| 741 | <section><title>Crediting sources</title> | 726 | <section><title>Crediting sources</title> |
| 742 | <para>If you have copied a routine from another source, make sure the licence | 727 | <para>If you have copied a routine from another source, make sure the license |
| 743 | from your source allows this. Add a comment referencing the ACKNOWLEDGEMENTS | 728 | from your source allows this. Add a comment referencing the ACKNOWLEDGEMENTS |
| 744 | file, where you can put more detail about the source.</para> | 729 | file, where you can put more detail about the source.</para> |
| 745 | <para>For contributed code, do not add any named credits in the source code | 730 | <para>For contributed code, do not add any named credits in the source code |
| @@ -756,32 +741,6 @@ setup the tests. Run "make test" to run all the tests. | |||
| 756 | <para>All commits will be written to a ChangeLog at release time. | 741 | <para>All commits will be written to a ChangeLog at release time. |
| 757 | </para> | 742 | </para> |
| 758 | </section> | 743 | </section> |
| 759 | |||
| 760 | <section id="translationsdevelopers"><title>Translations for developers</title> | ||
| 761 | <para>To make the job easier for translators, please follow these guidelines:</para> | ||
| 762 | <orderedlist> | ||
| 763 | <listitem><para> | ||
| 764 | Before creating new strings, check the po/monitoring-plugins.pot file to | ||
| 765 | see if a similar string | ||
| 766 | already exists | ||
| 767 | </para></listitem> | ||
| 768 | <listitem><para> | ||
| 769 | For help texts, break into individual options so that these can be reused | ||
| 770 | between plugins | ||
| 771 | </para></listitem> | ||
| 772 | <listitem><para>Try to avoid linefeeds unless you are working on a block of text</para></listitem> | ||
| 773 | <listitem><para>Short help is not translated</para></listitem> | ||
| 774 | <listitem><para>Long help has options in English language, but text translated</para></listitem> | ||
| 775 | <listitem><para>"Copyright" kept in English</para></listitem> | ||
| 776 | <listitem><para>Copyright holder names kept in original text</para></listitem> | ||
| 777 | <listitem><para>Debugging output does not need to be translated</para></listitem> | ||
| 778 | </orderedlist> | ||
| 779 | </section> | ||
| 780 | |||
| 781 | <section><title>Translations for translators</title> | ||
| 782 | <para>To create an up to date list of translatable strings, run: tools/gen_locale.sh</para> | ||
| 783 | </section> | ||
| 784 | |||
| 785 | </section> | 744 | </section> |
| 786 | 745 | ||
| 787 | <section id="SubmittingChanges"><title>Submission of new plugins and patches</title> | 746 | <section id="SubmittingChanges"><title>Submission of new plugins and patches</title> |
diff --git a/lib/Makefile.am b/lib/Makefile.am index 01d73a64..dc3ee893 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am | |||
| @@ -7,8 +7,8 @@ noinst_LIBRARIES = libmonitoringplug.a | |||
| 7 | AM_CPPFLAGS = -DNP_STATE_DIR_PREFIX=\"$(localstatedir)\" \ | 7 | AM_CPPFLAGS = -DNP_STATE_DIR_PREFIX=\"$(localstatedir)\" \ |
| 8 | -I$(srcdir) -I$(top_srcdir)/gl -I$(top_srcdir)/intl -I$(top_srcdir)/plugins | 8 | -I$(srcdir) -I$(top_srcdir)/gl -I$(top_srcdir)/intl -I$(top_srcdir)/plugins |
| 9 | 9 | ||
| 10 | libmonitoringplug_a_SOURCES = utils_base.c utils_disk.c utils_tcp.c utils_cmd.c | 10 | libmonitoringplug_a_SOURCES = utils_base.c utils_disk.c utils_tcp.c utils_cmd.c maxfd.c |
| 11 | EXTRA_DIST = utils_base.h utils_disk.h utils_tcp.h utils_cmd.h parse_ini.h extra_opts.h | 11 | EXTRA_DIST = utils_base.h utils_disk.h utils_tcp.h utils_cmd.h parse_ini.h extra_opts.h maxfd.h |
| 12 | 12 | ||
| 13 | if USE_PARSE_INI | 13 | if USE_PARSE_INI |
| 14 | libmonitoringplug_a_SOURCES += parse_ini.c extra_opts.c | 14 | libmonitoringplug_a_SOURCES += parse_ini.c extra_opts.c |
diff --git a/lib/extra_opts.c b/lib/extra_opts.c index f4d5e66a..771621d8 100644 --- a/lib/extra_opts.c +++ b/lib/extra_opts.c | |||
| @@ -1,23 +1,23 @@ | |||
| 1 | /***************************************************************************** | 1 | /***************************************************************************** |
| 2 | * | 2 | * |
| 3 | * Monitoring Plugins extra_opts library | 3 | * Monitoring Plugins extra_opts library |
| 4 | * | 4 | * |
| 5 | * License: GPL | 5 | * License: GPL |
| 6 | * Copyright (c) 2007 Monitoring Plugins Development Team | 6 | * Copyright (c) 2007 Monitoring Plugins Development Team |
| 7 | * | 7 | * |
| 8 | * This program is free software: you can redistribute it and/or modify | 8 | * This program is free software: you can redistribute it and/or modify |
| 9 | * it under the terms of the GNU General Public License as published by | 9 | * it under the terms of the GNU General Public License as published by |
| 10 | * the Free Software Foundation, either version 3 of the License, or | 10 | * the Free Software Foundation, either version 3 of the License, or |
| 11 | * (at your option) any later version. | 11 | * (at your option) any later version. |
| 12 | * | 12 | * |
| 13 | * This program is distributed in the hope that it will be useful, | 13 | * This program is distributed in the hope that it will be useful, |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 16 | * GNU General Public License for more details. | 16 | * GNU General Public License for more details. |
| 17 | * | 17 | * |
| 18 | * You should have received a copy of the GNU General Public License | 18 | * You should have received a copy of the GNU General Public License |
| 19 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 19 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 20 | * | 20 | * |
| 21 | *****************************************************************************/ | 21 | *****************************************************************************/ |
| 22 | 22 | ||
| 23 | #include "common.h" | 23 | #include "common.h" |
| @@ -26,15 +26,14 @@ | |||
| 26 | #include "extra_opts.h" | 26 | #include "extra_opts.h" |
| 27 | 27 | ||
| 28 | /* FIXME: copied from utils.h; we should move a bunch of libs! */ | 28 | /* FIXME: copied from utils.h; we should move a bunch of libs! */ |
| 29 | int | 29 | bool is_option2 (char *str) |
| 30 | is_option2 (char *str) | ||
| 31 | { | 30 | { |
| 32 | if (!str) | 31 | if (!str) |
| 33 | return FALSE; | 32 | return false; |
| 34 | else if (strspn (str, "-") == 1 || strspn (str, "-") == 2) | 33 | else if (strspn (str, "-") == 1 || strspn (str, "-") == 2) |
| 35 | return TRUE; | 34 | return true; |
| 36 | else | 35 | else |
| 37 | return FALSE; | 36 | return false; |
| 38 | } | 37 | } |
| 39 | 38 | ||
| 40 | /* this is the externally visible function used by plugins */ | 39 | /* this is the externally visible function used by plugins */ |
| @@ -93,14 +92,14 @@ char **np_extra_opts(int *argc, char **argv, const char *plugin_name){ | |||
| 93 | /* append the list to extra_args */ | 92 | /* append the list to extra_args */ |
| 94 | if(extra_args==NULL){ | 93 | if(extra_args==NULL){ |
| 95 | extra_args=ea1; | 94 | extra_args=ea1; |
| 96 | while(ea1=ea1->next) ea_num++; | 95 | while((ea1 = ea1->next)) ea_num++; |
| 97 | }else{ | 96 | }else{ |
| 98 | ea_tmp=extra_args; | 97 | ea_tmp=extra_args; |
| 99 | while(ea_tmp->next) { | 98 | while(ea_tmp->next) { |
| 100 | ea_tmp=ea_tmp->next; | 99 | ea_tmp=ea_tmp->next; |
| 101 | } | 100 | } |
| 102 | ea_tmp->next=ea1; | 101 | ea_tmp->next=ea1; |
| 103 | while(ea1=ea1->next) ea_num++; | 102 | while((ea1 = ea1->next)) ea_num++; |
| 104 | } | 103 | } |
| 105 | ea1=ea_tmp=NULL; | 104 | ea1=ea_tmp=NULL; |
| 106 | } | 105 | } |
diff --git a/lib/maxfd.c b/lib/maxfd.c new file mode 100644 index 00000000..529b3568 --- /dev/null +++ b/lib/maxfd.c | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | #include "./maxfd.h" | ||
| 2 | #include <errno.h> | ||
| 3 | |||
| 4 | long mp_open_max (void) { | ||
| 5 | long maxfd = 0L; | ||
| 6 | /* Try sysconf(_SC_OPEN_MAX) first, as it can be higher than OPEN_MAX. | ||
| 7 | * If that fails and the macro isn't defined, we fall back to an educated | ||
| 8 | * guess. There's no guarantee that our guess is adequate and the program | ||
| 9 | * will die with SIGSEGV if it isn't and the upper boundary is breached. */ | ||
| 10 | |||
| 11 | #ifdef _SC_OPEN_MAX | ||
| 12 | errno = 0; | ||
| 13 | if ((maxfd = sysconf (_SC_OPEN_MAX)) < 0) { | ||
| 14 | if (errno == 0) | ||
| 15 | maxfd = DEFAULT_MAXFD; /* it's indeterminate */ | ||
| 16 | else | ||
| 17 | die (STATE_UNKNOWN, _("sysconf error for _SC_OPEN_MAX\n")); | ||
| 18 | } | ||
| 19 | #elif defined(OPEN_MAX) | ||
| 20 | return OPEN_MAX | ||
| 21 | #else /* sysconf macro unavailable, so guess (may be wildly inaccurate) */ | ||
| 22 | return DEFAULT_MAXFD; | ||
| 23 | #endif | ||
| 24 | |||
| 25 | return(maxfd); | ||
| 26 | } | ||
diff --git a/lib/maxfd.h b/lib/maxfd.h new file mode 100644 index 00000000..45218d0f --- /dev/null +++ b/lib/maxfd.h | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | #ifndef _MAXFD_ | ||
| 2 | #define _MAXFD_ | ||
| 3 | |||
| 4 | #define DEFAULT_MAXFD 256 /* fallback value if no max open files value is set */ | ||
| 5 | #define MAXFD_LIMIT 8192 /* upper limit of open files */ | ||
| 6 | |||
| 7 | long mp_open_max (void); | ||
| 8 | |||
| 9 | #endif // _MAXFD_ | ||
diff --git a/lib/parse_ini.c b/lib/parse_ini.c index 547af433..09c0dc4f 100644 --- a/lib/parse_ini.c +++ b/lib/parse_ini.c | |||
| @@ -1,24 +1,24 @@ | |||
| 1 | /***************************************************************************** | 1 | /***************************************************************************** |
| 2 | * | 2 | * |
| 3 | * Monitoring Plugins parse_ini library | 3 | * Monitoring Plugins parse_ini library |
| 4 | * | 4 | * |
| 5 | * License: GPL | 5 | * License: GPL |
| 6 | * Copyright (c) 2007 Monitoring Plugins Development Team | 6 | * Copyright (c) 2007 Monitoring Plugins Development Team |
| 7 | * | 7 | * |
| 8 | * This program is free software: you can redistribute it and/or modify | 8 | * This program is free software: you can redistribute it and/or modify |
| 9 | * it under the terms of the GNU General Public License as published by | 9 | * it under the terms of the GNU General Public License as published by |
| 10 | * the Free Software Foundation, either version 3 of the License, or | 10 | * the Free Software Foundation, either version 3 of the License, or |
| 11 | * (at your option) any later version. | 11 | * (at your option) any later version. |
| 12 | * | 12 | * |
| 13 | * This program is distributed in the hope that it will be useful, | 13 | * This program is distributed in the hope that it will be useful, |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 16 | * GNU General Public License for more details. | 16 | * GNU General Public License for more details. |
| 17 | * | 17 | * |
| 18 | * You should have received a copy of the GNU General Public License | 18 | * You should have received a copy of the GNU General Public License |
| 19 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 19 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 20 | * | 20 | * |
| 21 | * | 21 | * |
| 22 | *****************************************************************************/ | 22 | *****************************************************************************/ |
| 23 | 23 | ||
| 24 | #include "common.h" | 24 | #include "common.h" |
| @@ -36,6 +36,7 @@ | |||
| 36 | */ | 36 | */ |
| 37 | typedef struct { | 37 | typedef struct { |
| 38 | char *file; | 38 | char *file; |
| 39 | bool file_string_on_heap; | ||
| 39 | char *stanza; | 40 | char *stanza; |
| 40 | } np_ini_info; | 41 | } np_ini_info; |
| 41 | 42 | ||
| @@ -95,16 +96,22 @@ parse_locator(const char *locator, const char *def_stanza, np_ini_info *i) | |||
| 95 | i->stanza = malloc(sizeof(char) * (stanza_len + 1)); | 96 | i->stanza = malloc(sizeof(char) * (stanza_len + 1)); |
| 96 | strncpy(i->stanza, locator, stanza_len); | 97 | strncpy(i->stanza, locator, stanza_len); |
| 97 | i->stanza[stanza_len] = '\0'; | 98 | i->stanza[stanza_len] = '\0'; |
| 98 | } else /* otherwise we use the default stanza */ | 99 | } else {/* otherwise we use the default stanza */ |
| 99 | i->stanza = strdup(def_stanza); | 100 | i->stanza = strdup(def_stanza); |
| 101 | } | ||
| 100 | 102 | ||
| 101 | if (i->stanza == NULL) | 103 | if (i->stanza == NULL) |
| 102 | die(STATE_UNKNOWN, _("malloc() failed!\n")); | 104 | die(STATE_UNKNOWN, _("malloc() failed!\n")); |
| 103 | 105 | ||
| 104 | /* check whether there's an @file part */ | 106 | /* check whether there's an @file part */ |
| 105 | i->file = stanza_len == locator_len | 107 | if (stanza_len == locator_len) { |
| 106 | ? default_file() | 108 | i->file = default_file(); |
| 107 | : strdup(&(locator[stanza_len + 1])); | 109 | i->file_string_on_heap = false; |
| 110 | } else { | ||
| 111 | i->file = strdup(&(locator[stanza_len + 1])); | ||
| 112 | i->file_string_on_heap = true; | ||
| 113 | } | ||
| 114 | |||
| 108 | if (i->file == NULL || i->file[0] == '\0') | 115 | if (i->file == NULL || i->file[0] == '\0') |
| 109 | die(STATE_UNKNOWN, | 116 | die(STATE_UNKNOWN, |
| 110 | _("Cannot find config file in any standard location.\n")); | 117 | _("Cannot find config file in any standard location.\n")); |
| @@ -131,12 +138,15 @@ np_get_defaults(const char *locator, const char *default_section) | |||
| 131 | if (inifile == NULL) | 138 | if (inifile == NULL) |
| 132 | die(STATE_UNKNOWN, _("Can't read config file: %s\n"), | 139 | die(STATE_UNKNOWN, _("Can't read config file: %s\n"), |
| 133 | strerror(errno)); | 140 | strerror(errno)); |
| 134 | if (read_defaults(inifile, i.stanza, &defaults) == FALSE) | 141 | if (!read_defaults(inifile, i.stanza, &defaults)) |
| 135 | die(STATE_UNKNOWN, | 142 | die(STATE_UNKNOWN, |
| 136 | _("Invalid section '%s' in config file '%s'\n"), i.stanza, | 143 | _("Invalid section '%s' in config file '%s'\n"), i.stanza, |
| 137 | i.file); | 144 | i.file); |
| 138 | 145 | ||
| 139 | free(i.file); | 146 | if (i.file_string_on_heap) { |
| 147 | free(i.file); | ||
| 148 | } | ||
| 149 | |||
| 140 | if (inifile != stdin) | 150 | if (inifile != stdin) |
| 141 | fclose(inifile); | 151 | fclose(inifile); |
| 142 | free(i.stanza); | 152 | free(i.stanza); |
| @@ -157,7 +167,8 @@ np_get_defaults(const char *locator, const char *default_section) | |||
| 157 | static int | 167 | static int |
| 158 | read_defaults(FILE *f, const char *stanza, np_arg_list **opts) | 168 | read_defaults(FILE *f, const char *stanza, np_arg_list **opts) |
| 159 | { | 169 | { |
| 160 | int c, status = FALSE; | 170 | int c = 0; |
| 171 | bool status = false; | ||
| 161 | size_t i, stanza_len; | 172 | size_t i, stanza_len; |
| 162 | enum { NOSTANZA, WRONGSTANZA, RIGHTSTANZA } stanzastate = NOSTANZA; | 173 | enum { NOSTANZA, WRONGSTANZA, RIGHTSTANZA } stanzastate = NOSTANZA; |
| 163 | 174 | ||
| @@ -219,7 +230,7 @@ read_defaults(FILE *f, const char *stanza, np_arg_list **opts) | |||
| 219 | die(STATE_UNKNOWN, "%s\n", | 230 | die(STATE_UNKNOWN, "%s\n", |
| 220 | _("Config file error")); | 231 | _("Config file error")); |
| 221 | } | 232 | } |
| 222 | status = TRUE; | 233 | status = true; |
| 223 | break; | 234 | break; |
| 224 | } | 235 | } |
| 225 | break; | 236 | break; |
| @@ -357,14 +368,18 @@ add_option(FILE *f, np_arg_list **optlst) | |||
| 357 | static char * | 368 | static char * |
| 358 | default_file(void) | 369 | default_file(void) |
| 359 | { | 370 | { |
| 360 | char **p, *ini_file; | 371 | char *ini_file; |
| 361 | 372 | ||
| 362 | if ((ini_file = getenv("MP_CONFIG_FILE")) != NULL || | 373 | if ((ini_file = getenv("MP_CONFIG_FILE")) != NULL || |
| 363 | (ini_file = default_file_in_path()) != NULL) | 374 | (ini_file = default_file_in_path()) != NULL) { |
| 364 | return ini_file; | 375 | return ini_file; |
| 365 | for (p = default_ini_path_names; *p != NULL; p++) | 376 | } |
| 366 | if (access(*p, F_OK) == 0) | 377 | |
| 378 | for (char **p = default_ini_path_names; *p != NULL; p++) { | ||
| 379 | if (access(*p, F_OK) == 0) { | ||
| 367 | return *p; | 380 | return *p; |
| 381 | } | ||
| 382 | } | ||
| 368 | return NULL; | 383 | return NULL; |
| 369 | } | 384 | } |
| 370 | 385 | ||
diff --git a/lib/tests/test_base64.c b/lib/tests/test_base64.c index 5103d10d..05dd7943 100644 --- a/lib/tests/test_base64.c +++ b/lib/tests/test_base64.c | |||
| @@ -1,19 +1,19 @@ | |||
| 1 | /***************************************************************************** | 1 | /***************************************************************************** |
| 2 | * | 2 | * |
| 3 | * This program is free software: you can redistribute it and/or modify | 3 | * This program is free software: you can redistribute it and/or modify |
| 4 | * it under the terms of the GNU General Public License as published by | 4 | * it under the terms of the GNU General Public License as published by |
| 5 | * the Free Software Foundation, either version 3 of the License, or | 5 | * the Free Software Foundation, either version 3 of the License, or |
| 6 | * (at your option) any later version. | 6 | * (at your option) any later version. |
| 7 | * | 7 | * |
| 8 | * This program is distributed in the hope that it will be useful, | 8 | * This program is distributed in the hope that it will be useful, |
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 | * GNU General Public License for more details. | 11 | * GNU General Public License for more details. |
| 12 | * | 12 | * |
| 13 | * You should have received a copy of the GNU General Public License | 13 | * You should have received a copy of the GNU General Public License |
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | * | 15 | * |
| 16 | * | 16 | * |
| 17 | *****************************************************************************/ | 17 | *****************************************************************************/ |
| 18 | 18 | ||
| 19 | #include "common.h" | 19 | #include "common.h" |
diff --git a/lib/tests/test_cmd.c b/lib/tests/test_cmd.c index 4bb60aac..02ae11f5 100644 --- a/lib/tests/test_cmd.c +++ b/lib/tests/test_cmd.c | |||
| @@ -1,19 +1,19 @@ | |||
| 1 | /***************************************************************************** | 1 | /***************************************************************************** |
| 2 | * | 2 | * |
| 3 | * This program is free software: you can redistribute it and/or modify | 3 | * This program is free software: you can redistribute it and/or modify |
| 4 | * it under the terms of the GNU General Public License as published by | 4 | * it under the terms of the GNU General Public License as published by |
| 5 | * the Free Software Foundation, either version 3 of the License, or | 5 | * the Free Software Foundation, either version 3 of the License, or |
| 6 | * (at your option) any later version. | 6 | * (at your option) any later version. |
| 7 | * | 7 | * |
| 8 | * This program is distributed in the hope that it will be useful, | 8 | * This program is distributed in the hope that it will be useful, |
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 | * GNU General Public License for more details. | 11 | * GNU General Public License for more details. |
| 12 | * | 12 | * |
| 13 | * You should have received a copy of the GNU General Public License | 13 | * You should have received a copy of the GNU General Public License |
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | * | 15 | * |
| 16 | * | 16 | * |
| 17 | *****************************************************************************/ | 17 | *****************************************************************************/ |
| 18 | 18 | ||
| 19 | #include "common.h" | 19 | #include "common.h" |
diff --git a/lib/tests/test_disk.c b/lib/tests/test_disk.c index 9bd68c7a..e283fe2e 100644 --- a/lib/tests/test_disk.c +++ b/lib/tests/test_disk.c | |||
| @@ -1,19 +1,19 @@ | |||
| 1 | /***************************************************************************** | 1 | /***************************************************************************** |
| 2 | * | 2 | * |
| 3 | * This program is free software: you can redistribute it and/or modify | 3 | * This program is free software: you can redistribute it and/or modify |
| 4 | * it under the terms of the GNU General Public License as published by | 4 | * it under the terms of the GNU General Public License as published by |
| 5 | * the Free Software Foundation, either version 3 of the License, or | 5 | * the Free Software Foundation, either version 3 of the License, or |
| 6 | * (at your option) any later version. | 6 | * (at your option) any later version. |
| 7 | * | 7 | * |
| 8 | * This program is distributed in the hope that it will be useful, | 8 | * This program is distributed in the hope that it will be useful, |
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 | * GNU General Public License for more details. | 11 | * GNU General Public License for more details. |
| 12 | * | 12 | * |
| 13 | * You should have received a copy of the GNU General Public License | 13 | * You should have received a copy of the GNU General Public License |
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | * | 15 | * |
| 16 | * | 16 | * |
| 17 | *****************************************************************************/ | 17 | *****************************************************************************/ |
| 18 | 18 | ||
| 19 | #include "common.h" | 19 | #include "common.h" |
| @@ -44,19 +44,19 @@ main (int argc, char **argv) | |||
| 44 | 44 | ||
| 45 | plan_tests(33); | 45 | plan_tests(33); |
| 46 | 46 | ||
| 47 | ok( np_find_name(exclude_filesystem, "/var/log") == FALSE, "/var/log not in list"); | 47 | ok( np_find_name(exclude_filesystem, "/var/log") == false, "/var/log not in list"); |
| 48 | np_add_name(&exclude_filesystem, "/var/log"); | 48 | np_add_name(&exclude_filesystem, "/var/log"); |
| 49 | ok( np_find_name(exclude_filesystem, "/var/log") == TRUE, "is in list now"); | 49 | ok( np_find_name(exclude_filesystem, "/var/log") == true, "is in list now"); |
| 50 | ok( np_find_name(exclude_filesystem, "/home") == FALSE, "/home not in list"); | 50 | ok( np_find_name(exclude_filesystem, "/home") == false, "/home not in list"); |
| 51 | np_add_name(&exclude_filesystem, "/home"); | 51 | np_add_name(&exclude_filesystem, "/home"); |
| 52 | ok( np_find_name(exclude_filesystem, "/home") == TRUE, "is in list now"); | 52 | ok( np_find_name(exclude_filesystem, "/home") == true, "is in list now"); |
| 53 | ok( np_find_name(exclude_filesystem, "/var/log") == TRUE, "/var/log still in list"); | 53 | ok( np_find_name(exclude_filesystem, "/var/log") == true, "/var/log still in list"); |
| 54 | 54 | ||
| 55 | ok( np_find_name(exclude_fstype, "iso9660") == FALSE, "iso9660 not in list"); | 55 | ok( np_find_name(exclude_fstype, "iso9660") == false, "iso9660 not in list"); |
| 56 | np_add_name(&exclude_fstype, "iso9660"); | 56 | np_add_name(&exclude_fstype, "iso9660"); |
| 57 | ok( np_find_name(exclude_fstype, "iso9660") == TRUE, "is in list now"); | 57 | ok( np_find_name(exclude_fstype, "iso9660") == true, "is in list now"); |
| 58 | 58 | ||
| 59 | ok( np_find_name(exclude_filesystem, "iso9660") == FALSE, "Make sure no clashing in variables"); | 59 | ok( np_find_name(exclude_filesystem, "iso9660") == false, "Make sure no clashing in variables"); |
| 60 | 60 | ||
| 61 | /* | 61 | /* |
| 62 | for (temp_name = exclude_filesystem; temp_name; temp_name = temp_name->next) { | 62 | for (temp_name = exclude_filesystem; temp_name; temp_name = temp_name->next) { |
| @@ -120,7 +120,7 @@ main (int argc, char **argv) | |||
| 120 | np_add_parameter(&paths, "/home/tonvoon"); | 120 | np_add_parameter(&paths, "/home/tonvoon"); |
| 121 | np_add_parameter(&paths, "/dev/c2t0d0s0"); | 121 | np_add_parameter(&paths, "/dev/c2t0d0s0"); |
| 122 | 122 | ||
| 123 | np_set_best_match(paths, dummy_mount_list, FALSE); | 123 | np_set_best_match(paths, dummy_mount_list, false); |
| 124 | for (p = paths; p; p = p->name_next) { | 124 | for (p = paths; p; p = p->name_next) { |
| 125 | struct mount_entry *temp_me; | 125 | struct mount_entry *temp_me; |
| 126 | temp_me = p->best_match; | 126 | temp_me = p->best_match; |
| @@ -144,7 +144,7 @@ main (int argc, char **argv) | |||
| 144 | np_add_parameter(&paths, "/home/tonvoon"); | 144 | np_add_parameter(&paths, "/home/tonvoon"); |
| 145 | np_add_parameter(&paths, "/home"); | 145 | np_add_parameter(&paths, "/home"); |
| 146 | 146 | ||
| 147 | np_set_best_match(paths, dummy_mount_list, TRUE); | 147 | np_set_best_match(paths, dummy_mount_list, true); |
| 148 | for (p = paths; p; p = p->name_next) { | 148 | for (p = paths; p; p = p->name_next) { |
| 149 | if (! strcmp(p->name, "/home/groups")) { | 149 | if (! strcmp(p->name, "/home/groups")) { |
| 150 | ok( ! p->best_match , "/home/groups correctly not found"); | 150 | ok( ! p->best_match , "/home/groups correctly not found"); |
| @@ -167,7 +167,7 @@ main (int argc, char **argv) | |||
| 167 | } | 167 | } |
| 168 | ok(found == 0, "first element successfully deleted"); | 168 | ok(found == 0, "first element successfully deleted"); |
| 169 | found = 0; | 169 | found = 0; |
| 170 | 170 | ||
| 171 | p=paths; | 171 | p=paths; |
| 172 | while (p) { | 172 | while (p) { |
| 173 | if (! strcmp(p->name, "/tmp")) | 173 | if (! strcmp(p->name, "/tmp")) |
| @@ -203,9 +203,9 @@ main (int argc, char **argv) | |||
| 203 | } | 203 | } |
| 204 | 204 | ||
| 205 | 205 | ||
| 206 | void | 206 | void |
| 207 | np_test_mount_entry_regex (struct mount_entry *dummy_mount_list, char *regstr, int cflags, int expect, char *desc) | 207 | np_test_mount_entry_regex (struct mount_entry *dummy_mount_list, char *regstr, int cflags, int expect, char *desc) |
| 208 | { | 208 | { |
| 209 | int matches = 0; | 209 | int matches = 0; |
| 210 | regex_t re; | 210 | regex_t re; |
| 211 | struct mount_entry *me; | 211 | struct mount_entry *me; |
| @@ -214,7 +214,7 @@ np_test_mount_entry_regex (struct mount_entry *dummy_mount_list, char *regstr, i | |||
| 214 | if(np_regex_match_mount_entry(me,&re)) | 214 | if(np_regex_match_mount_entry(me,&re)) |
| 215 | matches++; | 215 | matches++; |
| 216 | } | 216 | } |
| 217 | ok( matches == expect, | 217 | ok( matches == expect, |
| 218 | "%s '%s' matched %i/3 entries. ok: %i/3", | 218 | "%s '%s' matched %i/3 entries. ok: %i/3", |
| 219 | desc, regstr, expect, matches); | 219 | desc, regstr, expect, matches); |
| 220 | 220 | ||
diff --git a/lib/tests/test_ini1.c b/lib/tests/test_ini1.c index 77f88549..6843bac2 100644 --- a/lib/tests/test_ini1.c +++ b/lib/tests/test_ini1.c | |||
| @@ -1,19 +1,19 @@ | |||
| 1 | /***************************************************************************** | 1 | /***************************************************************************** |
| 2 | * | 2 | * |
| 3 | * This program is free software: you can redistribute it and/or modify | 3 | * This program is free software: you can redistribute it and/or modify |
| 4 | * it under the terms of the GNU General Public License as published by | 4 | * it under the terms of the GNU General Public License as published by |
| 5 | * the Free Software Foundation, either version 3 of the License, or | 5 | * the Free Software Foundation, either version 3 of the License, or |
| 6 | * (at your option) any later version. | 6 | * (at your option) any later version. |
| 7 | * | 7 | * |
| 8 | * This program is distributed in the hope that it will be useful, | 8 | * This program is distributed in the hope that it will be useful, |
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 | * GNU General Public License for more details. | 11 | * GNU General Public License for more details. |
| 12 | * | 12 | * |
| 13 | * You should have received a copy of the GNU General Public License | 13 | * You should have received a copy of the GNU General Public License |
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | * | 15 | * |
| 16 | * | 16 | * |
| 17 | *****************************************************************************/ | 17 | *****************************************************************************/ |
| 18 | 18 | ||
| 19 | #include "common.h" | 19 | #include "common.h" |
diff --git a/lib/tests/test_ini3.c b/lib/tests/test_ini3.c index 814b3ec0..8a2a0414 100644 --- a/lib/tests/test_ini3.c +++ b/lib/tests/test_ini3.c | |||
| @@ -1,19 +1,19 @@ | |||
| 1 | /***************************************************************************** | 1 | /***************************************************************************** |
| 2 | * | 2 | * |
| 3 | * This program is free software: you can redistribute it and/or modify | 3 | * This program is free software: you can redistribute it and/or modify |
| 4 | * it under the terms of the GNU General Public License as published by | 4 | * it under the terms of the GNU General Public License as published by |
| 5 | * the Free Software Foundation, either version 3 of the License, or | 5 | * the Free Software Foundation, either version 3 of the License, or |
| 6 | * (at your option) any later version. | 6 | * (at your option) any later version. |
| 7 | * | 7 | * |
| 8 | * This program is distributed in the hope that it will be useful, | 8 | * This program is distributed in the hope that it will be useful, |
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 | * GNU General Public License for more details. | 11 | * GNU General Public License for more details. |
| 12 | * | 12 | * |
| 13 | * You should have received a copy of the GNU General Public License | 13 | * You should have received a copy of the GNU General Public License |
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | * | 15 | * |
| 16 | * | 16 | * |
| 17 | *****************************************************************************/ | 17 | *****************************************************************************/ |
| 18 | 18 | ||
| 19 | #include "parse_ini.h" | 19 | #include "parse_ini.h" |
diff --git a/lib/tests/test_opts2.c b/lib/tests/test_opts2.c index c3d2067f..780220ee 100644 --- a/lib/tests/test_opts2.c +++ b/lib/tests/test_opts2.c | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | * | 12 | * |
| 13 | * You should have received a copy of the GNU General Public License | 13 | * You should have received a copy of the GNU General Public License |
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | * | 15 | * |
| 16 | *****************************************************************************/ | 16 | *****************************************************************************/ |
| 17 | 17 | ||
| 18 | #include "common.h" | 18 | #include "common.h" |
diff --git a/lib/tests/test_tcp.c b/lib/tests/test_tcp.c index 114252b4..1954b0fb 100644 --- a/lib/tests/test_tcp.c +++ b/lib/tests/test_tcp.c | |||
| @@ -1,19 +1,19 @@ | |||
| 1 | /***************************************************************************** | 1 | /***************************************************************************** |
| 2 | * | 2 | * |
| 3 | * This program is free software: you can redistribute it and/or modify | 3 | * This program is free software: you can redistribute it and/or modify |
| 4 | * it under the terms of the GNU General Public License as published by | 4 | * it under the terms of the GNU General Public License as published by |
| 5 | * the Free Software Foundation, either version 3 of the License, or | 5 | * the Free Software Foundation, either version 3 of the License, or |
| 6 | * (at your option) any later version. | 6 | * (at your option) any later version. |
| 7 | * | 7 | * |
| 8 | * This program is distributed in the hope that it will be useful, | 8 | * This program is distributed in the hope that it will be useful, |
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 | * GNU General Public License for more details. | 11 | * GNU General Public License for more details. |
| 12 | * | 12 | * |
| 13 | * You should have received a copy of the GNU General Public License | 13 | * You should have received a copy of the GNU General Public License |
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | * | 15 | * |
| 16 | * | 16 | * |
| 17 | *****************************************************************************/ | 17 | *****************************************************************************/ |
| 18 | 18 | ||
| 19 | #include "common.h" | 19 | #include "common.h" |
| @@ -33,7 +33,7 @@ main(void) | |||
| 33 | server_expect[0] = strdup("AA"); | 33 | server_expect[0] = strdup("AA"); |
| 34 | server_expect[1] = strdup("bb"); | 34 | server_expect[1] = strdup("bb"); |
| 35 | server_expect[2] = strdup("CC"); | 35 | server_expect[2] = strdup("CC"); |
| 36 | 36 | ||
| 37 | ok(np_expect_match("AA bb CC XX", server_expect, server_expect_count, NP_MATCH_EXACT) == NP_MATCH_SUCCESS, | 37 | ok(np_expect_match("AA bb CC XX", server_expect, server_expect_count, NP_MATCH_EXACT) == NP_MATCH_SUCCESS, |
| 38 | "Test matching any string at the beginning (first expect string)"); | 38 | "Test matching any string at the beginning (first expect string)"); |
| 39 | ok(np_expect_match("bb AA CC XX", server_expect, server_expect_count, NP_MATCH_EXACT) == NP_MATCH_SUCCESS, | 39 | ok(np_expect_match("bb AA CC XX", server_expect, server_expect_count, NP_MATCH_EXACT) == NP_MATCH_SUCCESS, |
| @@ -52,7 +52,7 @@ main(void) | |||
| 52 | "Test not matching all strings"); | 52 | "Test not matching all strings"); |
| 53 | ok(np_expect_match("XX XX", server_expect, server_expect_count, NP_MATCH_ALL) == NP_MATCH_RETRY, | 53 | ok(np_expect_match("XX XX", server_expect, server_expect_count, NP_MATCH_ALL) == NP_MATCH_RETRY, |
| 54 | "Test not matching any string (testing all)"); | 54 | "Test not matching any string (testing all)"); |
| 55 | 55 | ||
| 56 | 56 | ||
| 57 | return exit_status(); | 57 | return exit_status(); |
| 58 | } | 58 | } |
diff --git a/lib/tests/test_utils.c b/lib/tests/test_utils.c index 7b10494c..01afacdc 100644 --- a/lib/tests/test_utils.c +++ b/lib/tests/test_utils.c | |||
| @@ -1,19 +1,19 @@ | |||
| 1 | /***************************************************************************** | 1 | /***************************************************************************** |
| 2 | * | 2 | * |
| 3 | * This program is free software: you can redistribute it and/or modify | 3 | * This program is free software: you can redistribute it and/or modify |
| 4 | * it under the terms of the GNU General Public License as published by | 4 | * it under the terms of the GNU General Public License as published by |
| 5 | * the Free Software Foundation, either version 3 of the License, or | 5 | * the Free Software Foundation, either version 3 of the License, or |
| 6 | * (at your option) any later version. | 6 | * (at your option) any later version. |
| 7 | * | 7 | * |
| 8 | * This program is distributed in the hope that it will be useful, | 8 | * This program is distributed in the hope that it will be useful, |
| 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 | * GNU General Public License for more details. | 11 | * GNU General Public License for more details. |
| 12 | * | 12 | * |
| 13 | * You should have received a copy of the GNU General Public License | 13 | * You should have received a copy of the GNU General Public License |
| 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 15 | * | 15 | * |
| 16 | * | 16 | * |
| 17 | *****************************************************************************/ | 17 | *****************************************************************************/ |
| 18 | 18 | ||
| 19 | #include "common.h" | 19 | #include "common.h" |
| @@ -62,99 +62,99 @@ main (int argc, char **argv) | |||
| 62 | range = parse_range_string("6"); | 62 | range = parse_range_string("6"); |
| 63 | ok( range != NULL, "'6' is valid range"); | 63 | ok( range != NULL, "'6' is valid range"); |
| 64 | ok( range->start == 0, "Start correct"); | 64 | ok( range->start == 0, "Start correct"); |
| 65 | ok( range->start_infinity == FALSE, "Not using negative infinity"); | 65 | ok( range->start_infinity == false, "Not using negative infinity"); |
| 66 | ok( range->end == 6, "End correct"); | 66 | ok( range->end == 6, "End correct"); |
| 67 | ok( range->end_infinity == FALSE, "Not using infinity"); | 67 | ok( range->end_infinity == false, "Not using infinity"); |
| 68 | free(range); | 68 | free(range); |
| 69 | 69 | ||
| 70 | range = parse_range_string("1:12%%"); | 70 | range = parse_range_string("1:12%%"); |
| 71 | ok( range != NULL, "'1:12%%' is valid - percentages are ignored"); | 71 | ok( range != NULL, "'1:12%%' is valid - percentages are ignored"); |
| 72 | ok( range->start == 1, "Start correct"); | 72 | ok( range->start == 1, "Start correct"); |
| 73 | ok( range->start_infinity == FALSE, "Not using negative infinity"); | 73 | ok( range->start_infinity == false, "Not using negative infinity"); |
| 74 | ok( range->end == 12, "End correct"); | 74 | ok( range->end == 12, "End correct"); |
| 75 | ok( range->end_infinity == FALSE, "Not using infinity"); | 75 | ok( range->end_infinity == false, "Not using infinity"); |
| 76 | free(range); | 76 | free(range); |
| 77 | 77 | ||
| 78 | range = parse_range_string("-7:23"); | 78 | range = parse_range_string("-7:23"); |
| 79 | ok( range != NULL, "'-7:23' is valid range"); | 79 | ok( range != NULL, "'-7:23' is valid range"); |
| 80 | ok( range->start == -7, "Start correct"); | 80 | ok( range->start == -7, "Start correct"); |
| 81 | ok( range->start_infinity == FALSE, "Not using negative infinity"); | 81 | ok( range->start_infinity == false, "Not using negative infinity"); |
| 82 | ok( range->end == 23, "End correct"); | 82 | ok( range->end == 23, "End correct"); |
| 83 | ok( range->end_infinity == FALSE, "Not using infinity"); | 83 | ok( range->end_infinity == false, "Not using infinity"); |
| 84 | free(range); | 84 | free(range); |
| 85 | 85 | ||
| 86 | range = parse_range_string(":5.75"); | 86 | range = parse_range_string(":5.75"); |
| 87 | ok( range != NULL, "':5.75' is valid range"); | 87 | ok( range != NULL, "':5.75' is valid range"); |
| 88 | ok( range->start == 0, "Start correct"); | 88 | ok( range->start == 0, "Start correct"); |
| 89 | ok( range->start_infinity == FALSE, "Not using negative infinity"); | 89 | ok( range->start_infinity == false, "Not using negative infinity"); |
| 90 | ok( range->end == 5.75, "End correct"); | 90 | ok( range->end == 5.75, "End correct"); |
| 91 | ok( range->end_infinity == FALSE, "Not using infinity"); | 91 | ok( range->end_infinity == false, "Not using infinity"); |
| 92 | free(range); | 92 | free(range); |
| 93 | 93 | ||
| 94 | range = parse_range_string("~:-95.99"); | 94 | range = parse_range_string("~:-95.99"); |
| 95 | ok( range != NULL, "~:-95.99' is valid range"); | 95 | ok( range != NULL, "~:-95.99' is valid range"); |
| 96 | ok( range->start_infinity == TRUE, "Using negative infinity"); | 96 | ok( range->start_infinity == true, "Using negative infinity"); |
| 97 | ok( range->end == -95.99, "End correct (with rounding errors)"); | 97 | ok( range->end == -95.99, "End correct (with rounding errors)"); |
| 98 | ok( range->end_infinity == FALSE, "Not using infinity"); | 98 | ok( range->end_infinity == false, "Not using infinity"); |
| 99 | free(range); | 99 | free(range); |
| 100 | 100 | ||
| 101 | range = parse_range_string("12345678901234567890:"); | 101 | range = parse_range_string("12345678901234567890:"); |
| 102 | temp = atof("12345678901234567890"); /* Can't just use this because number too large */ | 102 | temp = atof("12345678901234567890"); /* Can't just use this because number too large */ |
| 103 | ok( range != NULL, "'12345678901234567890:' is valid range"); | 103 | ok( range != NULL, "'12345678901234567890:' is valid range"); |
| 104 | ok( range->start == temp, "Start correct"); | 104 | ok( range->start == temp, "Start correct"); |
| 105 | ok( range->start_infinity == FALSE, "Not using negative infinity"); | 105 | ok( range->start_infinity == false, "Not using negative infinity"); |
| 106 | ok( range->end_infinity == TRUE, "Using infinity"); | 106 | ok( range->end_infinity == true, "Using infinity"); |
| 107 | /* Cannot do a "-1" on temp, as it appears to be same value */ | 107 | /* Cannot do a "-1" on temp, as it appears to be same value */ |
| 108 | ok( check_range(temp/1.1, range) == TRUE, "12345678901234567890/1.1 - alert"); | 108 | ok( check_range(temp/1.1, range) == true, "12345678901234567890/1.1 - alert"); |
| 109 | ok( check_range(temp, range) == FALSE, "12345678901234567890 - no alert"); | 109 | ok( check_range(temp, range) == false, "12345678901234567890 - no alert"); |
| 110 | ok( check_range(temp*2, range) == FALSE, "12345678901234567890*2 - no alert"); | 110 | ok( check_range(temp*2, range) == false, "12345678901234567890*2 - no alert"); |
| 111 | free(range); | 111 | free(range); |
| 112 | 112 | ||
| 113 | range = parse_range_string("~:0"); | 113 | range = parse_range_string("~:0"); |
| 114 | ok( range != NULL, "'~:0' is valid range"); | 114 | ok( range != NULL, "'~:0' is valid range"); |
| 115 | ok( range->start_infinity == TRUE, "Using negative infinity"); | 115 | ok( range->start_infinity == true, "Using negative infinity"); |
| 116 | ok( range->end == 0, "End correct"); | 116 | ok( range->end == 0, "End correct"); |
| 117 | ok( range->end_infinity == FALSE, "Not using infinity"); | 117 | ok( range->end_infinity == false, "Not using infinity"); |
| 118 | ok( range->alert_on == OUTSIDE, "Will alert on outside of this range"); | 118 | ok( range->alert_on == OUTSIDE, "Will alert on outside of this range"); |
| 119 | ok( check_range(0.5, range) == TRUE, "0.5 - alert"); | 119 | ok( check_range(0.5, range) == true, "0.5 - alert"); |
| 120 | ok( check_range(-10, range) == FALSE, "-10 - no alert"); | 120 | ok( check_range(-10, range) == false, "-10 - no alert"); |
| 121 | ok( check_range(0, range) == FALSE, "0 - no alert"); | 121 | ok( check_range(0, range) == false, "0 - no alert"); |
| 122 | free(range); | 122 | free(range); |
| 123 | 123 | ||
| 124 | range = parse_range_string("@0:657.8210567"); | 124 | range = parse_range_string("@0:657.8210567"); |
| 125 | ok( range != 0, "@0:657.8210567' is a valid range"); | 125 | ok( range != 0, "@0:657.8210567' is a valid range"); |
| 126 | ok( range->start == 0, "Start correct"); | 126 | ok( range->start == 0, "Start correct"); |
| 127 | ok( range->start_infinity == FALSE, "Not using negative infinity"); | 127 | ok( range->start_infinity == false, "Not using negative infinity"); |
| 128 | ok( range->end == 657.8210567, "End correct"); | 128 | ok( range->end == 657.8210567, "End correct"); |
| 129 | ok( range->end_infinity == FALSE, "Not using infinity"); | 129 | ok( range->end_infinity == false, "Not using infinity"); |
| 130 | ok( range->alert_on == INSIDE, "Will alert on inside of this range" ); | 130 | ok( range->alert_on == INSIDE, "Will alert on inside of this range" ); |
| 131 | ok( check_range(32.88, range) == TRUE, "32.88 - alert"); | 131 | ok( check_range(32.88, range) == true, "32.88 - alert"); |
| 132 | ok( check_range(-2, range) == FALSE, "-2 - no alert"); | 132 | ok( check_range(-2, range) == false, "-2 - no alert"); |
| 133 | ok( check_range(657.8210567, range) == TRUE, "657.8210567 - alert"); | 133 | ok( check_range(657.8210567, range) == true, "657.8210567 - alert"); |
| 134 | ok( check_range(0, range) == TRUE, "0 - alert"); | 134 | ok( check_range(0, range) == true, "0 - alert"); |
| 135 | free(range); | 135 | free(range); |
| 136 | 136 | ||
| 137 | range = parse_range_string("@1:1"); | 137 | range = parse_range_string("@1:1"); |
| 138 | ok( range != NULL, "'@1:1' is a valid range"); | 138 | ok( range != NULL, "'@1:1' is a valid range"); |
| 139 | ok( range->start == 1, "Start correct"); | 139 | ok( range->start == 1, "Start correct"); |
| 140 | ok( range->start_infinity == FALSE, "Not using negative infinity"); | 140 | ok( range->start_infinity == false, "Not using negative infinity"); |
| 141 | ok( range->end == 1, "End correct"); | 141 | ok( range->end == 1, "End correct"); |
| 142 | ok( range->end_infinity == FALSE, "Not using infinity"); | 142 | ok( range->end_infinity == false, "Not using infinity"); |
| 143 | ok( range->alert_on == INSIDE, "Will alert on inside of this range" ); | 143 | ok( range->alert_on == INSIDE, "Will alert on inside of this range" ); |
| 144 | ok( check_range(0.5, range) == FALSE, "0.5 - no alert"); | 144 | ok( check_range(0.5, range) == false, "0.5 - no alert"); |
| 145 | ok( check_range(1, range) == TRUE, "1 - alert"); | 145 | ok( check_range(1, range) == true, "1 - alert"); |
| 146 | ok( check_range(5.2, range) == FALSE, "5.2 - no alert"); | 146 | ok( check_range(5.2, range) == false, "5.2 - no alert"); |
| 147 | free(range); | 147 | free(range); |
| 148 | 148 | ||
| 149 | range = parse_range_string("1:1"); | 149 | range = parse_range_string("1:1"); |
| 150 | ok( range != NULL, "'1:1' is a valid range"); | 150 | ok( range != NULL, "'1:1' is a valid range"); |
| 151 | ok( range->start == 1, "Start correct"); | 151 | ok( range->start == 1, "Start correct"); |
| 152 | ok( range->start_infinity == FALSE, "Not using negative infinity"); | 152 | ok( range->start_infinity == false, "Not using negative infinity"); |
| 153 | ok( range->end == 1, "End correct"); | 153 | ok( range->end == 1, "End correct"); |
| 154 | ok( range->end_infinity == FALSE, "Not using infinity"); | 154 | ok( range->end_infinity == false, "Not using infinity"); |
| 155 | ok( check_range(0.5, range) == TRUE, "0.5 - alert"); | 155 | ok( check_range(0.5, range) == true, "0.5 - alert"); |
| 156 | ok( check_range(1, range) == FALSE, "1 - no alert"); | 156 | ok( check_range(1, range) == false, "1 - no alert"); |
| 157 | ok( check_range(5.2, range) == TRUE, "5.2 - alert"); | 157 | ok( check_range(5.2, range) == true, "5.2 - alert"); |
| 158 | free(range); | 158 | free(range); |
| 159 | 159 | ||
| 160 | range = parse_range_string("2:1"); | 160 | range = parse_range_string("2:1"); |
| @@ -377,13 +377,13 @@ main (int argc, char **argv) | |||
| 377 | 377 | ||
| 378 | /* | 378 | /* |
| 379 | temp_fp = fopen("var/statefile", "r"); | 379 | temp_fp = fopen("var/statefile", "r"); |
| 380 | if (temp_fp==NULL) | 380 | if (temp_fp==NULL) |
| 381 | printf("Error opening. errno=%d\n", errno); | 381 | printf("Error opening. errno=%d\n", errno); |
| 382 | printf("temp_fp=%s\n", temp_fp); | 382 | printf("temp_fp=%s\n", temp_fp); |
| 383 | ok( _np_state_read_file(temp_fp) == TRUE, "Can read state file" ); | 383 | ok( _np_state_read_file(temp_fp) == true, "Can read state file" ); |
| 384 | fclose(temp_fp); | 384 | fclose(temp_fp); |
| 385 | */ | 385 | */ |
| 386 | 386 | ||
| 387 | temp_state_key->_filename="var/statefile"; | 387 | temp_state_key->_filename="var/statefile"; |
| 388 | temp_state_data = np_state_read(); | 388 | temp_state_data = np_state_read(); |
| 389 | ok( this_monitoring_plugin->state->state_data!=NULL, "Got state data now" ) || diag("Are you running in right directory? Will get coredump next if not"); | 389 | ok( this_monitoring_plugin->state->state_data!=NULL, "Got state data now" ) || diag("Are you running in right directory? Will get coredump next if not"); |
| @@ -446,20 +446,20 @@ main (int argc, char **argv) | |||
| 446 | /* Check time is set to current_time */ | 446 | /* Check time is set to current_time */ |
| 447 | ok(system("cmp var/generated var/statefile > /dev/null")!=0, "Generated file should be different this time"); | 447 | ok(system("cmp var/generated var/statefile > /dev/null")!=0, "Generated file should be different this time"); |
| 448 | ok(this_monitoring_plugin->state->state_data->time-current_time<=1, "Has time generated from current time"); | 448 | ok(this_monitoring_plugin->state->state_data->time-current_time<=1, "Has time generated from current time"); |
| 449 | 449 | ||
| 450 | 450 | ||
| 451 | /* Don't know how to automatically test this. Need to be able to redefine die and catch the error */ | 451 | /* Don't know how to automatically test this. Need to be able to redefine die and catch the error */ |
| 452 | /* | 452 | /* |
| 453 | temp_state_key->_filename="/dev/do/not/expect/to/be/able/to/write"; | 453 | temp_state_key->_filename="/dev/do/not/expect/to/be/able/to/write"; |
| 454 | np_state_write_string(0, "Bad file"); | 454 | np_state_write_string(0, "Bad file"); |
| 455 | */ | 455 | */ |
| 456 | 456 | ||
| 457 | 457 | ||
| 458 | np_cleanup(); | 458 | np_cleanup(); |
| 459 | 459 | ||
| 460 | ok(this_monitoring_plugin==NULL, "Free'd this_monitoring_plugin"); | 460 | ok(this_monitoring_plugin==NULL, "Free'd this_monitoring_plugin"); |
| 461 | 461 | ||
| 462 | ok(mp_suid() == FALSE, "Test aren't suid"); | 462 | ok(mp_suid() == false, "Test aren't suid"); |
| 463 | 463 | ||
| 464 | /* base states with random case */ | 464 | /* base states with random case */ |
| 465 | char *states[] = { | 465 | char *states[] = { |
| @@ -508,4 +508,3 @@ main (int argc, char **argv) | |||
| 508 | 508 | ||
| 509 | return exit_status(); | 509 | return exit_status(); |
| 510 | } | 510 | } |
| 511 | |||
diff --git a/lib/utils_base.c b/lib/utils_base.c index c458cf61..f8592f41 100644 --- a/lib/utils_base.c +++ b/lib/utils_base.c | |||
| @@ -6,21 +6,21 @@ | |||
| 6 | * Copyright (c) 2006 Monitoring Plugins Development Team | 6 | * Copyright (c) 2006 Monitoring Plugins Development Team |
| 7 | * | 7 | * |
| 8 | * Library of useful functions for plugins | 8 | * Library of useful functions for plugins |
| 9 | * | 9 | * |
| 10 | * | 10 | * |
| 11 | * This program is free software: you can redistribute it and/or modify | 11 | * This program is free software: you can redistribute it and/or modify |
| 12 | * it under the terms of the GNU General Public License as published by | 12 | * it under the terms of the GNU General Public License as published by |
| 13 | * the Free Software Foundation, either version 3 of the License, or | 13 | * the Free Software Foundation, either version 3 of the License, or |
| 14 | * (at your option) any later version. | 14 | * (at your option) any later version. |
| 15 | * | 15 | * |
| 16 | * This program is distributed in the hope that it will be useful, | 16 | * This program is distributed in the hope that it will be useful, |
| 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 19 | * GNU General Public License for more details. | 19 | * GNU General Public License for more details. |
| 20 | * | 20 | * |
| 21 | * You should have received a copy of the GNU General Public License | 21 | * You should have received a copy of the GNU General Public License |
| 22 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 22 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 23 | * | 23 | * |
| 24 | * | 24 | * |
| 25 | *****************************************************************************/ | 25 | *****************************************************************************/ |
| 26 | 26 | ||
| @@ -37,10 +37,10 @@ | |||
| 37 | 37 | ||
| 38 | monitoring_plugin *this_monitoring_plugin=NULL; | 38 | monitoring_plugin *this_monitoring_plugin=NULL; |
| 39 | 39 | ||
| 40 | unsigned int timeout_state = STATE_CRITICAL; | 40 | int timeout_state = STATE_CRITICAL; |
| 41 | unsigned int timeout_interval = DEFAULT_SOCKET_TIMEOUT; | 41 | unsigned int timeout_interval = DEFAULT_SOCKET_TIMEOUT; |
| 42 | 42 | ||
| 43 | int _np_state_read_file(FILE *); | 43 | bool _np_state_read_file(FILE *); |
| 44 | 44 | ||
| 45 | void np_init( char *plugin_name, int argc, char **argv ) { | 45 | void np_init( char *plugin_name, int argc, char **argv ) { |
| 46 | if (this_monitoring_plugin==NULL) { | 46 | if (this_monitoring_plugin==NULL) { |
| @@ -105,12 +105,12 @@ die (int result, const char *fmt, ...) | |||
| 105 | 105 | ||
| 106 | void set_range_start (range *this, double value) { | 106 | void set_range_start (range *this, double value) { |
| 107 | this->start = value; | 107 | this->start = value; |
| 108 | this->start_infinity = FALSE; | 108 | this->start_infinity = false; |
| 109 | } | 109 | } |
| 110 | 110 | ||
| 111 | void set_range_end (range *this, double value) { | 111 | void set_range_end (range *this, double value) { |
| 112 | this->end = value; | 112 | this->end = value; |
| 113 | this->end_infinity = FALSE; | 113 | this->end_infinity = false; |
| 114 | } | 114 | } |
| 115 | 115 | ||
| 116 | range | 116 | range |
| @@ -124,9 +124,9 @@ range | |||
| 124 | 124 | ||
| 125 | /* Set defaults */ | 125 | /* Set defaults */ |
| 126 | temp_range->start = 0; | 126 | temp_range->start = 0; |
| 127 | temp_range->start_infinity = FALSE; | 127 | temp_range->start_infinity = false; |
| 128 | temp_range->end = 0; | 128 | temp_range->end = 0; |
| 129 | temp_range->end_infinity = TRUE; | 129 | temp_range->end_infinity = true; |
| 130 | temp_range->alert_on = OUTSIDE; | 130 | temp_range->alert_on = OUTSIDE; |
| 131 | temp_range->text = strdup(str); | 131 | temp_range->text = strdup(str); |
| 132 | 132 | ||
| @@ -138,7 +138,7 @@ range | |||
| 138 | end_str = index(str, ':'); | 138 | end_str = index(str, ':'); |
| 139 | if (end_str != NULL) { | 139 | if (end_str != NULL) { |
| 140 | if (str[0] == '~') { | 140 | if (str[0] == '~') { |
| 141 | temp_range->start_infinity = TRUE; | 141 | temp_range->start_infinity = true; |
| 142 | } else { | 142 | } else { |
| 143 | start = strtod(str, NULL); /* Will stop at the ':' */ | 143 | start = strtod(str, NULL); /* Will stop at the ':' */ |
| 144 | set_range_start(temp_range, start); | 144 | set_range_start(temp_range, start); |
| @@ -152,8 +152,8 @@ range | |||
| 152 | set_range_end(temp_range, end); | 152 | set_range_end(temp_range, end); |
| 153 | } | 153 | } |
| 154 | 154 | ||
| 155 | if (temp_range->start_infinity == TRUE || | 155 | if (temp_range->start_infinity == true || |
| 156 | temp_range->end_infinity == TRUE || | 156 | temp_range->end_infinity == true || |
| 157 | temp_range->start <= temp_range->end) { | 157 | temp_range->start <= temp_range->end) { |
| 158 | return temp_range; | 158 | return temp_range; |
| 159 | } | 159 | } |
| @@ -223,31 +223,30 @@ void print_thresholds(const char *threshold_name, thresholds *my_threshold) { | |||
| 223 | printf("\n"); | 223 | printf("\n"); |
| 224 | } | 224 | } |
| 225 | 225 | ||
| 226 | /* Returns TRUE if alert should be raised based on the range */ | 226 | /* Returns true if alert should be raised based on the range */ |
| 227 | int | 227 | bool check_range(double value, range *my_range) |
| 228 | check_range(double value, range *my_range) | ||
| 229 | { | 228 | { |
| 230 | int no = FALSE; | 229 | bool no = false; |
| 231 | int yes = TRUE; | 230 | bool yes = true; |
| 232 | 231 | ||
| 233 | if (my_range->alert_on == INSIDE) { | 232 | if (my_range->alert_on == INSIDE) { |
| 234 | no = TRUE; | 233 | no = true; |
| 235 | yes = FALSE; | 234 | yes = false; |
| 236 | } | 235 | } |
| 237 | 236 | ||
| 238 | if (my_range->end_infinity == FALSE && my_range->start_infinity == FALSE) { | 237 | if (my_range->end_infinity == false && my_range->start_infinity == false) { |
| 239 | if ((my_range->start <= value) && (value <= my_range->end)) { | 238 | if ((my_range->start <= value) && (value <= my_range->end)) { |
| 240 | return no; | 239 | return no; |
| 241 | } else { | 240 | } else { |
| 242 | return yes; | 241 | return yes; |
| 243 | } | 242 | } |
| 244 | } else if (my_range->start_infinity == FALSE && my_range->end_infinity == TRUE) { | 243 | } else if (my_range->start_infinity == false && my_range->end_infinity == true) { |
| 245 | if (my_range->start <= value) { | 244 | if (my_range->start <= value) { |
| 246 | return no; | 245 | return no; |
| 247 | } else { | 246 | } else { |
| 248 | return yes; | 247 | return yes; |
| 249 | } | 248 | } |
| 250 | } else if (my_range->start_infinity == TRUE && my_range->end_infinity == FALSE) { | 249 | } else if (my_range->start_infinity == true && my_range->end_infinity == false) { |
| 251 | if (value <= my_range->end) { | 250 | if (value <= my_range->end) { |
| 252 | return no; | 251 | return no; |
| 253 | } else { | 252 | } else { |
| @@ -263,12 +262,12 @@ int | |||
| 263 | get_status(double value, thresholds *my_thresholds) | 262 | get_status(double value, thresholds *my_thresholds) |
| 264 | { | 263 | { |
| 265 | if (my_thresholds->critical != NULL) { | 264 | if (my_thresholds->critical != NULL) { |
| 266 | if (check_range(value, my_thresholds->critical) == TRUE) { | 265 | if (check_range(value, my_thresholds->critical) == true) { |
| 267 | return STATE_CRITICAL; | 266 | return STATE_CRITICAL; |
| 268 | } | 267 | } |
| 269 | } | 268 | } |
| 270 | if (my_thresholds->warning != NULL) { | 269 | if (my_thresholds->warning != NULL) { |
| 271 | if (check_range(value, my_thresholds->warning) == TRUE) { | 270 | if (check_range(value, my_thresholds->warning) == true) { |
| 272 | return STATE_WARNING; | 271 | return STATE_WARNING; |
| 273 | } | 272 | } |
| 274 | } | 273 | } |
| @@ -332,7 +331,7 @@ char *np_extract_value(const char *varlist, const char *name, char sep) { | |||
| 332 | /* strip leading spaces */ | 331 | /* strip leading spaces */ |
| 333 | for (; isspace(varlist[0]); varlist++); | 332 | for (; isspace(varlist[0]); varlist++); |
| 334 | 333 | ||
| 335 | if (tmp = index(varlist, sep)) { | 334 | if ((tmp = index(varlist, sep))) { |
| 336 | /* Value is delimited by a comma */ | 335 | /* Value is delimited by a comma */ |
| 337 | if (tmp-varlist == 0) continue; | 336 | if (tmp-varlist == 0) continue; |
| 338 | value = (char *)calloc(1, tmp-varlist+1); | 337 | value = (char *)calloc(1, tmp-varlist+1); |
| @@ -348,7 +347,7 @@ char *np_extract_value(const char *varlist, const char *name, char sep) { | |||
| 348 | break; | 347 | break; |
| 349 | } | 348 | } |
| 350 | } | 349 | } |
| 351 | if (tmp = index(varlist, sep)) { | 350 | if ((tmp = index(varlist, sep))) { |
| 352 | /* More keys, keep going... */ | 351 | /* More keys, keep going... */ |
| 353 | varlist = tmp + 1; | 352 | varlist = tmp + 1; |
| 354 | } else { | 353 | } else { |
| @@ -402,26 +401,45 @@ int mp_translate_state (char *state_text) { | |||
| 402 | * parse of argv, so that uniqueness in parameters are reflected there. | 401 | * parse of argv, so that uniqueness in parameters are reflected there. |
| 403 | */ | 402 | */ |
| 404 | char *_np_state_generate_key() { | 403 | char *_np_state_generate_key() { |
| 405 | struct sha256_ctx ctx; | ||
| 406 | int i; | 404 | int i; |
| 407 | char **argv = this_monitoring_plugin->argv; | 405 | char **argv = this_monitoring_plugin->argv; |
| 408 | unsigned char result[20]; | ||
| 409 | char keyname[41]; | 406 | char keyname[41]; |
| 410 | char *p=NULL; | 407 | char *p=NULL; |
| 411 | 408 | ||
| 412 | sha256_init_ctx(&ctx); | 409 | unsigned char result[256]; |
| 413 | 410 | ||
| 411 | #ifdef USE_OPENSSL | ||
| 412 | /* | ||
| 413 | * This code path is chosen if openssl is available (which should be the most common | ||
| 414 | * scenario). Alternatively, the gnulib implementation/ | ||
| 415 | * | ||
| 416 | */ | ||
| 417 | EVP_MD_CTX *ctx = EVP_MD_CTX_new(); | ||
| 418 | |||
| 419 | EVP_DigestInit(ctx, EVP_sha256()); | ||
| 420 | |||
| 421 | for(i=0; i<this_monitoring_plugin->argc; i++) { | ||
| 422 | EVP_DigestUpdate(ctx, argv[i], strlen(argv[i])); | ||
| 423 | } | ||
| 424 | |||
| 425 | EVP_DigestFinal(ctx, result, NULL); | ||
| 426 | #else | ||
| 427 | |||
| 428 | struct sha256_ctx ctx; | ||
| 429 | |||
| 414 | for(i=0; i<this_monitoring_plugin->argc; i++) { | 430 | for(i=0; i<this_monitoring_plugin->argc; i++) { |
| 415 | sha256_process_bytes(argv[i], strlen(argv[i]), &ctx); | 431 | sha256_process_bytes(argv[i], strlen(argv[i]), &ctx); |
| 416 | } | 432 | } |
| 417 | 433 | ||
| 418 | sha256_finish_ctx(&ctx, &result); | 434 | sha256_finish_ctx(&ctx, result); |
| 419 | 435 | #endif // FOUNDOPENSSL | |
| 436 | |||
| 420 | for (i=0; i<20; ++i) { | 437 | for (i=0; i<20; ++i) { |
| 421 | sprintf(&keyname[2*i], "%02x", result[i]); | 438 | sprintf(&keyname[2*i], "%02x", result[i]); |
| 422 | } | 439 | } |
| 440 | |||
| 423 | keyname[40]='\0'; | 441 | keyname[40]='\0'; |
| 424 | 442 | ||
| 425 | p = strdup(keyname); | 443 | p = strdup(keyname); |
| 426 | if(p==NULL) { | 444 | if(p==NULL) { |
| 427 | die(STATE_UNKNOWN, _("Cannot execute strdup: %s"), strerror(errno)); | 445 | die(STATE_UNKNOWN, _("Cannot execute strdup: %s"), strerror(errno)); |
| @@ -446,7 +464,7 @@ char* _np_state_calculate_location_prefix(){ | |||
| 446 | 464 | ||
| 447 | /* Do not allow passing MP_STATE_PATH in setuid plugins | 465 | /* Do not allow passing MP_STATE_PATH in setuid plugins |
| 448 | * for security reasons */ | 466 | * for security reasons */ |
| 449 | if (mp_suid() == FALSE) { | 467 | if (!mp_suid()) { |
| 450 | env_dir = getenv("MP_STATE_PATH"); | 468 | env_dir = getenv("MP_STATE_PATH"); |
| 451 | if(env_dir && env_dir[0] != '\0') | 469 | if(env_dir && env_dir[0] != '\0') |
| 452 | return env_dir; | 470 | return env_dir; |
| @@ -522,7 +540,7 @@ void np_enable_state(char *keyname, int expected_data_version) { | |||
| 522 | state_data *np_state_read() { | 540 | state_data *np_state_read() { |
| 523 | state_data *this_state_data=NULL; | 541 | state_data *this_state_data=NULL; |
| 524 | FILE *statefile; | 542 | FILE *statefile; |
| 525 | int rc = FALSE; | 543 | bool rc = false; |
| 526 | 544 | ||
| 527 | if(this_monitoring_plugin==NULL) | 545 | if(this_monitoring_plugin==NULL) |
| 528 | die(STATE_UNKNOWN, _("This requires np_init to be called")); | 546 | die(STATE_UNKNOWN, _("This requires np_init to be called")); |
| @@ -544,7 +562,7 @@ state_data *np_state_read() { | |||
| 544 | fclose(statefile); | 562 | fclose(statefile); |
| 545 | } | 563 | } |
| 546 | 564 | ||
| 547 | if(rc==FALSE) { | 565 | if(!rc) { |
| 548 | _cleanup_state_data(); | 566 | _cleanup_state_data(); |
| 549 | } | 567 | } |
| 550 | 568 | ||
| @@ -554,8 +572,8 @@ state_data *np_state_read() { | |||
| 554 | /* | 572 | /* |
| 555 | * Read the state file | 573 | * Read the state file |
| 556 | */ | 574 | */ |
| 557 | int _np_state_read_file(FILE *f) { | 575 | bool _np_state_read_file(FILE *f) { |
| 558 | int status=FALSE; | 576 | bool status = false; |
| 559 | size_t pos; | 577 | size_t pos; |
| 560 | char *line; | 578 | char *line; |
| 561 | int i; | 579 | int i; |
| @@ -609,7 +627,7 @@ int _np_state_read_file(FILE *f) { | |||
| 609 | if(this_monitoring_plugin->state->state_data->data==NULL) | 627 | if(this_monitoring_plugin->state->state_data->data==NULL) |
| 610 | die(STATE_UNKNOWN, _("Cannot execute strdup: %s"), strerror(errno)); | 628 | die(STATE_UNKNOWN, _("Cannot execute strdup: %s"), strerror(errno)); |
| 611 | expected=STATE_DATA_END; | 629 | expected=STATE_DATA_END; |
| 612 | status=TRUE; | 630 | status=true; |
| 613 | break; | 631 | break; |
| 614 | case STATE_DATA_END: | 632 | case STATE_DATA_END: |
| 615 | ; | 633 | ; |
| @@ -621,10 +639,10 @@ int _np_state_read_file(FILE *f) { | |||
| 621 | } | 639 | } |
| 622 | 640 | ||
| 623 | /* | 641 | /* |
| 624 | * If time=NULL, use current time. Create state file, with state format | 642 | * If time=NULL, use current time. Create state file, with state format |
| 625 | * version, default text. Writes version, time, and data. Avoid locking | 643 | * version, default text. Writes version, time, and data. Avoid locking |
| 626 | * problems - use mv to write and then swap. Possible loss of state data if | 644 | * problems - use mv to write and then swap. Possible loss of state data if |
| 627 | * two things writing to same key at same time. | 645 | * two things writing to same key at same time. |
| 628 | * Will die with UNKNOWN if errors | 646 | * Will die with UNKNOWN if errors |
| 629 | */ | 647 | */ |
| 630 | void np_state_write_string(time_t data_time, char *data_string) { | 648 | void np_state_write_string(time_t data_time, char *data_string) { |
| @@ -639,7 +657,7 @@ void np_state_write_string(time_t data_time, char *data_string) { | |||
| 639 | time(¤t_time); | 657 | time(¤t_time); |
| 640 | else | 658 | else |
| 641 | current_time=data_time; | 659 | current_time=data_time; |
| 642 | 660 | ||
| 643 | /* If file doesn't currently exist, create directories */ | 661 | /* If file doesn't currently exist, create directories */ |
| 644 | if(access(this_monitoring_plugin->state->_filename,F_OK)!=0) { | 662 | if(access(this_monitoring_plugin->state->_filename,F_OK)!=0) { |
| 645 | result = asprintf(&directories, "%s", this_monitoring_plugin->state->_filename); | 663 | result = asprintf(&directories, "%s", this_monitoring_plugin->state->_filename); |
| @@ -678,15 +696,15 @@ void np_state_write_string(time_t data_time, char *data_string) { | |||
| 678 | np_free(temp_file); | 696 | np_free(temp_file); |
| 679 | die(STATE_UNKNOWN, _("Unable to open temporary state file")); | 697 | die(STATE_UNKNOWN, _("Unable to open temporary state file")); |
| 680 | } | 698 | } |
| 681 | 699 | ||
| 682 | fprintf(fp,"# NP State file\n"); | 700 | fprintf(fp,"# NP State file\n"); |
| 683 | fprintf(fp,"%d\n",NP_STATE_FORMAT_VERSION); | 701 | fprintf(fp,"%d\n",NP_STATE_FORMAT_VERSION); |
| 684 | fprintf(fp,"%d\n",this_monitoring_plugin->state->data_version); | 702 | fprintf(fp,"%d\n",this_monitoring_plugin->state->data_version); |
| 685 | fprintf(fp,"%lu\n",current_time); | 703 | fprintf(fp,"%lu\n",current_time); |
| 686 | fprintf(fp,"%s\n",data_string); | 704 | fprintf(fp,"%s\n",data_string); |
| 687 | 705 | ||
| 688 | fchmod(fd, S_IRUSR | S_IWUSR | S_IRGRP); | 706 | fchmod(fd, S_IRUSR | S_IWUSR | S_IRGRP); |
| 689 | 707 | ||
| 690 | fflush(fp); | 708 | fflush(fp); |
| 691 | 709 | ||
| 692 | result=fclose(fp); | 710 | result=fclose(fp); |
diff --git a/lib/utils_base.h b/lib/utils_base.h index 59065504..9d4dffed 100644 --- a/lib/utils_base.h +++ b/lib/utils_base.h | |||
| @@ -2,9 +2,11 @@ | |||
| 2 | #define _UTILS_BASE_ | 2 | #define _UTILS_BASE_ |
| 3 | /* Header file for Monitoring Plugins utils_base.c */ | 3 | /* Header file for Monitoring Plugins utils_base.c */ |
| 4 | 4 | ||
| 5 | #include "sha256.h" | 5 | #ifndef USE_OPENSSL |
| 6 | # include "sha256.h" | ||
| 7 | #endif | ||
| 6 | 8 | ||
| 7 | /* This file holds header information for thresholds - use this in preference to | 9 | /* This file holds header information for thresholds - use this in preference to |
| 8 | individual plugin logic */ | 10 | individual plugin logic */ |
| 9 | 11 | ||
| 10 | /* This has not been merged with utils.h because of problems with | 12 | /* This has not been merged with utils.h because of problems with |
| @@ -19,7 +21,7 @@ | |||
| 19 | 21 | ||
| 20 | typedef struct range_struct { | 22 | typedef struct range_struct { |
| 21 | double start; | 23 | double start; |
| 22 | int start_infinity; /* FALSE (default) or TRUE */ | 24 | bool start_infinity; |
| 23 | double end; | 25 | double end; |
| 24 | int end_infinity; | 26 | int end_infinity; |
| 25 | int alert_on; /* OUTSIDE (default) or INSIDE */ | 27 | int alert_on; /* OUTSIDE (default) or INSIDE */ |
| @@ -59,11 +61,11 @@ range *parse_range_string (char *); | |||
| 59 | int _set_thresholds(thresholds **, char *, char *); | 61 | int _set_thresholds(thresholds **, char *, char *); |
| 60 | void set_thresholds(thresholds **, char *, char *); | 62 | void set_thresholds(thresholds **, char *, char *); |
| 61 | void print_thresholds(const char *, thresholds *); | 63 | void print_thresholds(const char *, thresholds *); |
| 62 | int check_range(double, range *); | 64 | bool check_range(double, range *); |
| 63 | int get_status(double, thresholds *); | 65 | int get_status(double, thresholds *); |
| 64 | 66 | ||
| 65 | /* Handle timeouts */ | 67 | /* Handle timeouts */ |
| 66 | extern unsigned int timeout_state; | 68 | extern int timeout_state; |
| 67 | extern unsigned int timeout_interval; | 69 | extern unsigned int timeout_interval; |
| 68 | 70 | ||
| 69 | /* All possible characters in a threshold range */ | 71 | /* All possible characters in a threshold range */ |
| @@ -77,7 +79,7 @@ void die (int, const char *, ...) __attribute__((noreturn,format(printf, 2, 3))) | |||
| 77 | #define NP_RANGE_UNPARSEABLE 1 | 79 | #define NP_RANGE_UNPARSEABLE 1 |
| 78 | #define NP_WARN_WITHIN_CRIT 2 | 80 | #define NP_WARN_WITHIN_CRIT 2 |
| 79 | 81 | ||
| 80 | /* a simple check to see if we're running as root. | 82 | /* a simple check to see if we're running as root. |
| 81 | * returns zero on failure, nonzero on success */ | 83 | * returns zero on failure, nonzero on success */ |
| 82 | int np_check_if_root(void); | 84 | int np_check_if_root(void); |
| 83 | 85 | ||
diff --git a/lib/utils_cmd.c b/lib/utils_cmd.c index 34fb3909..7957ec14 100644 --- a/lib/utils_cmd.c +++ b/lib/utils_cmd.c | |||
| @@ -18,18 +18,18 @@ | |||
| 18 | * Care has been taken to make sure the functions are async-safe. The one | 18 | * Care has been taken to make sure the functions are async-safe. The one |
| 19 | * function which isn't is cmd_init() which it doesn't make sense to | 19 | * function which isn't is cmd_init() which it doesn't make sense to |
| 20 | * call twice anyway, so the api as a whole should be considered async-safe. | 20 | * call twice anyway, so the api as a whole should be considered async-safe. |
| 21 | * | 21 | * |
| 22 | * | 22 | * |
| 23 | * This program is free software: you can redistribute it and/or modify | 23 | * This program is free software: you can redistribute it and/or modify |
| 24 | * it under the terms of the GNU General Public License as published by | 24 | * it under the terms of the GNU General Public License as published by |
| 25 | * the Free Software Foundation, either version 3 of the License, or | 25 | * the Free Software Foundation, either version 3 of the License, or |
| 26 | * (at your option) any later version. | 26 | * (at your option) any later version. |
| 27 | * | 27 | * |
| 28 | * This program is distributed in the hope that it will be useful, | 28 | * This program is distributed in the hope that it will be useful, |
| 29 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 29 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 30 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 30 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 31 | * GNU General Public License for more details. | 31 | * GNU General Public License for more details. |
| 32 | * | 32 | * |
| 33 | * You should have received a copy of the GNU General Public License | 33 | * You should have received a copy of the GNU General Public License |
| 34 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 34 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 35 | * | 35 | * |
| @@ -42,7 +42,20 @@ | |||
| 42 | #include "common.h" | 42 | #include "common.h" |
| 43 | #include "utils.h" | 43 | #include "utils.h" |
| 44 | #include "utils_cmd.h" | 44 | #include "utils_cmd.h" |
| 45 | /* This variable must be global, since there's no way the caller | ||
| 46 | * can forcibly slay a dead or ungainly running program otherwise. | ||
| 47 | * Multithreading apps and plugins can initialize it (via CMD_INIT) | ||
| 48 | * in an async safe manner PRIOR to calling cmd_run() or cmd_run_array() | ||
| 49 | * for the first time. | ||
| 50 | * | ||
| 51 | * The check for initialized values is atomic and can | ||
| 52 | * occur in any number of threads simultaneously. */ | ||
| 53 | static pid_t *_cmd_pids = NULL; | ||
| 54 | |||
| 45 | #include "utils_base.h" | 55 | #include "utils_base.h" |
| 56 | |||
| 57 | #include "./maxfd.h" | ||
| 58 | |||
| 46 | #include <fcntl.h> | 59 | #include <fcntl.h> |
| 47 | 60 | ||
| 48 | #ifdef HAVE_SYS_WAIT_H | 61 | #ifdef HAVE_SYS_WAIT_H |
| @@ -86,13 +99,7 @@ extern void die (int, const char *, ...) | |||
| 86 | void | 99 | void |
| 87 | cmd_init (void) | 100 | cmd_init (void) |
| 88 | { | 101 | { |
| 89 | #ifndef maxfd | 102 | long maxfd = mp_open_max(); |
| 90 | if (!maxfd && (maxfd = sysconf (_SC_OPEN_MAX)) < 0) { | ||
| 91 | /* possibly log or emit a warning here, since there's no | ||
| 92 | * guarantee that our guess at maxfd will be adequate */ | ||
| 93 | maxfd = DEFAULT_MAXFD; | ||
| 94 | } | ||
| 95 | #endif | ||
| 96 | 103 | ||
| 97 | /* if maxfd is unnaturally high, we force it to a lower value | 104 | /* if maxfd is unnaturally high, we force it to a lower value |
| 98 | * ( e.g. on SunOS, when ulimit is set to unlimited: 2147483647 this would cause | 105 | * ( e.g. on SunOS, when ulimit is set to unlimited: 2147483647 this would cause |
| @@ -148,6 +155,7 @@ _cmd_open (char *const *argv, int *pfd, int *pfderr) | |||
| 148 | /* close all descriptors in _cmd_pids[] | 155 | /* close all descriptors in _cmd_pids[] |
| 149 | * This is executed in a separate address space (pure child), | 156 | * This is executed in a separate address space (pure child), |
| 150 | * so we don't have to worry about async safety */ | 157 | * so we don't have to worry about async safety */ |
| 158 | long maxfd = mp_open_max(); | ||
| 151 | for (i = 0; i < maxfd; i++) | 159 | for (i = 0; i < maxfd; i++) |
| 152 | if (_cmd_pids[i] > 0) | 160 | if (_cmd_pids[i] > 0) |
| 153 | close (i); | 161 | close (i); |
| @@ -174,6 +182,7 @@ _cmd_close (int fd) | |||
| 174 | pid_t pid; | 182 | pid_t pid; |
| 175 | 183 | ||
| 176 | /* make sure the provided fd was opened */ | 184 | /* make sure the provided fd was opened */ |
| 185 | long maxfd = mp_open_max(); | ||
| 177 | if (fd < 0 || fd > maxfd || !_cmd_pids || (pid = _cmd_pids[fd]) == 0) | 186 | if (fd < 0 || fd > maxfd || !_cmd_pids || (pid = _cmd_pids[fd]) == 0) |
| 178 | return -1; | 187 | return -1; |
| 179 | 188 | ||
| @@ -265,7 +274,6 @@ _cmd_fetch_output (int fd, output * op, int flags) | |||
| 265 | int | 274 | int |
| 266 | cmd_run (const char *cmdstring, output * out, output * err, int flags) | 275 | cmd_run (const char *cmdstring, output * out, output * err, int flags) |
| 267 | { | 276 | { |
| 268 | int fd, pfd_out[2], pfd_err[2]; | ||
| 269 | int i = 0, argc; | 277 | int i = 0, argc; |
| 270 | size_t cmdlen; | 278 | size_t cmdlen; |
| 271 | char **argv = NULL; | 279 | char **argv = NULL; |
| @@ -369,10 +377,10 @@ cmd_file_read ( char *filename, output *out, int flags) | |||
| 369 | if ((fd = open(filename, O_RDONLY)) == -1) { | 377 | if ((fd = open(filename, O_RDONLY)) == -1) { |
| 370 | die( STATE_UNKNOWN, _("Error opening %s: %s"), filename, strerror(errno) ); | 378 | die( STATE_UNKNOWN, _("Error opening %s: %s"), filename, strerror(errno) ); |
| 371 | } | 379 | } |
| 372 | 380 | ||
| 373 | if(out) | 381 | if(out) |
| 374 | out->lines = _cmd_fetch_output (fd, out, flags); | 382 | out->lines = _cmd_fetch_output (fd, out, flags); |
| 375 | 383 | ||
| 376 | if (close(fd) == -1) | 384 | if (close(fd) == -1) |
| 377 | die( STATE_UNKNOWN, _("Error closing %s: %s"), filename, strerror(errno) ); | 385 | die( STATE_UNKNOWN, _("Error closing %s: %s"), filename, strerror(errno) ); |
| 378 | 386 | ||
| @@ -382,12 +390,12 @@ cmd_file_read ( char *filename, output *out, int flags) | |||
| 382 | void | 390 | void |
| 383 | timeout_alarm_handler (int signo) | 391 | timeout_alarm_handler (int signo) |
| 384 | { | 392 | { |
| 385 | size_t i; | ||
| 386 | if (signo == SIGALRM) { | 393 | if (signo == SIGALRM) { |
| 387 | printf (_("%s - Plugin timed out after %d seconds\n"), | 394 | printf (_("%s - Plugin timed out after %d seconds\n"), |
| 388 | state_text(timeout_state), timeout_interval); | 395 | state_text(timeout_state), timeout_interval); |
| 389 | 396 | ||
| 390 | if(_cmd_pids) for(i = 0; i < maxfd; i++) { | 397 | long maxfd = mp_open_max(); |
| 398 | if(_cmd_pids) for(long int i = 0; i < maxfd; i++) { | ||
| 391 | if(_cmd_pids[i] != 0) kill(_cmd_pids[i], SIGKILL); | 399 | if(_cmd_pids[i] != 0) kill(_cmd_pids[i], SIGKILL); |
| 392 | } | 400 | } |
| 393 | 401 | ||
diff --git a/lib/utils_cmd.h b/lib/utils_cmd.h index 6f3aeb81..061f5d4f 100644 --- a/lib/utils_cmd.h +++ b/lib/utils_cmd.h | |||
| @@ -1,10 +1,10 @@ | |||
| 1 | #ifndef _UTILS_CMD_ | 1 | #ifndef _UTILS_CMD_ |
| 2 | #define _UTILS_CMD_ | 2 | #define _UTILS_CMD_ |
| 3 | 3 | ||
| 4 | /* | 4 | /* |
| 5 | * Header file for Monitoring Plugins utils_cmd.c | 5 | * Header file for Monitoring Plugins utils_cmd.c |
| 6 | * | 6 | * |
| 7 | * | 7 | * |
| 8 | */ | 8 | */ |
| 9 | 9 | ||
| 10 | /** types **/ | 10 | /** types **/ |
| @@ -32,17 +32,8 @@ void cmd_init (void); | |||
| 32 | #define CMD_NO_ARRAYS 0x01 /* don't populate arrays at all */ | 32 | #define CMD_NO_ARRAYS 0x01 /* don't populate arrays at all */ |
| 33 | #define CMD_NO_ASSOC 0x02 /* output.line won't point to buf */ | 33 | #define CMD_NO_ASSOC 0x02 /* output.line won't point to buf */ |
| 34 | 34 | ||
| 35 | /* This variable must be global, since there's no way the caller | ||
| 36 | * can forcibly slay a dead or ungainly running program otherwise. | ||
| 37 | * Multithreading apps and plugins can initialize it (via CMD_INIT) | ||
| 38 | * in an async safe manner PRIOR to calling cmd_run() or cmd_run_array() | ||
| 39 | * for the first time. | ||
| 40 | * | ||
| 41 | * The check for initialized values is atomic and can | ||
| 42 | * occur in any number of threads simultaneously. */ | ||
| 43 | static pid_t *_cmd_pids = NULL; | ||
| 44 | 35 | ||
| 45 | RETSIGTYPE timeout_alarm_handler (int); | 36 | void timeout_alarm_handler (int); |
| 46 | 37 | ||
| 47 | 38 | ||
| 48 | #endif /* _UTILS_CMD_ */ | 39 | #endif /* _UTILS_CMD_ */ |
diff --git a/lib/utils_disk.c b/lib/utils_disk.c index 582d3ea1..483be06d 100644 --- a/lib/utils_disk.c +++ b/lib/utils_disk.c | |||
| @@ -1,34 +1,35 @@ | |||
| 1 | /***************************************************************************** | 1 | /***************************************************************************** |
| 2 | * | 2 | * |
| 3 | * Library for check_disk | 3 | * Library for check_disk |
| 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 utilities for check_disk. These are tested by libtap | 10 | * This file contains utilities for check_disk. These are tested by libtap |
| 11 | * | 11 | * |
| 12 | * | 12 | * |
| 13 | * This program is free software: you can redistribute it and/or modify | 13 | * This program is free software: you can redistribute it and/or modify |
| 14 | * it under the terms of the GNU General Public License as published by | 14 | * it under the terms of the GNU General Public License as published by |
| 15 | * the Free Software Foundation, either version 3 of the License, or | 15 | * the Free Software Foundation, either version 3 of the License, or |
| 16 | * (at your option) any later version. | 16 | * (at your option) any later version. |
| 17 | * | 17 | * |
| 18 | * This program is distributed in the hope that it will be useful, | 18 | * This program is distributed in the hope that it will be useful, |
| 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 21 | * GNU General Public License for more details. | 21 | * GNU General Public License for more details. |
| 22 | * | 22 | * |
| 23 | * You should have received a copy of the GNU General Public License | 23 | * You should have received a copy of the GNU General Public License |
| 24 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 24 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 25 | * | 25 | * |
| 26 | * | 26 | * |
| 27 | *****************************************************************************/ | 27 | *****************************************************************************/ |
| 28 | 28 | ||
| 29 | #include "common.h" | 29 | #include "common.h" |
| 30 | #include "utils_disk.h" | 30 | #include "utils_disk.h" |
| 31 | #include "gl/fsusage.h" | 31 | #include "gl/fsusage.h" |
| 32 | #include <string.h> | ||
| 32 | 33 | ||
| 33 | void | 34 | void |
| 34 | np_add_name (struct name_list **list, const char *name) | 35 | np_add_name (struct name_list **list, const char *name) |
| @@ -40,6 +41,42 @@ np_add_name (struct name_list **list, const char *name) | |||
| 40 | *list = new_entry; | 41 | *list = new_entry; |
| 41 | } | 42 | } |
| 42 | 43 | ||
| 44 | /* @brief Initialises a new regex at the begin of list via regcomp(3) | ||
| 45 | * | ||
| 46 | * @details if the regex fails to compile the error code of regcomp(3) is returned | ||
| 47 | * and list is not modified, otherwise list is modified to point to the new | ||
| 48 | * element | ||
| 49 | * @param list Pointer to a linked list of regex_list elements | ||
| 50 | * @param regex the string containing the regex which should be inserted into the list | ||
| 51 | * @param clags the cflags parameter for regcomp(3) | ||
| 52 | */ | ||
| 53 | int | ||
| 54 | np_add_regex (struct regex_list **list, const char *regex, int cflags) | ||
| 55 | { | ||
| 56 | struct regex_list *new_entry = (struct regex_list *) malloc (sizeof *new_entry); | ||
| 57 | |||
| 58 | if (new_entry == NULL) { | ||
| 59 | die(STATE_UNKNOWN, _("Cannot allocate memory: %s"), | ||
| 60 | strerror(errno)); | ||
| 61 | } | ||
| 62 | |||
| 63 | int regcomp_result = regcomp(&new_entry->regex, regex, cflags); | ||
| 64 | |||
| 65 | if (!regcomp_result) { | ||
| 66 | // regcomp succeeded | ||
| 67 | new_entry->next = *list; | ||
| 68 | *list = new_entry; | ||
| 69 | |||
| 70 | return 0; | ||
| 71 | } else { | ||
| 72 | // regcomp failed | ||
| 73 | free(new_entry); | ||
| 74 | |||
| 75 | return regcomp_result; | ||
| 76 | } | ||
| 77 | |||
| 78 | } | ||
| 79 | |||
| 43 | /* Initialises a new parameter at the end of list */ | 80 | /* Initialises a new parameter at the end of list */ |
| 44 | struct parameter_list * | 81 | struct parameter_list * |
| 45 | np_add_parameter(struct parameter_list **list, const char *name) | 82 | np_add_parameter(struct parameter_list **list, const char *name) |
| @@ -61,7 +98,7 @@ np_add_parameter(struct parameter_list **list, const char *name) | |||
| 61 | new_path->freeinodes_percent = NULL; | 98 | new_path->freeinodes_percent = NULL; |
| 62 | new_path->group = NULL; | 99 | new_path->group = NULL; |
| 63 | new_path->dfree_pct = -1; | 100 | new_path->dfree_pct = -1; |
| 64 | new_path->dused_pct = -1; | 101 | new_path->dused_pct = -1; |
| 65 | new_path->total = 0; | 102 | new_path->total = 0; |
| 66 | new_path->available = 0; | 103 | new_path->available = 0; |
| 67 | new_path->available_to_root = 0; | 104 | new_path->available_to_root = 0; |
| @@ -133,9 +170,7 @@ np_find_parameter(struct parameter_list *list, const char *name) | |||
| 133 | return NULL; | 170 | return NULL; |
| 134 | } | 171 | } |
| 135 | 172 | ||
| 136 | void | 173 | void np_set_best_match(struct parameter_list *desired, struct mount_entry *mount_list, bool exact) { |
| 137 | np_set_best_match(struct parameter_list *desired, struct mount_entry *mount_list, int exact) | ||
| 138 | { | ||
| 139 | struct parameter_list *d; | 174 | struct parameter_list *d; |
| 140 | for (d = desired; d; d= d->name_next) { | 175 | for (d = desired; d; d= d->name_next) { |
| 141 | if (! d->best_match) { | 176 | if (! d->best_match) { |
| @@ -158,9 +193,9 @@ np_set_best_match(struct parameter_list *desired, struct mount_entry *mount_list | |||
| 158 | if (! best_match) { | 193 | if (! best_match) { |
| 159 | for (me = mount_list; me; me = me->me_next) { | 194 | for (me = mount_list; me; me = me->me_next) { |
| 160 | size_t len = strlen (me->me_mountdir); | 195 | size_t len = strlen (me->me_mountdir); |
| 161 | if ((exact == FALSE && (best_match_len <= len && len <= name_len && | 196 | if ((!exact && (best_match_len <= len && len <= name_len && |
| 162 | (len == 1 || strncmp (me->me_mountdir, d->name, len) == 0))) | 197 | (len == 1 || strncmp (me->me_mountdir, d->name, len) == 0))) |
| 163 | || (exact == TRUE && strcmp(me->me_mountdir, d->name)==0)) | 198 | || (exact && strcmp(me->me_mountdir, d->name)==0)) |
| 164 | { | 199 | { |
| 165 | if (get_fs_usage(me->me_mountdir, me->me_devname, &fsp) >= 0) { | 200 | if (get_fs_usage(me->me_mountdir, me->me_devname, &fsp) >= 0) { |
| 166 | best_match = me; | 201 | best_match = me; |
| @@ -179,43 +214,57 @@ np_set_best_match(struct parameter_list *desired, struct mount_entry *mount_list | |||
| 179 | } | 214 | } |
| 180 | } | 215 | } |
| 181 | 216 | ||
| 182 | /* Returns TRUE if name is in list */ | 217 | /* Returns true if name is in list */ |
| 183 | int | 218 | bool np_find_name (struct name_list *list, const char *name) { |
| 184 | np_find_name (struct name_list *list, const char *name) | ||
| 185 | { | ||
| 186 | const struct name_list *n; | 219 | const struct name_list *n; |
| 187 | 220 | ||
| 188 | if (list == NULL || name == NULL) { | 221 | if (list == NULL || name == NULL) { |
| 189 | return FALSE; | 222 | return false; |
| 190 | } | 223 | } |
| 191 | for (n = list; n; n = n->next) { | 224 | for (n = list; n; n = n->next) { |
| 192 | if (!strcmp(name, n->name)) { | 225 | if (!strcmp(name, n->name)) { |
| 193 | return TRUE; | 226 | return true; |
| 194 | } | 227 | } |
| 195 | } | 228 | } |
| 196 | return FALSE; | 229 | return false; |
| 197 | } | 230 | } |
| 198 | 231 | ||
| 199 | int | 232 | /* Returns true if name is in list */ |
| 200 | np_seen_name(struct name_list *list, const char *name) | 233 | bool np_find_regmatch (struct regex_list *list, const char *name) { |
| 201 | { | 234 | int len; |
| 235 | regmatch_t m; | ||
| 236 | |||
| 237 | if (name == NULL) { | ||
| 238 | return false; | ||
| 239 | } | ||
| 240 | |||
| 241 | len = strlen(name); | ||
| 242 | |||
| 243 | for (; list; list = list->next) { | ||
| 244 | /* Emulate a full match as if surrounded with ^( )$ | ||
| 245 | by checking whether the match spans the whole name */ | ||
| 246 | if (!regexec(&list->regex, name, 1, &m, 0) && m.rm_so == 0 && m.rm_eo == len) { | ||
| 247 | return true; | ||
| 248 | } | ||
| 249 | } | ||
| 250 | |||
| 251 | return false; | ||
| 252 | } | ||
| 253 | |||
| 254 | bool np_seen_name(struct name_list *list, const char *name) { | ||
| 202 | const struct name_list *s; | 255 | const struct name_list *s; |
| 203 | for (s = list; s; s=s->next) { | 256 | for (s = list; s; s=s->next) { |
| 204 | if (!strcmp(s->name, name)) { | 257 | if (!strcmp(s->name, name)) { |
| 205 | return TRUE; | 258 | return true; |
| 206 | } | 259 | } |
| 207 | } | 260 | } |
| 208 | return FALSE; | 261 | return false; |
| 209 | } | 262 | } |
| 210 | 263 | ||
| 211 | int | 264 | bool np_regex_match_mount_entry (struct mount_entry* me, regex_t* re) { |
| 212 | np_regex_match_mount_entry (struct mount_entry* me, regex_t* re) | ||
| 213 | { | ||
| 214 | if (regexec(re, me->me_devname, (size_t) 0, NULL, 0) == 0 || | 265 | if (regexec(re, me->me_devname, (size_t) 0, NULL, 0) == 0 || |
| 215 | regexec(re, me->me_mountdir, (size_t) 0, NULL, 0) == 0 ) { | 266 | regexec(re, me->me_mountdir, (size_t) 0, NULL, 0) == 0 ) { |
| 216 | return TRUE; | 267 | return true; |
| 217 | } else { | ||
| 218 | return FALSE; | ||
| 219 | } | 268 | } |
| 269 | return false; | ||
| 220 | } | 270 | } |
| 221 | |||
diff --git a/lib/utils_disk.h b/lib/utils_disk.h index 3b5a45f8..5b2caf23 100644 --- a/lib/utils_disk.h +++ b/lib/utils_disk.h | |||
| @@ -10,6 +10,12 @@ struct name_list | |||
| 10 | struct name_list *next; | 10 | struct name_list *next; |
| 11 | }; | 11 | }; |
| 12 | 12 | ||
| 13 | struct regex_list | ||
| 14 | { | ||
| 15 | regex_t regex; | ||
| 16 | struct regex_list *next; | ||
| 17 | }; | ||
| 18 | |||
| 13 | struct parameter_list | 19 | struct parameter_list |
| 14 | { | 20 | { |
| 15 | char *name; | 21 | char *name; |
| @@ -33,12 +39,14 @@ struct parameter_list | |||
| 33 | }; | 39 | }; |
| 34 | 40 | ||
| 35 | void np_add_name (struct name_list **list, const char *name); | 41 | void np_add_name (struct name_list **list, const char *name); |
| 36 | int np_find_name (struct name_list *list, const char *name); | 42 | bool np_find_name (struct name_list *list, const char *name); |
| 37 | int np_seen_name (struct name_list *list, const char *name); | 43 | bool np_seen_name (struct name_list *list, const char *name); |
| 44 | int np_add_regex (struct regex_list **list, const char *regex, int cflags); | ||
| 45 | bool np_find_regmatch (struct regex_list *list, const char *name); | ||
| 38 | struct parameter_list *np_add_parameter(struct parameter_list **list, const char *name); | 46 | struct parameter_list *np_add_parameter(struct parameter_list **list, const char *name); |
| 39 | struct parameter_list *np_find_parameter(struct parameter_list *list, const char *name); | 47 | struct parameter_list *np_find_parameter(struct parameter_list *list, const char *name); |
| 40 | struct parameter_list *np_del_parameter(struct parameter_list *item, struct parameter_list *prev); | 48 | struct parameter_list *np_del_parameter(struct parameter_list *item, struct parameter_list *prev); |
| 41 | 49 | ||
| 42 | int search_parameter_list (struct parameter_list *list, const char *name); | 50 | int search_parameter_list (struct parameter_list *list, const char *name); |
| 43 | void np_set_best_match(struct parameter_list *desired, struct mount_entry *mount_list, int exact); | 51 | void np_set_best_match(struct parameter_list *desired, struct mount_entry *mount_list, bool exact); |
| 44 | int np_regex_match_mount_entry (struct mount_entry* me, regex_t* re); | 52 | bool np_regex_match_mount_entry (struct mount_entry* me, regex_t* re); |
diff --git a/lib/utils_tcp.c b/lib/utils_tcp.c index b37c446f..23ee4a95 100644 --- a/lib/utils_tcp.c +++ b/lib/utils_tcp.c | |||
| @@ -1,29 +1,29 @@ | |||
| 1 | /***************************************************************************** | 1 | /***************************************************************************** |
| 2 | * | 2 | * |
| 3 | * Library for check_tcp | 3 | * Library for check_tcp |
| 4 | * | 4 | * |
| 5 | * License: GPL | 5 | * License: GPL |
| 6 | * Copyright (c) 1999-2013 Monitoring Plugins Development Team | 6 | * Copyright (c) 1999-2013 Monitoring Plugins Development Team |
| 7 | * | 7 | * |
| 8 | * Description: | 8 | * Description: |
| 9 | * | 9 | * |
| 10 | * This file contains utilities for check_tcp. These are tested by libtap | 10 | * This file contains utilities for check_tcp. These are tested by libtap |
| 11 | * | 11 | * |
| 12 | * | 12 | * |
| 13 | * This program is free software: you can redistribute it and/or modify | 13 | * This program is free software: you can redistribute it and/or modify |
| 14 | * it under the terms of the GNU General Public License as published by | 14 | * it under the terms of the GNU General Public License as published by |
| 15 | * the Free Software Foundation, either version 3 of the License, or | 15 | * the Free Software Foundation, either version 3 of the License, or |
| 16 | * (at your option) any later version. | 16 | * (at your option) any later version. |
| 17 | * | 17 | * |
| 18 | * This program is distributed in the hope that it will be useful, | 18 | * This program is distributed in the hope that it will be useful, |
| 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 21 | * GNU General Public License for more details. | 21 | * GNU General Public License for more details. |
| 22 | * | 22 | * |
| 23 | * You should have received a copy of the GNU General Public License | 23 | * You should have received a copy of the GNU General Public License |
| 24 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 24 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 25 | * | 25 | * |
| 26 | * | 26 | * |
| 27 | *****************************************************************************/ | 27 | *****************************************************************************/ |
| 28 | 28 | ||
| 29 | #include "common.h" | 29 | #include "common.h" |
diff --git a/m4/np_mysqlclient.m4 b/m4/np_mysqlclient.m4 index 9f533ea3..9fe38ac9 100644 --- a/m4/np_mysqlclient.m4 +++ b/m4/np_mysqlclient.m4 | |||
| @@ -13,7 +13,7 @@ dnl np_mysql_libs = flags for libs, from mysql_config --libs | |||
| 13 | dnl np_mysql_cflags = flags for cflags, from mysql_config --cflags | 13 | dnl np_mysql_cflags = flags for cflags, from mysql_config --cflags |
| 14 | dnl Also sets in config.h: | 14 | dnl Also sets in config.h: |
| 15 | dnl HAVE_MYSQLCLIENT | 15 | dnl HAVE_MYSQLCLIENT |
| 16 | dnl Copile your code with: | 16 | dnl Compile your code with: |
| 17 | dnl $(CC) $(np_mysql_include) code.c $(np_mysql_libs) | 17 | dnl $(CC) $(np_mysql_include) code.c $(np_mysql_libs) |
| 18 | 18 | ||
| 19 | AC_DEFUN([np_mysqlclient], | 19 | AC_DEFUN([np_mysqlclient], |
diff --git a/plugins-root/Makefile.am b/plugins-root/Makefile.am index 40aa020d..a80229e2 100644 --- a/plugins-root/Makefile.am +++ b/plugins-root/Makefile.am | |||
| @@ -26,7 +26,7 @@ EXTRA_PROGRAMS = pst3 | |||
| 26 | 26 | ||
| 27 | EXTRA_DIST = t pst3.c | 27 | EXTRA_DIST = t pst3.c |
| 28 | 28 | ||
| 29 | BASEOBJS = ../plugins/utils.o ../lib/libmonitoringplug.a ../gl/libgnu.a $(LIB_CRYPTO) | 29 | BASEOBJS = ../plugins/utils.o ../lib/libmonitoringplug.a ../gl/libgnu.a |
| 30 | NETOBJS = ../plugins/netutils.o $(BASEOBJS) $(EXTRA_NETOBJS) | 30 | NETOBJS = ../plugins/netutils.o $(BASEOBJS) $(EXTRA_NETOBJS) |
| 31 | NETLIBS = $(NETOBJS) $(SOCKETLIBS) | 31 | NETLIBS = $(NETOBJS) $(SOCKETLIBS) |
| 32 | 32 | ||
| @@ -80,8 +80,8 @@ install-exec-local: $(noinst_PROGRAMS) | |||
| 80 | 80 | ||
| 81 | ############################################################################## | 81 | ############################################################################## |
| 82 | # the actual targets | 82 | # the actual targets |
| 83 | check_dhcp_LDADD = @LTLIBINTL@ $(NETLIBS) | 83 | check_dhcp_LDADD = @LTLIBINTL@ $(NETLIBS) $(LIB_CRYPTO) |
| 84 | check_icmp_LDADD = @LTLIBINTL@ $(NETLIBS) $(SOCKETLIBS) | 84 | check_icmp_LDADD = @LTLIBINTL@ $(NETLIBS) $(SOCKETLIBS) $(LIB_CRYPTO) |
| 85 | 85 | ||
| 86 | # -m64 needed at compiler and linker phase | 86 | # -m64 needed at compiler and linker phase |
| 87 | pst3_CFLAGS = @PST3CFLAGS@ | 87 | pst3_CFLAGS = @PST3CFLAGS@ |
diff --git a/plugins-root/check_dhcp.c b/plugins-root/check_dhcp.c index 2d22619b..4b8f5e27 100644 --- a/plugins-root/check_dhcp.c +++ b/plugins-root/check_dhcp.c | |||
| @@ -1,40 +1,40 @@ | |||
| 1 | /***************************************************************************** | 1 | /***************************************************************************** |
| 2 | * | 2 | * |
| 3 | * Monitoring check_dhcp plugin | 3 | * Monitoring check_dhcp plugin |
| 4 | * | 4 | * |
| 5 | * License: GPL | 5 | * License: GPL |
| 6 | * Copyright (c) 2001-2004 Ethan Galstad (nagios@nagios.org) | 6 | * Copyright (c) 2001-2004 Ethan Galstad (nagios@nagios.org) |
| 7 | * Copyright (c) 2001-2007 Monitoring Plugins Development Team | 7 | * Copyright (c) 2001-2007 Monitoring Plugins Development Team |
| 8 | * | 8 | * |
| 9 | * Description: | 9 | * Description: |
| 10 | * | 10 | * |
| 11 | * This file contains the check_dhcp plugin | 11 | * This file contains the check_dhcp plugin |
| 12 | * | 12 | * |
| 13 | * This plugin tests the availability of DHCP servers on a network. | 13 | * This plugin tests the availability of DHCP servers on a network. |
| 14 | * | 14 | * |
| 15 | * Unicast mode was originally implemented by Heiti of Boras Kommun with | 15 | * Unicast mode was originally implemented by Heiti of Boras Kommun with |
| 16 | * general improvements as well as usability fixes and "forward"-porting by | 16 | * general improvements as well as usability fixes and "forward"-porting by |
| 17 | * Andreas Ericsson of OP5 AB. | 17 | * Andreas Ericsson of OP5 AB. |
| 18 | * | 18 | * |
| 19 | * | 19 | * |
| 20 | * This program is free software: you can redistribute it and/or modify | 20 | * This program is free software: you can redistribute it and/or modify |
| 21 | * it under the terms of the GNU General Public License as published by | 21 | * it under the terms of the GNU General Public License as published by |
| 22 | * the Free Software Foundation, either version 3 of the License, or | 22 | * the Free Software Foundation, either version 3 of the License, or |
| 23 | * (at your option) any later version. | 23 | * (at your option) any later version. |
| 24 | * | 24 | * |
| 25 | * This program is distributed in the hope that it will be useful, | 25 | * This program is distributed in the hope that it will be useful, |
| 26 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 26 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 27 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 27 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 28 | * GNU General Public License for more details. | 28 | * GNU General Public License for more details. |
| 29 | * | 29 | * |
| 30 | * You should have received a copy of the GNU General Public License | 30 | * You should have received a copy of the GNU General Public License |
| 31 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 31 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 32 | * | 32 | * |
| 33 | * | 33 | * |
| 34 | *****************************************************************************/ | 34 | *****************************************************************************/ |
| 35 | 35 | ||
| 36 | const char *progname = "check_dhcp"; | 36 | const char *progname = "check_dhcp"; |
| 37 | const char *copyright = "2001-2007"; | 37 | const char *copyright = "2001-2023"; |
| 38 | const char *email = "devel@monitoring-plugins.org"; | 38 | const char *email = "devel@monitoring-plugins.org"; |
| 39 | 39 | ||
| 40 | #include "common.h" | 40 | #include "common.h" |
| @@ -57,9 +57,10 @@ const char *email = "devel@monitoring-plugins.org"; | |||
| 57 | #include <netinet/in.h> | 57 | #include <netinet/in.h> |
| 58 | #include <net/if.h> | 58 | #include <net/if.h> |
| 59 | #include <arpa/inet.h> | 59 | #include <arpa/inet.h> |
| 60 | |||
| 60 | #if HAVE_SYS_SOCKIO_H | 61 | #if HAVE_SYS_SOCKIO_H |
| 61 | #include <sys/sockio.h> | 62 | #include <sys/sockio.h> |
| 62 | #endif | 63 | #endif // HAVE_SYS_SOCKIO_H |
| 63 | 64 | ||
| 64 | #if defined( __linux__ ) | 65 | #if defined( __linux__ ) |
| 65 | 66 | ||
| @@ -98,10 +99,6 @@ static struct strbuf dat = {AREA_SZ, 0, (char *)dat_area}; | |||
| 98 | #define GOT_INTR 4 | 99 | #define GOT_INTR 4 |
| 99 | #define GOT_ERR 128 | 100 | #define GOT_ERR 128 |
| 100 | 101 | ||
| 101 | #define u_int8_t uint8_t | ||
| 102 | #define u_int16_t uint16_t | ||
| 103 | #define u_int32_t uint32_t | ||
| 104 | |||
| 105 | static int get_msg(int); | 102 | static int get_msg(int); |
| 106 | static int check_ctrl(int); | 103 | static int check_ctrl(int); |
| 107 | static int put_ctrl(int, int, int); | 104 | static int put_ctrl(int, int, int); |
| @@ -110,7 +107,7 @@ static int dl_open(const char *, int, int *); | |||
| 110 | static int dl_bind(int, int, u_char *); | 107 | static int dl_bind(int, int, u_char *); |
| 111 | long mac_addr_dlpi( const char *, int, u_char *); | 108 | long mac_addr_dlpi( const char *, int, u_char *); |
| 112 | 109 | ||
| 113 | #endif | 110 | #endif // __sun__ || __solaris__ || __hpux |
| 114 | 111 | ||
| 115 | 112 | ||
| 116 | 113 | ||
| @@ -119,9 +116,6 @@ long mac_addr_dlpi( const char *, int, u_char *); | |||
| 119 | #define OK 0 | 116 | #define OK 0 |
| 120 | #define ERROR -1 | 117 | #define ERROR -1 |
| 121 | 118 | ||
| 122 | #define FALSE 0 | ||
| 123 | #define TRUE 1 | ||
| 124 | |||
| 125 | 119 | ||
| 126 | /**** DHCP definitions ****/ | 120 | /**** DHCP definitions ****/ |
| 127 | 121 | ||
| @@ -132,39 +126,40 @@ long mac_addr_dlpi( const char *, int, u_char *); | |||
| 132 | 126 | ||
| 133 | 127 | ||
| 134 | typedef struct dhcp_packet_struct{ | 128 | typedef struct dhcp_packet_struct{ |
| 135 | u_int8_t op; /* packet type */ | 129 | uint8_t op; /* packet type */ |
| 136 | u_int8_t htype; /* type of hardware address for this machine (Ethernet, etc) */ | 130 | uint8_t htype; /* type of hardware address for this machine (Ethernet, etc) */ |
| 137 | u_int8_t hlen; /* length of hardware address (of this machine) */ | 131 | uint8_t hlen; /* length of hardware address (of this machine) */ |
| 138 | u_int8_t hops; /* hops */ | 132 | uint8_t hops; /* hops */ |
| 139 | u_int32_t xid; /* random transaction id number - chosen by this machine */ | 133 | uint32_t xid; /* random transaction id number - chosen by this machine */ |
| 140 | u_int16_t secs; /* seconds used in timing */ | 134 | uint16_t secs; /* seconds used in timing */ |
| 141 | u_int16_t flags; /* flags */ | 135 | uint16_t flags; /* flags */ |
| 142 | struct in_addr ciaddr; /* IP address of this machine (if we already have one) */ | 136 | struct in_addr ciaddr; /* IP address of this machine (if we already have one) */ |
| 143 | struct in_addr yiaddr; /* IP address of this machine (offered by the DHCP server) */ | 137 | struct in_addr yiaddr; /* IP address of this machine (offered by the DHCP server) */ |
| 144 | struct in_addr siaddr; /* IP address of next server */ | 138 | struct in_addr siaddr; /* IP address of next server */ |
| 145 | struct in_addr giaddr; /* IP address of DHCP relay */ | 139 | struct in_addr giaddr; /* IP address of DHCP relay */ |
| 146 | unsigned char chaddr [MAX_DHCP_CHADDR_LENGTH]; /* hardware address of this machine */ | 140 | unsigned char chaddr [MAX_DHCP_CHADDR_LENGTH]; /* hardware address of this machine */ |
| 147 | char sname [MAX_DHCP_SNAME_LENGTH]; /* name of DHCP server */ | 141 | char sname [MAX_DHCP_SNAME_LENGTH]; /* name of DHCP server */ |
| 148 | char file [MAX_DHCP_FILE_LENGTH]; /* boot file name (used for diskless booting?) */ | 142 | char file [MAX_DHCP_FILE_LENGTH]; /* boot file name (used for diskless booting?) */ |
| 149 | char options[MAX_DHCP_OPTIONS_LENGTH]; /* options */ | 143 | char options[MAX_DHCP_OPTIONS_LENGTH]; /* options */ |
| 150 | }dhcp_packet; | 144 | }dhcp_packet; |
| 151 | 145 | ||
| 152 | 146 | ||
| 153 | typedef struct dhcp_offer_struct{ | 147 | typedef struct dhcp_offer_struct{ |
| 154 | struct in_addr server_address; /* address of DHCP server that sent this offer */ | 148 | struct in_addr server_address; /* address of DHCP server that sent this offer */ |
| 155 | struct in_addr offered_address; /* the IP address that was offered to us */ | 149 | struct in_addr offered_address; /* the IP address that was offered to us */ |
| 156 | u_int32_t lease_time; /* lease time in seconds */ | 150 | uint32_t lease_time; /* lease time in seconds */ |
| 157 | u_int32_t renewal_time; /* renewal time in seconds */ | 151 | uint32_t renewal_time; /* renewal time in seconds */ |
| 158 | u_int32_t rebinding_time; /* rebinding time in seconds */ | 152 | uint32_t rebinding_time; /* rebinding time in seconds */ |
| 153 | bool desired; /* is this offer desired (necessary in exclusive mode) */ | ||
| 159 | struct dhcp_offer_struct *next; | 154 | struct dhcp_offer_struct *next; |
| 160 | }dhcp_offer; | 155 | }dhcp_offer; |
| 161 | 156 | ||
| 162 | 157 | ||
| 163 | typedef struct requested_server_struct{ | 158 | typedef struct requested_server_struct{ |
| 164 | struct in_addr server_address; | 159 | struct in_addr server_address; |
| 165 | int answered; | 160 | bool answered; |
| 166 | struct requested_server_struct *next; | 161 | struct requested_server_struct *next; |
| 167 | }requested_server; | 162 | }requested_server; |
| 168 | 163 | ||
| 169 | 164 | ||
| 170 | #define BOOTREQUEST 1 | 165 | #define BOOTREQUEST 1 |
| @@ -198,7 +193,8 @@ typedef struct requested_server_struct{ | |||
| 198 | #define ETHERNET_HARDWARE_ADDRESS 1 /* used in htype field of dhcp packet */ | 193 | #define ETHERNET_HARDWARE_ADDRESS 1 /* used in htype field of dhcp packet */ |
| 199 | #define ETHERNET_HARDWARE_ADDRESS_LENGTH 6 /* length of Ethernet hardware addresses */ | 194 | #define ETHERNET_HARDWARE_ADDRESS_LENGTH 6 /* length of Ethernet hardware addresses */ |
| 200 | 195 | ||
| 201 | u_int8_t unicast = 0; /* unicast mode: mimic a DHCP relay */ | 196 | bool unicast = false; /* unicast mode: mimic a DHCP relay */ |
| 197 | bool exclusive = false; /* exclusive mode aka "rogue DHCP server detection" */ | ||
| 202 | struct in_addr my_ip; /* our address (required for relay) */ | 198 | struct in_addr my_ip; /* our address (required for relay) */ |
| 203 | struct in_addr dhcp_ip; /* server to query (if in unicast mode) */ | 199 | struct in_addr dhcp_ip; /* server to query (if in unicast mode) */ |
| 204 | unsigned char client_hardware_address[MAX_DHCP_CHADDR_LENGTH]=""; | 200 | unsigned char client_hardware_address[MAX_DHCP_CHADDR_LENGTH]=""; |
| @@ -206,11 +202,11 @@ unsigned char *user_specified_mac=NULL; | |||
| 206 | 202 | ||
| 207 | char network_interface_name[IFNAMSIZ]="eth0"; | 203 | char network_interface_name[IFNAMSIZ]="eth0"; |
| 208 | 204 | ||
| 209 | u_int32_t packet_xid=0; | 205 | uint32_t packet_xid=0; |
| 210 | 206 | ||
| 211 | u_int32_t dhcp_lease_time=0; | 207 | uint32_t dhcp_lease_time=0; |
| 212 | u_int32_t dhcp_renewal_time=0; | 208 | uint32_t dhcp_renewal_time=0; |
| 213 | u_int32_t dhcp_rebinding_time=0; | 209 | uint32_t dhcp_rebinding_time=0; |
| 214 | 210 | ||
| 215 | int dhcpoffer_timeout=2; | 211 | int dhcpoffer_timeout=2; |
| 216 | 212 | ||
| @@ -221,8 +217,8 @@ int valid_responses=0; /* number of valid DHCPOFFERs we received */ | |||
| 221 | int requested_servers=0; | 217 | int requested_servers=0; |
| 222 | int requested_responses=0; | 218 | int requested_responses=0; |
| 223 | 219 | ||
| 224 | int request_specific_address=FALSE; | 220 | bool request_specific_address=false; |
| 225 | int received_requested_address=FALSE; | 221 | bool received_requested_address=false; |
| 226 | int verbose=0; | 222 | int verbose=0; |
| 227 | struct in_addr requested_address; | 223 | struct in_addr requested_address; |
| 228 | 224 | ||
| @@ -268,7 +264,7 @@ int main(int argc, char **argv){ | |||
| 268 | 264 | ||
| 269 | if(process_arguments(argc,argv)!=OK){ | 265 | if(process_arguments(argc,argv)!=OK){ |
| 270 | usage4 (_("Could not parse arguments")); | 266 | usage4 (_("Could not parse arguments")); |
| 271 | } | 267 | } |
| 272 | 268 | ||
| 273 | /* create socket for DHCP communications */ | 269 | /* create socket for DHCP communications */ |
| 274 | dhcp_socket=create_dhcp_socket(); | 270 | dhcp_socket=create_dhcp_socket(); |
| @@ -299,7 +295,7 @@ int main(int argc, char **argv){ | |||
| 299 | free_requested_server_list(); | 295 | free_requested_server_list(); |
| 300 | 296 | ||
| 301 | return result; | 297 | return result; |
| 302 | } | 298 | } |
| 303 | 299 | ||
| 304 | 300 | ||
| 305 | 301 | ||
| @@ -314,83 +310,83 @@ int get_hardware_address(int sock,char *interface_name){ | |||
| 314 | 310 | ||
| 315 | /* try and grab hardware address of requested interface */ | 311 | /* try and grab hardware address of requested interface */ |
| 316 | if(ioctl(sock,SIOCGIFHWADDR,&ifr)<0){ | 312 | if(ioctl(sock,SIOCGIFHWADDR,&ifr)<0){ |
| 317 | printf(_("Error: Could not get hardware address of interface '%s'\n"),interface_name); | 313 | printf(_("Error: Could not get hardware address of interface '%s'\n"),interface_name); |
| 318 | exit(STATE_UNKNOWN); | 314 | exit(STATE_UNKNOWN); |
| 319 | } | 315 | } |
| 320 | 316 | ||
| 321 | memcpy(&client_hardware_address[0],&ifr.ifr_hwaddr.sa_data,6); | 317 | memcpy(&client_hardware_address[0],&ifr.ifr_hwaddr.sa_data,6); |
| 322 | 318 | ||
| 323 | #elif defined(__bsd__) | 319 | #elif defined(__bsd__) |
| 324 | /* King 2004 see ACKNOWLEDGEMENTS */ | 320 | /* King 2004 see ACKNOWLEDGEMENTS */ |
| 325 | 321 | ||
| 326 | size_t len; | 322 | size_t len; |
| 327 | int mib[6]; | 323 | int mib[6]; |
| 328 | char *buf; | 324 | char *buf; |
| 329 | unsigned char *ptr; | 325 | unsigned char *ptr; |
| 330 | struct if_msghdr *ifm; | 326 | struct if_msghdr *ifm; |
| 331 | struct sockaddr_dl *sdl; | 327 | struct sockaddr_dl *sdl; |
| 332 | 328 | ||
| 333 | mib[0] = CTL_NET; | 329 | mib[0] = CTL_NET; |
| 334 | mib[1] = AF_ROUTE; | 330 | mib[1] = AF_ROUTE; |
| 335 | mib[2] = 0; | 331 | mib[2] = 0; |
| 336 | mib[3] = AF_LINK; | 332 | mib[3] = AF_LINK; |
| 337 | mib[4] = NET_RT_IFLIST; | 333 | mib[4] = NET_RT_IFLIST; |
| 338 | 334 | ||
| 339 | if((mib[5] = if_nametoindex(interface_name)) == 0){ | 335 | if((mib[5] = if_nametoindex(interface_name)) == 0){ |
| 340 | printf(_("Error: if_nametoindex error - %s.\n"), strerror(errno)); | 336 | printf(_("Error: if_nametoindex error - %s.\n"), strerror(errno)); |
| 341 | exit(STATE_UNKNOWN); | 337 | exit(STATE_UNKNOWN); |
| 342 | } | 338 | } |
| 343 | 339 | ||
| 344 | if(sysctl(mib, 6, NULL, &len, NULL, 0) < 0){ | 340 | if(sysctl(mib, 6, NULL, &len, NULL, 0) < 0){ |
| 345 | printf(_("Error: Couldn't get hardware address from %s. sysctl 1 error - %s.\n"), interface_name, strerror(errno)); | 341 | printf(_("Error: Couldn't get hardware address from %s. sysctl 1 error - %s.\n"), interface_name, strerror(errno)); |
| 346 | exit(STATE_UNKNOWN); | 342 | exit(STATE_UNKNOWN); |
| 347 | } | 343 | } |
| 348 | 344 | ||
| 349 | if((buf = malloc(len)) == NULL){ | 345 | if((buf = malloc(len)) == NULL){ |
| 350 | printf(_("Error: Couldn't get hardware address from interface %s. malloc error - %s.\n"), interface_name, strerror(errno)); | 346 | printf(_("Error: Couldn't get hardware address from interface %s. malloc error - %s.\n"), interface_name, strerror(errno)); |
| 351 | exit(4); | 347 | exit(4); |
| 352 | } | 348 | } |
| 353 | 349 | ||
| 354 | if(sysctl(mib, 6, buf, &len, NULL, 0) < 0){ | 350 | if(sysctl(mib, 6, buf, &len, NULL, 0) < 0){ |
| 355 | printf(_("Error: Couldn't get hardware address from %s. sysctl 2 error - %s.\n"), interface_name, strerror(errno)); | 351 | printf(_("Error: Couldn't get hardware address from %s. sysctl 2 error - %s.\n"), interface_name, strerror(errno)); |
| 356 | exit(STATE_UNKNOWN); | 352 | exit(STATE_UNKNOWN); |
| 357 | } | 353 | } |
| 358 | 354 | ||
| 359 | ifm = (struct if_msghdr *)buf; | 355 | ifm = (struct if_msghdr *)buf; |
| 360 | sdl = (struct sockaddr_dl *)(ifm + 1); | 356 | sdl = (struct sockaddr_dl *)(ifm + 1); |
| 361 | ptr = (unsigned char *)LLADDR(sdl); | 357 | ptr = (unsigned char *)LLADDR(sdl); |
| 362 | memcpy(&client_hardware_address[0], ptr, 6) ; | 358 | memcpy(&client_hardware_address[0], ptr, 6) ; |
| 363 | /* King 2004 */ | 359 | /* King 2004 */ |
| 364 | 360 | ||
| 365 | #elif defined(__sun__) || defined(__solaris__) | 361 | #elif defined(__sun__) || defined(__solaris__) |
| 366 | 362 | ||
| 367 | /* Kompf 2000-2003 see ACKNOWLEDGEMENTS */ | 363 | /* Kompf 2000-2003 see ACKNOWLEDGEMENTS */ |
| 368 | long stat; | 364 | long stat; |
| 369 | char dev[20] = "/dev/"; | 365 | char dev[20] = "/dev/"; |
| 370 | char *p; | 366 | char *p; |
| 371 | int unit; | 367 | int unit; |
| 372 | 368 | ||
| 373 | /* get last number from interfacename, eg lnc0, e1000g0*/ | 369 | /* get last number from interfacename, eg lnc0, e1000g0*/ |
| 374 | int i; | 370 | int i; |
| 375 | p = interface_name + strlen(interface_name) -1; | 371 | p = interface_name + strlen(interface_name) -1; |
| 376 | for(i = strlen(interface_name) -1; i > 0; p--) { | 372 | for(i = strlen(interface_name) -1; i > 0; p--) { |
| 377 | if(isalpha(*p)) | 373 | if(isalpha(*p)) |
| 378 | break; | 374 | break; |
| 379 | } | 375 | } |
| 380 | p++; | 376 | p++; |
| 381 | if( p != interface_name ){ | 377 | if( p != interface_name ){ |
| 382 | unit = atoi(p) ; | 378 | unit = atoi(p) ; |
| 383 | strncat(dev, interface_name, 6) ; | 379 | strncat(dev, interface_name, 6) ; |
| 384 | } | 380 | } |
| 385 | else{ | 381 | else{ |
| 386 | printf(_("Error: can't find unit number in interface_name (%s) - expecting TypeNumber eg lnc0.\n"), interface_name); | 382 | printf(_("Error: can't find unit number in interface_name (%s) - expecting TypeNumber eg lnc0.\n"), interface_name); |
| 387 | exit(STATE_UNKNOWN); | 383 | exit(STATE_UNKNOWN); |
| 388 | } | 384 | } |
| 389 | stat = mac_addr_dlpi(dev, unit, client_hardware_address); | 385 | stat = mac_addr_dlpi(dev, unit, client_hardware_address); |
| 390 | if(stat != 0){ | 386 | if(stat != 0){ |
| 391 | printf(_("Error: can't read MAC address from DLPI streams interface for device %s unit %d.\n"), dev, unit); | 387 | printf(_("Error: can't read MAC address from DLPI streams interface for device %s unit %d.\n"), dev, unit); |
| 392 | exit(STATE_UNKNOWN); | 388 | exit(STATE_UNKNOWN); |
| 393 | } | 389 | } |
| 394 | 390 | ||
| 395 | #elif defined(__hpux__) | 391 | #elif defined(__hpux__) |
| 396 | 392 | ||
| @@ -402,8 +398,8 @@ int get_hardware_address(int sock,char *interface_name){ | |||
| 402 | if(stat != 0){ | 398 | if(stat != 0){ |
| 403 | printf(_("Error: can't read MAC address from DLPI streams interface for device %s unit %d.\n"), dev, unit); | 399 | printf(_("Error: can't read MAC address from DLPI streams interface for device %s unit %d.\n"), dev, unit); |
| 404 | exit(STATE_UNKNOWN); | 400 | exit(STATE_UNKNOWN); |
| 405 | } | 401 | } |
| 406 | /* Kompf 2000-2003 */ | 402 | /* Kompf 2000-2003 */ |
| 407 | 403 | ||
| 408 | #else | 404 | #else |
| 409 | printf(_("Error: can't get MAC address for this architecture. Use the --mac option.\n")); | 405 | printf(_("Error: can't get MAC address for this architecture. Use the --mac option.\n")); |
| @@ -414,7 +410,7 @@ int get_hardware_address(int sock,char *interface_name){ | |||
| 414 | print_hardware_address(client_hardware_address); | 410 | print_hardware_address(client_hardware_address); |
| 415 | 411 | ||
| 416 | return OK; | 412 | return OK; |
| 417 | } | 413 | } |
| 418 | 414 | ||
| 419 | /* determines IP address of the client interface */ | 415 | /* determines IP address of the client interface */ |
| 420 | int get_ip_address(int sock,char *interface_name){ | 416 | int get_ip_address(int sock,char *interface_name){ |
| @@ -426,9 +422,9 @@ int get_ip_address(int sock,char *interface_name){ | |||
| 426 | 422 | ||
| 427 | if(ioctl(sock,SIOCGIFADDR,&ifr)<0){ | 423 | if(ioctl(sock,SIOCGIFADDR,&ifr)<0){ |
| 428 | printf(_("Error: Cannot determine IP address of interface %s\n"), | 424 | printf(_("Error: Cannot determine IP address of interface %s\n"), |
| 429 | interface_name); | 425 | interface_name); |
| 430 | exit(STATE_UNKNOWN); | 426 | exit(STATE_UNKNOWN); |
| 431 | } | 427 | } |
| 432 | 428 | ||
| 433 | my_ip=((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr; | 429 | my_ip=((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr; |
| 434 | 430 | ||
| @@ -441,13 +437,13 @@ int get_ip_address(int sock,char *interface_name){ | |||
| 441 | printf(_("Pretending to be relay client %s\n"),inet_ntoa(my_ip)); | 437 | printf(_("Pretending to be relay client %s\n"),inet_ntoa(my_ip)); |
| 442 | 438 | ||
| 443 | return OK; | 439 | return OK; |
| 444 | } | 440 | } |
| 445 | 441 | ||
| 446 | /* sends a DHCPDISCOVER broadcast message in an attempt to find DHCP servers */ | 442 | /* sends a DHCPDISCOVER broadcast message in an attempt to find DHCP servers */ |
| 447 | int send_dhcp_discover(int sock){ | 443 | int send_dhcp_discover(int sock){ |
| 448 | dhcp_packet discover_packet; | 444 | dhcp_packet discover_packet; |
| 449 | struct sockaddr_in sockaddr_broadcast; | 445 | struct sockaddr_in sockaddr_broadcast; |
| 450 | unsigned short opts; | 446 | unsigned short opts; |
| 451 | 447 | ||
| 452 | 448 | ||
| 453 | /* clear the packet data structure */ | 449 | /* clear the packet data structure */ |
| @@ -488,20 +484,20 @@ int send_dhcp_discover(int sock){ | |||
| 488 | discover_packet.options[2]='\x53'; | 484 | discover_packet.options[2]='\x53'; |
| 489 | discover_packet.options[3]='\x63'; | 485 | discover_packet.options[3]='\x63'; |
| 490 | 486 | ||
| 491 | opts = 4; | 487 | opts = 4; |
| 492 | /* DHCP message type is embedded in options field */ | 488 | /* DHCP message type is embedded in options field */ |
| 493 | discover_packet.options[opts++]=DHCP_OPTION_MESSAGE_TYPE; /* DHCP message type option identifier */ | 489 | discover_packet.options[opts++]=DHCP_OPTION_MESSAGE_TYPE; /* DHCP message type option identifier */ |
| 494 | discover_packet.options[opts++]='\x01'; /* DHCP message option length in bytes */ | 490 | discover_packet.options[opts++]='\x01'; /* DHCP message option length in bytes */ |
| 495 | discover_packet.options[opts++]=DHCPDISCOVER; | 491 | discover_packet.options[opts++]=DHCPDISCOVER; |
| 496 | 492 | ||
| 497 | /* the IP address we're requesting */ | 493 | /* the IP address we're requesting */ |
| 498 | if(request_specific_address==TRUE){ | 494 | if(request_specific_address){ |
| 499 | discover_packet.options[opts++]=DHCP_OPTION_REQUESTED_ADDRESS; | 495 | discover_packet.options[opts++]=DHCP_OPTION_REQUESTED_ADDRESS; |
| 500 | discover_packet.options[opts++]='\x04'; | 496 | discover_packet.options[opts++]='\x04'; |
| 501 | memcpy(&discover_packet.options[opts],&requested_address,sizeof(requested_address)); | 497 | memcpy(&discover_packet.options[opts],&requested_address,sizeof(requested_address)); |
| 502 | opts += sizeof(requested_address); | 498 | opts += sizeof(requested_address); |
| 503 | } | 499 | } |
| 504 | discover_packet.options[opts++]=DHCP_OPTION_END; | 500 | discover_packet.options[opts++]= (char)DHCP_OPTION_END; |
| 505 | 501 | ||
| 506 | /* unicast fields */ | 502 | /* unicast fields */ |
| 507 | if(unicast) | 503 | if(unicast) |
| @@ -511,8 +507,8 @@ int send_dhcp_discover(int sock){ | |||
| 511 | discover_packet.hops = unicast ? 1 : 0; | 507 | discover_packet.hops = unicast ? 1 : 0; |
| 512 | 508 | ||
| 513 | /* send the DHCPDISCOVER packet to broadcast address */ | 509 | /* send the DHCPDISCOVER packet to broadcast address */ |
| 514 | sockaddr_broadcast.sin_family=AF_INET; | 510 | sockaddr_broadcast.sin_family=AF_INET; |
| 515 | sockaddr_broadcast.sin_port=htons(DHCP_SERVER_PORT); | 511 | sockaddr_broadcast.sin_port=htons(DHCP_SERVER_PORT); |
| 516 | sockaddr_broadcast.sin_addr.s_addr = unicast ? dhcp_ip.s_addr : INADDR_BROADCAST; | 512 | sockaddr_broadcast.sin_addr.s_addr = unicast ? dhcp_ip.s_addr : INADDR_BROADCAST; |
| 517 | bzero(&sockaddr_broadcast.sin_zero,sizeof(sockaddr_broadcast.sin_zero)); | 513 | bzero(&sockaddr_broadcast.sin_zero,sizeof(sockaddr_broadcast.sin_zero)); |
| 518 | 514 | ||
| @@ -524,7 +520,7 @@ int send_dhcp_discover(int sock){ | |||
| 524 | printf("DHCDISCOVER yiaddr: %s\n",inet_ntoa(discover_packet.yiaddr)); | 520 | printf("DHCDISCOVER yiaddr: %s\n",inet_ntoa(discover_packet.yiaddr)); |
| 525 | printf("DHCDISCOVER siaddr: %s\n",inet_ntoa(discover_packet.siaddr)); | 521 | printf("DHCDISCOVER siaddr: %s\n",inet_ntoa(discover_packet.siaddr)); |
| 526 | printf("DHCDISCOVER giaddr: %s\n",inet_ntoa(discover_packet.giaddr)); | 522 | printf("DHCDISCOVER giaddr: %s\n",inet_ntoa(discover_packet.giaddr)); |
| 527 | } | 523 | } |
| 528 | 524 | ||
| 529 | /* send the DHCPDISCOVER packet out */ | 525 | /* send the DHCPDISCOVER packet out */ |
| 530 | send_dhcp_packet(&discover_packet,sizeof(discover_packet),sock,&sockaddr_broadcast); | 526 | send_dhcp_packet(&discover_packet,sizeof(discover_packet),sock,&sockaddr_broadcast); |
| @@ -533,7 +529,7 @@ int send_dhcp_discover(int sock){ | |||
| 533 | printf("\n\n"); | 529 | printf("\n\n"); |
| 534 | 530 | ||
| 535 | return OK; | 531 | return OK; |
| 536 | } | 532 | } |
| 537 | 533 | ||
| 538 | 534 | ||
| 539 | 535 | ||
| @@ -573,13 +569,13 @@ int get_dhcp_offer(int sock){ | |||
| 573 | printf(_("Result=ERROR\n")); | 569 | printf(_("Result=ERROR\n")); |
| 574 | 570 | ||
| 575 | continue; | 571 | continue; |
| 576 | } | 572 | } |
| 577 | else{ | 573 | else{ |
| 578 | if(verbose) | 574 | if(verbose) |
| 579 | printf(_("Result=OK\n")); | 575 | printf(_("Result=OK\n")); |
| 580 | 576 | ||
| 581 | responses++; | 577 | responses++; |
| 582 | } | 578 | } |
| 583 | 579 | ||
| 584 | /* The "source" is either a server or a relay. */ | 580 | /* The "source" is either a server or a relay. */ |
| 585 | /* Save a copy of "source" into "via" even if it's via itself */ | 581 | /* Save a copy of "source" into "via" even if it's via itself */ |
| @@ -589,7 +585,7 @@ int get_dhcp_offer(int sock){ | |||
| 589 | printf(_("DHCPOFFER from IP address %s"),inet_ntoa(source.sin_addr)); | 585 | printf(_("DHCPOFFER from IP address %s"),inet_ntoa(source.sin_addr)); |
| 590 | printf(_(" via %s\n"),inet_ntoa(via.sin_addr)); | 586 | printf(_(" via %s\n"),inet_ntoa(via.sin_addr)); |
| 591 | printf("DHCPOFFER XID: %u (0x%X)\n",ntohl(offer_packet.xid),ntohl(offer_packet.xid)); | 587 | printf("DHCPOFFER XID: %u (0x%X)\n",ntohl(offer_packet.xid),ntohl(offer_packet.xid)); |
| 592 | } | 588 | } |
| 593 | 589 | ||
| 594 | /* check packet xid to see if its the same as the one we used in the discover packet */ | 590 | /* check packet xid to see if its the same as the one we used in the discover packet */ |
| 595 | if(ntohl(offer_packet.xid)!=packet_xid){ | 591 | if(ntohl(offer_packet.xid)!=packet_xid){ |
| @@ -597,7 +593,7 @@ int get_dhcp_offer(int sock){ | |||
| 597 | printf(_("DHCPOFFER XID (%u) did not match DHCPDISCOVER XID (%u) - ignoring packet\n"),ntohl(offer_packet.xid),packet_xid); | 593 | printf(_("DHCPOFFER XID (%u) did not match DHCPDISCOVER XID (%u) - ignoring packet\n"),ntohl(offer_packet.xid),packet_xid); |
| 598 | 594 | ||
| 599 | continue; | 595 | continue; |
| 600 | } | 596 | } |
| 601 | 597 | ||
| 602 | /* check hardware address */ | 598 | /* check hardware address */ |
| 603 | result=OK; | 599 | result=OK; |
| @@ -610,7 +606,7 @@ int get_dhcp_offer(int sock){ | |||
| 610 | 606 | ||
| 611 | if(offer_packet.chaddr[x]!=client_hardware_address[x]) | 607 | if(offer_packet.chaddr[x]!=client_hardware_address[x]) |
| 612 | result=ERROR; | 608 | result=ERROR; |
| 613 | } | 609 | } |
| 614 | if(verbose) | 610 | if(verbose) |
| 615 | printf("\n"); | 611 | printf("\n"); |
| 616 | 612 | ||
| @@ -619,27 +615,27 @@ int get_dhcp_offer(int sock){ | |||
| 619 | printf(_("DHCPOFFER hardware address did not match our own - ignoring packet\n")); | 615 | printf(_("DHCPOFFER hardware address did not match our own - ignoring packet\n")); |
| 620 | 616 | ||
| 621 | continue; | 617 | continue; |
| 622 | } | 618 | } |
| 623 | 619 | ||
| 624 | if(verbose){ | 620 | if(verbose){ |
| 625 | printf("DHCPOFFER ciaddr: %s\n",inet_ntoa(offer_packet.ciaddr)); | 621 | printf("DHCPOFFER ciaddr: %s\n",inet_ntoa(offer_packet.ciaddr)); |
| 626 | printf("DHCPOFFER yiaddr: %s\n",inet_ntoa(offer_packet.yiaddr)); | 622 | printf("DHCPOFFER yiaddr: %s\n",inet_ntoa(offer_packet.yiaddr)); |
| 627 | printf("DHCPOFFER siaddr: %s\n",inet_ntoa(offer_packet.siaddr)); | 623 | printf("DHCPOFFER siaddr: %s\n",inet_ntoa(offer_packet.siaddr)); |
| 628 | printf("DHCPOFFER giaddr: %s\n",inet_ntoa(offer_packet.giaddr)); | 624 | printf("DHCPOFFER giaddr: %s\n",inet_ntoa(offer_packet.giaddr)); |
| 629 | } | 625 | } |
| 630 | 626 | ||
| 631 | add_dhcp_offer(source.sin_addr,&offer_packet); | 627 | add_dhcp_offer(source.sin_addr,&offer_packet); |
| 632 | 628 | ||
| 633 | valid_responses++; | 629 | valid_responses++; |
| 634 | } | 630 | } |
| 635 | 631 | ||
| 636 | if(verbose){ | 632 | if(verbose){ |
| 637 | printf(_("Total responses seen on the wire: %d\n"),responses); | 633 | printf(_("Total responses seen on the wire: %d\n"),responses); |
| 638 | printf(_("Valid responses for this machine: %d\n"),valid_responses); | 634 | printf(_("Valid responses for this machine: %d\n"),valid_responses); |
| 639 | } | 635 | } |
| 640 | 636 | ||
| 641 | return OK; | 637 | return OK; |
| 642 | } | 638 | } |
| 643 | 639 | ||
| 644 | 640 | ||
| 645 | 641 | ||
| @@ -656,14 +652,14 @@ int send_dhcp_packet(void *buffer, int buffer_size, int sock, struct sockaddr_in | |||
| 656 | return ERROR; | 652 | return ERROR; |
| 657 | 653 | ||
| 658 | return OK; | 654 | return OK; |
| 659 | } | 655 | } |
| 660 | 656 | ||
| 661 | 657 | ||
| 662 | 658 | ||
| 663 | /* receives a DHCP packet */ | 659 | /* receives a DHCP packet */ |
| 664 | int receive_dhcp_packet(void *buffer, int buffer_size, int sock, int timeout, struct sockaddr_in *address){ | 660 | int receive_dhcp_packet(void *buffer, int buffer_size, int sock, int timeout, struct sockaddr_in *address){ |
| 665 | struct timeval tv; | 661 | struct timeval tv; |
| 666 | fd_set readfds; | 662 | fd_set readfds; |
| 667 | fd_set oobfds; | 663 | fd_set oobfds; |
| 668 | int recv_result; | 664 | int recv_result; |
| 669 | socklen_t address_size; | 665 | socklen_t address_size; |
| @@ -671,88 +667,88 @@ int receive_dhcp_packet(void *buffer, int buffer_size, int sock, int timeout, st | |||
| 671 | int nfound; | 667 | int nfound; |
| 672 | 668 | ||
| 673 | 669 | ||
| 674 | /* wait for data to arrive (up time timeout) */ | 670 | /* wait for data to arrive (up time timeout) */ |
| 675 | tv.tv_sec=timeout; | 671 | tv.tv_sec=timeout; |
| 676 | tv.tv_usec=0; | 672 | tv.tv_usec=0; |
| 677 | FD_ZERO(&readfds); | 673 | FD_ZERO(&readfds); |
| 678 | FD_ZERO(&oobfds); | 674 | FD_ZERO(&oobfds); |
| 679 | FD_SET(sock,&readfds); | 675 | FD_SET(sock,&readfds); |
| 680 | FD_SET(sock,&oobfds); | 676 | FD_SET(sock,&oobfds); |
| 681 | nfound = select(sock+1,&readfds,NULL,&oobfds,&tv); | 677 | nfound = select(sock+1,&readfds,NULL,&oobfds,&tv); |
| 682 | 678 | ||
| 683 | /* make sure some data has arrived */ | 679 | /* make sure some data has arrived */ |
| 684 | if(!FD_ISSET(sock,&readfds)){ | 680 | if(!FD_ISSET(sock,&readfds)){ |
| 685 | if(verbose) | 681 | if(verbose) |
| 686 | printf(_("No (more) data received (nfound: %d)\n"), nfound); | 682 | printf(_("No (more) data received (nfound: %d)\n"), nfound); |
| 687 | return ERROR; | 683 | return ERROR; |
| 688 | } | 684 | } |
| 689 | 685 | ||
| 690 | else{ | 686 | else{ |
| 691 | bzero(&source_address,sizeof(source_address)); | 687 | bzero(&source_address,sizeof(source_address)); |
| 692 | address_size=sizeof(source_address); | 688 | address_size=sizeof(source_address); |
| 693 | recv_result=recvfrom(sock,(char *)buffer,buffer_size,0,(struct sockaddr *)&source_address,&address_size); | 689 | recv_result=recvfrom(sock,(char *)buffer,buffer_size,0,(struct sockaddr *)&source_address,&address_size); |
| 694 | if(verbose) | 690 | if(verbose) |
| 695 | printf("recv_result: %d\n",recv_result); | 691 | printf("recv_result: %d\n",recv_result); |
| 696 | 692 | ||
| 697 | if(recv_result==-1){ | 693 | if(recv_result==-1){ |
| 698 | if(verbose){ | 694 | if(verbose){ |
| 699 | printf(_("recvfrom() failed, ")); | 695 | printf(_("recvfrom() failed, ")); |
| 700 | printf("errno: (%d) -> %s\n",errno,strerror(errno)); | 696 | printf("errno: (%d) -> %s\n",errno,strerror(errno)); |
| 701 | } | 697 | } |
| 702 | return ERROR; | 698 | return ERROR; |
| 703 | } | 699 | } |
| 704 | else{ | 700 | else{ |
| 705 | if(verbose){ | 701 | if(verbose){ |
| 706 | printf(_("receive_dhcp_packet() result: %d\n"),recv_result); | 702 | printf(_("receive_dhcp_packet() result: %d\n"),recv_result); |
| 707 | printf(_("receive_dhcp_packet() source: %s\n"),inet_ntoa(source_address.sin_addr)); | 703 | printf(_("receive_dhcp_packet() source: %s\n"),inet_ntoa(source_address.sin_addr)); |
| 708 | } | 704 | } |
| 709 | 705 | ||
| 710 | memcpy(address,&source_address,sizeof(source_address)); | 706 | memcpy(address,&source_address,sizeof(source_address)); |
| 711 | return OK; | 707 | return OK; |
| 712 | } | 708 | } |
| 713 | } | 709 | } |
| 714 | 710 | ||
| 715 | return OK; | 711 | return OK; |
| 716 | } | 712 | } |
| 717 | 713 | ||
| 718 | 714 | ||
| 719 | /* creates a socket for DHCP communication */ | 715 | /* creates a socket for DHCP communication */ |
| 720 | int create_dhcp_socket(void){ | 716 | int create_dhcp_socket(void){ |
| 721 | struct sockaddr_in myname; | 717 | struct sockaddr_in myname; |
| 722 | struct ifreq interface; | 718 | struct ifreq interface; |
| 723 | int sock; | 719 | int sock; |
| 724 | int flag=1; | 720 | int flag=1; |
| 725 | 721 | ||
| 726 | /* Set up the address we're going to bind to. */ | 722 | /* Set up the address we're going to bind to. */ |
| 727 | bzero(&myname,sizeof(myname)); | 723 | bzero(&myname,sizeof(myname)); |
| 728 | myname.sin_family=AF_INET; | 724 | myname.sin_family=AF_INET; |
| 729 | /* listen to DHCP server port if we're in unicast mode */ | 725 | /* listen to DHCP server port if we're in unicast mode */ |
| 730 | myname.sin_port = htons(unicast ? DHCP_SERVER_PORT : DHCP_CLIENT_PORT); | 726 | myname.sin_port = htons(unicast ? DHCP_SERVER_PORT : DHCP_CLIENT_PORT); |
| 731 | myname.sin_addr.s_addr = unicast ? my_ip.s_addr : INADDR_ANY; | 727 | myname.sin_addr.s_addr = unicast ? my_ip.s_addr : INADDR_ANY; |
| 732 | bzero(&myname.sin_zero,sizeof(myname.sin_zero)); | 728 | bzero(&myname.sin_zero,sizeof(myname.sin_zero)); |
| 733 | 729 | ||
| 734 | /* create a socket for DHCP communications */ | 730 | /* create a socket for DHCP communications */ |
| 735 | sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP); | 731 | sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP); |
| 736 | if(sock<0){ | 732 | if(sock<0){ |
| 737 | printf(_("Error: Could not create socket!\n")); | 733 | printf(_("Error: Could not create socket!\n")); |
| 738 | exit(STATE_UNKNOWN); | 734 | exit(STATE_UNKNOWN); |
| 739 | } | 735 | } |
| 740 | 736 | ||
| 741 | if(verbose) | 737 | if(verbose) |
| 742 | printf("DHCP socket: %d\n",sock); | 738 | printf("DHCP socket: %d\n",sock); |
| 743 | 739 | ||
| 744 | /* set the reuse address flag so we don't get errors when restarting */ | 740 | /* set the reuse address flag so we don't get errors when restarting */ |
| 745 | flag=1; | 741 | flag=1; |
| 746 | if(setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(char *)&flag,sizeof(flag))<0){ | 742 | if(setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(char *)&flag,sizeof(flag))<0){ |
| 747 | printf(_("Error: Could not set reuse address option on DHCP socket!\n")); | 743 | printf(_("Error: Could not set reuse address option on DHCP socket!\n")); |
| 748 | exit(STATE_UNKNOWN); | 744 | exit(STATE_UNKNOWN); |
| 749 | } | 745 | } |
| 750 | 746 | ||
| 751 | /* set the broadcast option - we need this to listen to DHCP broadcast messages */ | 747 | /* set the broadcast option - we need this to listen to DHCP broadcast messages */ |
| 752 | if(!unicast && setsockopt(sock,SOL_SOCKET,SO_BROADCAST,(char *)&flag,sizeof flag)<0){ | 748 | if(!unicast && setsockopt(sock,SOL_SOCKET,SO_BROADCAST,(char *)&flag,sizeof flag)<0){ |
| 753 | printf(_("Error: Could not set broadcast option on DHCP socket!\n")); | 749 | printf(_("Error: Could not set broadcast option on DHCP socket!\n")); |
| 754 | exit(STATE_UNKNOWN); | 750 | exit(STATE_UNKNOWN); |
| 755 | } | 751 | } |
| 756 | 752 | ||
| 757 | /* bind socket to interface */ | 753 | /* bind socket to interface */ |
| 758 | #if defined(__linux__) | 754 | #if defined(__linux__) |
| @@ -761,21 +757,21 @@ int create_dhcp_socket(void){ | |||
| 761 | if(setsockopt(sock,SOL_SOCKET,SO_BINDTODEVICE,(char *)&interface,sizeof(interface))<0){ | 757 | if(setsockopt(sock,SOL_SOCKET,SO_BINDTODEVICE,(char *)&interface,sizeof(interface))<0){ |
| 762 | printf(_("Error: Could not bind socket to interface %s. Check your privileges...\n"),network_interface_name); | 758 | printf(_("Error: Could not bind socket to interface %s. Check your privileges...\n"),network_interface_name); |
| 763 | exit(STATE_UNKNOWN); | 759 | exit(STATE_UNKNOWN); |
| 764 | } | 760 | } |
| 765 | 761 | ||
| 766 | #else | 762 | #else |
| 767 | strncpy(interface.ifr_name,network_interface_name,IFNAMSIZ-1); | 763 | strncpy(interface.ifr_name,network_interface_name,IFNAMSIZ-1); |
| 768 | interface.ifr_name[IFNAMSIZ-1]='\0'; | 764 | interface.ifr_name[IFNAMSIZ-1]='\0'; |
| 769 | #endif | 765 | #endif |
| 770 | 766 | ||
| 771 | /* bind the socket */ | 767 | /* bind the socket */ |
| 772 | if(bind(sock,(struct sockaddr *)&myname,sizeof(myname))<0){ | 768 | if(bind(sock,(struct sockaddr *)&myname,sizeof(myname))<0){ |
| 773 | printf(_("Error: Could not bind to DHCP socket (port %d)! Check your privileges...\n"),DHCP_CLIENT_PORT); | 769 | printf(_("Error: Could not bind to DHCP socket (port %d)! Check your privileges...\n"),DHCP_CLIENT_PORT); |
| 774 | exit(STATE_UNKNOWN); | 770 | exit(STATE_UNKNOWN); |
| 775 | } | 771 | } |
| 776 | 772 | ||
| 777 | return sock; | 773 | return sock; |
| 778 | } | 774 | } |
| 779 | 775 | ||
| 780 | 776 | ||
| 781 | /* closes DHCP socket */ | 777 | /* closes DHCP socket */ |
| @@ -784,7 +780,7 @@ int close_dhcp_socket(int sock){ | |||
| 784 | close(sock); | 780 | close(sock); |
| 785 | 781 | ||
| 786 | return OK; | 782 | return OK; |
| 787 | } | 783 | } |
| 788 | 784 | ||
| 789 | 785 | ||
| 790 | /* adds a requested server address to list in memory */ | 786 | /* adds a requested server address to list in memory */ |
| @@ -796,7 +792,7 @@ int add_requested_server(struct in_addr server_address){ | |||
| 796 | return ERROR; | 792 | return ERROR; |
| 797 | 793 | ||
| 798 | new_server->server_address=server_address; | 794 | new_server->server_address=server_address; |
| 799 | new_server->answered=FALSE; | 795 | new_server->answered=false; |
| 800 | 796 | ||
| 801 | new_server->next=requested_server_list; | 797 | new_server->next=requested_server_list; |
| 802 | requested_server_list=new_server; | 798 | requested_server_list=new_server; |
| @@ -807,7 +803,7 @@ int add_requested_server(struct in_addr server_address){ | |||
| 807 | printf(_("Requested server address: %s\n"),inet_ntoa(new_server->server_address)); | 803 | printf(_("Requested server address: %s\n"),inet_ntoa(new_server->server_address)); |
| 808 | 804 | ||
| 809 | return OK; | 805 | return OK; |
| 810 | } | 806 | } |
| 811 | 807 | ||
| 812 | 808 | ||
| 813 | 809 | ||
| @@ -840,29 +836,29 @@ int add_dhcp_offer(struct in_addr source,dhcp_packet *offer_packet){ | |||
| 840 | 836 | ||
| 841 | /* get option data */ | 837 | /* get option data */ |
| 842 | switch(option_type){ | 838 | switch(option_type){ |
| 843 | case DHCP_OPTION_LEASE_TIME: | 839 | case DHCP_OPTION_LEASE_TIME: |
| 844 | memcpy(&dhcp_lease_time, &offer_packet->options[x],sizeof(dhcp_lease_time)); | 840 | memcpy(&dhcp_lease_time, &offer_packet->options[x],sizeof(dhcp_lease_time)); |
| 845 | dhcp_lease_time = ntohl(dhcp_lease_time); | 841 | dhcp_lease_time = ntohl(dhcp_lease_time); |
| 846 | break; | 842 | break; |
| 847 | case DHCP_OPTION_RENEWAL_TIME: | 843 | case DHCP_OPTION_RENEWAL_TIME: |
| 848 | memcpy(&dhcp_renewal_time, &offer_packet->options[x],sizeof(dhcp_renewal_time)); | 844 | memcpy(&dhcp_renewal_time, &offer_packet->options[x],sizeof(dhcp_renewal_time)); |
| 849 | dhcp_renewal_time = ntohl(dhcp_renewal_time); | 845 | dhcp_renewal_time = ntohl(dhcp_renewal_time); |
| 850 | break; | 846 | break; |
| 851 | case DHCP_OPTION_REBINDING_TIME: | 847 | case DHCP_OPTION_REBINDING_TIME: |
| 852 | memcpy(&dhcp_rebinding_time, &offer_packet->options[x],sizeof(dhcp_rebinding_time)); | 848 | memcpy(&dhcp_rebinding_time, &offer_packet->options[x],sizeof(dhcp_rebinding_time)); |
| 853 | dhcp_rebinding_time = ntohl(dhcp_rebinding_time); | 849 | dhcp_rebinding_time = ntohl(dhcp_rebinding_time); |
| 854 | break; | 850 | break; |
| 855 | case DHCP_OPTION_SERVER_IDENTIFIER: | 851 | case DHCP_OPTION_SERVER_IDENTIFIER: |
| 856 | memcpy(&serv_ident.s_addr, &offer_packet->options[x],sizeof(serv_ident.s_addr)); | 852 | memcpy(&serv_ident.s_addr, &offer_packet->options[x],sizeof(serv_ident.s_addr)); |
| 857 | break; | 853 | break; |
| 858 | } | 854 | } |
| 859 | 855 | ||
| 860 | /* skip option data we're ignoring */ | 856 | /* skip option data we're ignoring */ |
| 861 | if(option_type==0) /* "pad" option, see RFC 2132 (3.1) */ | 857 | if(option_type==0) /* "pad" option, see RFC 2132 (3.1) */ |
| 862 | x+=1; | 858 | x+=1; |
| 863 | else | 859 | else |
| 864 | x+=option_length; | 860 | x+=option_length; |
| 865 | } | 861 | } |
| 866 | 862 | ||
| 867 | if(verbose){ | 863 | if(verbose){ |
| 868 | if(dhcp_lease_time==DHCP_INFINITE_TIME) | 864 | if(dhcp_lease_time==DHCP_INFINITE_TIME) |
| @@ -876,7 +872,7 @@ int add_dhcp_offer(struct in_addr source,dhcp_packet *offer_packet){ | |||
| 876 | if(dhcp_rebinding_time==DHCP_INFINITE_TIME) | 872 | if(dhcp_rebinding_time==DHCP_INFINITE_TIME) |
| 877 | printf(_("Rebinding Time: Infinite\n")); | 873 | printf(_("Rebinding Time: Infinite\n")); |
| 878 | printf(_("Rebinding Time: %lu seconds\n"),(unsigned long)dhcp_rebinding_time); | 874 | printf(_("Rebinding Time: %lu seconds\n"),(unsigned long)dhcp_rebinding_time); |
| 879 | } | 875 | } |
| 880 | 876 | ||
| 881 | new_offer=(dhcp_offer *)malloc(sizeof(dhcp_offer)); | 877 | new_offer=(dhcp_offer *)malloc(sizeof(dhcp_offer)); |
| 882 | 878 | ||
| @@ -900,19 +896,20 @@ int add_dhcp_offer(struct in_addr source,dhcp_packet *offer_packet){ | |||
| 900 | new_offer->lease_time=dhcp_lease_time; | 896 | new_offer->lease_time=dhcp_lease_time; |
| 901 | new_offer->renewal_time=dhcp_renewal_time; | 897 | new_offer->renewal_time=dhcp_renewal_time; |
| 902 | new_offer->rebinding_time=dhcp_rebinding_time; | 898 | new_offer->rebinding_time=dhcp_rebinding_time; |
| 899 | new_offer->desired=false; /* exclusive mode: we'll check that in get_results */ | ||
| 903 | 900 | ||
| 904 | 901 | ||
| 905 | if(verbose){ | 902 | if(verbose){ |
| 906 | printf(_("Added offer from server @ %s"),inet_ntoa(new_offer->server_address)); | 903 | printf(_("Added offer from server @ %s"),inet_ntoa(new_offer->server_address)); |
| 907 | printf(_(" of IP address %s\n"),inet_ntoa(new_offer->offered_address)); | 904 | printf(_(" of IP address %s\n"),inet_ntoa(new_offer->offered_address)); |
| 908 | } | 905 | } |
| 909 | 906 | ||
| 910 | /* add new offer to head of list */ | 907 | /* add new offer to head of list */ |
| 911 | new_offer->next=dhcp_offer_list; | 908 | new_offer->next=dhcp_offer_list; |
| 912 | dhcp_offer_list=new_offer; | 909 | dhcp_offer_list=new_offer; |
| 913 | 910 | ||
| 914 | return OK; | 911 | return OK; |
| 915 | } | 912 | } |
| 916 | 913 | ||
| 917 | 914 | ||
| 918 | /* frees memory allocated to DHCP OFFER list */ | 915 | /* frees memory allocated to DHCP OFFER list */ |
| @@ -923,10 +920,10 @@ int free_dhcp_offer_list(void){ | |||
| 923 | for(this_offer=dhcp_offer_list;this_offer!=NULL;this_offer=next_offer){ | 920 | for(this_offer=dhcp_offer_list;this_offer!=NULL;this_offer=next_offer){ |
| 924 | next_offer=this_offer->next; | 921 | next_offer=this_offer->next; |
| 925 | free(this_offer); | 922 | free(this_offer); |
| 926 | } | 923 | } |
| 927 | 924 | ||
| 928 | return OK; | 925 | return OK; |
| 929 | } | 926 | } |
| 930 | 927 | ||
| 931 | 928 | ||
| 932 | /* frees memory allocated to requested server list */ | 929 | /* frees memory allocated to requested server list */ |
| @@ -937,20 +934,20 @@ int free_requested_server_list(void){ | |||
| 937 | for(this_server=requested_server_list;this_server!=NULL;this_server=next_server){ | 934 | for(this_server=requested_server_list;this_server!=NULL;this_server=next_server){ |
| 938 | next_server=this_server->next; | 935 | next_server=this_server->next; |
| 939 | free(this_server); | 936 | free(this_server); |
| 940 | } | 937 | } |
| 941 | 938 | ||
| 942 | return OK; | 939 | return OK; |
| 943 | } | 940 | } |
| 944 | 941 | ||
| 945 | 942 | ||
| 946 | /* gets state and plugin output to return */ | 943 | /* gets state and plugin output to return */ |
| 947 | int get_results(void){ | 944 | int get_results(void){ |
| 948 | dhcp_offer *temp_offer; | 945 | dhcp_offer *temp_offer, *undesired_offer=NULL; |
| 949 | requested_server *temp_server; | 946 | requested_server *temp_server; |
| 950 | int result; | 947 | int result; |
| 951 | u_int32_t max_lease_time=0; | 948 | uint32_t max_lease_time=0; |
| 952 | 949 | ||
| 953 | received_requested_address=FALSE; | 950 | received_requested_address=false; |
| 954 | 951 | ||
| 955 | /* checks responses from requested servers */ | 952 | /* checks responses from requested servers */ |
| 956 | requested_responses=0; | 953 | requested_responses=0; |
| @@ -966,7 +963,7 @@ int get_results(void){ | |||
| 966 | 963 | ||
| 967 | /* see if we got the address we requested */ | 964 | /* see if we got the address we requested */ |
| 968 | if(!memcmp(&requested_address,&temp_offer->offered_address,sizeof(requested_address))) | 965 | if(!memcmp(&requested_address,&temp_offer->offered_address,sizeof(requested_address))) |
| 969 | received_requested_address=TRUE; | 966 | received_requested_address=true; |
| 970 | 967 | ||
| 971 | /* see if the servers we wanted a response from talked to us or not */ | 968 | /* see if the servers we wanted a response from talked to us or not */ |
| 972 | if(!memcmp(&temp_offer->server_address,&temp_server->server_address,sizeof(temp_server->server_address))){ | 969 | if(!memcmp(&temp_offer->server_address,&temp_server->server_address,sizeof(temp_server->server_address))){ |
| @@ -976,16 +973,24 @@ int get_results(void){ | |||
| 976 | if(temp_server->answered) | 973 | if(temp_server->answered) |
| 977 | printf(_(" (duplicate)")); | 974 | printf(_(" (duplicate)")); |
| 978 | printf(_("\n")); | 975 | printf(_("\n")); |
| 979 | } | 976 | } |
| 980 | if(temp_server->answered == FALSE){ | 977 | if(!temp_server->answered){ |
| 981 | requested_responses++; | 978 | requested_responses++; |
| 982 | temp_server->answered=TRUE; | 979 | temp_server->answered=true; |
| 983 | } | 980 | temp_offer->desired=true; |
| 984 | } | 981 | } |
| 985 | } | 982 | } |
| 986 | } | 983 | } |
| 984 | } | ||
| 987 | 985 | ||
| 988 | } | 986 | /* exclusive mode: check for undesired offers */ |
| 987 | for(temp_offer=dhcp_offer_list;temp_offer!=NULL;temp_offer=temp_offer->next) { | ||
| 988 | if (!temp_offer->desired) { | ||
| 989 | undesired_offer=temp_offer; /* Checks only for the first undesired offer */ | ||
| 990 | break; /* no further checks needed */ | ||
| 991 | } | ||
| 992 | } | ||
| 993 | } | ||
| 989 | 994 | ||
| 990 | /* else check and see if we got our requested address from any server */ | 995 | /* else check and see if we got our requested address from any server */ |
| 991 | else{ | 996 | else{ |
| @@ -998,9 +1003,9 @@ int get_results(void){ | |||
| 998 | 1003 | ||
| 999 | /* see if we got the address we requested */ | 1004 | /* see if we got the address we requested */ |
| 1000 | if(!memcmp(&requested_address,&temp_offer->offered_address,sizeof(requested_address))) | 1005 | if(!memcmp(&requested_address,&temp_offer->offered_address,sizeof(requested_address))) |
| 1001 | received_requested_address=TRUE; | 1006 | received_requested_address=true; |
| 1002 | } | 1007 | } |
| 1003 | } | 1008 | } |
| 1004 | 1009 | ||
| 1005 | result=STATE_OK; | 1010 | result=STATE_OK; |
| 1006 | if(valid_responses==0) | 1011 | if(valid_responses==0) |
| @@ -1009,9 +1014,12 @@ int get_results(void){ | |||
| 1009 | result=STATE_CRITICAL; | 1014 | result=STATE_CRITICAL; |
| 1010 | else if(requested_responses<requested_servers) | 1015 | else if(requested_responses<requested_servers) |
| 1011 | result=STATE_WARNING; | 1016 | result=STATE_WARNING; |
| 1012 | else if(request_specific_address==TRUE && received_requested_address==FALSE) | 1017 | else if(request_specific_address && !received_requested_address) |
| 1013 | result=STATE_WARNING; | 1018 | result=STATE_WARNING; |
| 1014 | 1019 | ||
| 1020 | if(exclusive && undesired_offer) | ||
| 1021 | result=STATE_CRITICAL; | ||
| 1022 | |||
| 1015 | if(result==0) /* garrett honeycutt 2005 */ | 1023 | if(result==0) /* garrett honeycutt 2005 */ |
| 1016 | printf("OK: "); | 1024 | printf("OK: "); |
| 1017 | else if(result==1) | 1025 | else if(result==1) |
| @@ -1025,15 +1033,22 @@ int get_results(void){ | |||
| 1025 | if(dhcp_offer_list==NULL){ | 1033 | if(dhcp_offer_list==NULL){ |
| 1026 | printf(_("No DHCPOFFERs were received.\n")); | 1034 | printf(_("No DHCPOFFERs were received.\n")); |
| 1027 | return result; | 1035 | return result; |
| 1028 | } | 1036 | } |
| 1029 | 1037 | ||
| 1030 | printf(_("Received %d DHCPOFFER(s)"),valid_responses); | 1038 | printf(_("Received %d DHCPOFFER(s)"),valid_responses); |
| 1031 | 1039 | ||
| 1040 | |||
| 1041 | if(exclusive && undesired_offer){ | ||
| 1042 | printf(_(", Rogue DHCP Server detected! Server %s"),inet_ntoa(undesired_offer->server_address)); | ||
| 1043 | printf(_(" offered %s \n"),inet_ntoa(undesired_offer->offered_address)); | ||
| 1044 | return result; | ||
| 1045 | } | ||
| 1046 | |||
| 1032 | if(requested_servers>0) | 1047 | if(requested_servers>0) |
| 1033 | printf(_(", %s%d of %d requested servers responded"),((requested_responses<requested_servers) && requested_responses>0)?"only ":"",requested_responses,requested_servers); | 1048 | printf(_(", %s%d of %d requested servers responded"),((requested_responses<requested_servers) && requested_responses>0)?"only ":"",requested_responses,requested_servers); |
| 1034 | 1049 | ||
| 1035 | if(request_specific_address==TRUE) | 1050 | if(request_specific_address) |
| 1036 | printf(_(", requested address (%s) was %soffered"),inet_ntoa(requested_address),(received_requested_address==TRUE)?"":_("not ")); | 1051 | printf(_(", requested address (%s) was %soffered"),inet_ntoa(requested_address),(received_requested_address)?"":_("not ")); |
| 1037 | 1052 | ||
| 1038 | printf(_(", max lease time = ")); | 1053 | printf(_(", max lease time = ")); |
| 1039 | if(max_lease_time==DHCP_INFINITE_TIME) | 1054 | if(max_lease_time==DHCP_INFINITE_TIME) |
| @@ -1044,17 +1059,15 @@ int get_results(void){ | |||
| 1044 | printf(".\n"); | 1059 | printf(".\n"); |
| 1045 | 1060 | ||
| 1046 | return result; | 1061 | return result; |
| 1047 | } | 1062 | } |
| 1048 | 1063 | ||
| 1049 | 1064 | ||
| 1050 | /* process command-line arguments */ | 1065 | /* process command-line arguments */ |
| 1051 | int process_arguments(int argc, char **argv){ | 1066 | int process_arguments(int argc, char **argv){ |
| 1052 | int arg_index; | ||
| 1053 | |||
| 1054 | if(argc<1) | 1067 | if(argc<1) |
| 1055 | return ERROR; | 1068 | return ERROR; |
| 1056 | 1069 | ||
| 1057 | arg_index = call_getopt(argc,argv); | 1070 | call_getopt(argc,argv); |
| 1058 | return validate_arguments(argc); | 1071 | return validate_arguments(argc); |
| 1059 | } | 1072 | } |
| 1060 | 1073 | ||
| @@ -1071,87 +1084,89 @@ int call_getopt(int argc, char **argv){ | |||
| 1071 | {"interface", required_argument,0,'i'}, | 1084 | {"interface", required_argument,0,'i'}, |
| 1072 | {"mac", required_argument,0,'m'}, | 1085 | {"mac", required_argument,0,'m'}, |
| 1073 | {"unicast", no_argument, 0,'u'}, | 1086 | {"unicast", no_argument, 0,'u'}, |
| 1087 | {"exclusive", no_argument, 0,'x'}, | ||
| 1074 | {"verbose", no_argument, 0,'v'}, | 1088 | {"verbose", no_argument, 0,'v'}, |
| 1075 | {"version", no_argument, 0,'V'}, | 1089 | {"version", no_argument, 0,'V'}, |
| 1076 | {"help", no_argument, 0,'h'}, | 1090 | {"help", no_argument, 0,'h'}, |
| 1077 | {0,0,0,0} | 1091 | {0,0,0,0} |
| 1078 | }; | 1092 | }; |
| 1079 | 1093 | ||
| 1080 | while(1){ | 1094 | int c=0; |
| 1081 | int c=0; | 1095 | while(true){ |
| 1082 | 1096 | c=getopt_long(argc,argv,"+hVvxt:s:r:t:i:m:u",long_options,&option_index); | |
| 1083 | c=getopt_long(argc,argv,"+hVvt:s:r:t:i:m:u",long_options,&option_index); | ||
| 1084 | 1097 | ||
| 1085 | if(c==-1||c==EOF||c==1) | 1098 | if(c==-1||c==EOF||c==1) |
| 1086 | break; | 1099 | break; |
| 1087 | 1100 | ||
| 1088 | switch(c){ | 1101 | switch(c){ |
| 1089 | 1102 | ||
| 1090 | case 's': /* DHCP server address */ | 1103 | case 's': /* DHCP server address */ |
| 1091 | resolve_host(optarg,&dhcp_ip); | 1104 | resolve_host(optarg,&dhcp_ip); |
| 1092 | add_requested_server(dhcp_ip); | 1105 | add_requested_server(dhcp_ip); |
| 1093 | break; | 1106 | break; |
| 1094 | 1107 | ||
| 1095 | case 'r': /* address we are requested from DHCP servers */ | 1108 | case 'r': /* address we are requested from DHCP servers */ |
| 1096 | resolve_host(optarg,&requested_address); | 1109 | resolve_host(optarg,&requested_address); |
| 1097 | request_specific_address=TRUE; | 1110 | request_specific_address=true; |
| 1098 | break; | 1111 | break; |
| 1099 | 1112 | ||
| 1100 | case 't': /* timeout */ | 1113 | case 't': /* timeout */ |
| 1101 | 1114 | ||
| 1102 | /* | 1115 | /* |
| 1103 | if(is_intnonneg(optarg)) | 1116 | if(is_intnonneg(optarg)) |
| 1104 | */ | 1117 | */ |
| 1105 | if(atoi(optarg)>0) | 1118 | if(atoi(optarg)>0) |
| 1106 | dhcpoffer_timeout=atoi(optarg); | 1119 | dhcpoffer_timeout=atoi(optarg); |
| 1107 | /* | 1120 | /* |
| 1108 | else | 1121 | else |
| 1109 | usage("Time interval must be a nonnegative integer\n"); | 1122 | usage("Time interval must be a nonnegative integer\n"); |
| 1110 | */ | 1123 | */ |
| 1111 | break; | 1124 | break; |
| 1112 | 1125 | ||
| 1113 | case 'm': /* MAC address */ | 1126 | case 'm': /* MAC address */ |
| 1114 | 1127 | ||
| 1115 | if((user_specified_mac=mac_aton(optarg)) == NULL) | 1128 | if((user_specified_mac=mac_aton(optarg)) == NULL) |
| 1116 | usage("Cannot parse MAC address.\n"); | 1129 | usage("Cannot parse MAC address.\n"); |
| 1117 | if(verbose) | 1130 | if(verbose) |
| 1118 | print_hardware_address(user_specified_mac); | 1131 | print_hardware_address(user_specified_mac); |
| 1119 | 1132 | ||
| 1120 | break; | 1133 | break; |
| 1121 | 1134 | ||
| 1122 | case 'i': /* interface name */ | 1135 | case 'i': /* interface name */ |
| 1123 | 1136 | ||
| 1124 | strncpy(network_interface_name,optarg,sizeof(network_interface_name)-1); | 1137 | strncpy(network_interface_name,optarg,sizeof(network_interface_name)-1); |
| 1125 | network_interface_name[sizeof(network_interface_name)-1]='\x0'; | 1138 | network_interface_name[sizeof(network_interface_name)-1]='\x0'; |
| 1126 | 1139 | ||
| 1127 | break; | 1140 | break; |
| 1128 | 1141 | ||
| 1129 | case 'u': /* unicast testing */ | 1142 | case 'u': /* unicast testing */ |
| 1130 | unicast=1; | 1143 | unicast=true; |
| 1131 | break; | 1144 | break; |
| 1132 | 1145 | case 'x': /* exclusive testing aka "rogue DHCP server detection" */ | |
| 1133 | case 'V': /* version */ | 1146 | exclusive=true; |
| 1134 | print_revision(progname, NP_VERSION); | 1147 | break; |
| 1135 | exit(STATE_UNKNOWN); | 1148 | |
| 1136 | 1149 | case 'V': /* version */ | |
| 1137 | case 'h': /* help */ | 1150 | print_revision(progname, NP_VERSION); |
| 1138 | print_help(); | 1151 | exit(STATE_UNKNOWN); |
| 1139 | exit(STATE_UNKNOWN); | 1152 | |
| 1140 | 1153 | case 'h': /* help */ | |
| 1141 | case 'v': /* verbose */ | 1154 | print_help(); |
| 1142 | verbose=1; | 1155 | exit(STATE_UNKNOWN); |
| 1143 | break; | 1156 | |
| 1144 | 1157 | case 'v': /* verbose */ | |
| 1145 | case '?': /* help */ | 1158 | verbose=1; |
| 1146 | usage5 (); | 1159 | break; |
| 1147 | break; | 1160 | case '?': /* help */ |
| 1148 | 1161 | usage5 (); | |
| 1149 | default: | 1162 | break; |
| 1150 | break; | 1163 | |
| 1151 | } | 1164 | default: |
| 1152 | } | 1165 | break; |
| 1166 | } | ||
| 1167 | } | ||
| 1153 | return optind; | 1168 | return optind; |
| 1154 | } | 1169 | } |
| 1155 | 1170 | ||
| 1156 | 1171 | ||
| 1157 | int validate_arguments(int argc){ | 1172 | int validate_arguments(int argc){ |
| @@ -1178,21 +1193,21 @@ static int get_msg(int fd){ | |||
| 1178 | if(res < 0){ | 1193 | if(res < 0){ |
| 1179 | if(errno == EINTR){ | 1194 | if(errno == EINTR){ |
| 1180 | return(GOT_INTR); | 1195 | return(GOT_INTR); |
| 1181 | } | 1196 | } |
| 1182 | else{ | 1197 | else{ |
| 1183 | printf("%s\n", "get_msg FAILED."); | 1198 | printf("%s\n", "get_msg FAILED."); |
| 1184 | return(GOT_ERR); | 1199 | return(GOT_ERR); |
| 1185 | } | ||
| 1186 | } | 1200 | } |
| 1201 | } | ||
| 1187 | if(ctl.len > 0){ | 1202 | if(ctl.len > 0){ |
| 1188 | ret |= GOT_CTRL; | 1203 | ret |= GOT_CTRL; |
| 1189 | } | 1204 | } |
| 1190 | if(dat.len > 0){ | 1205 | if(dat.len > 0){ |
| 1191 | ret |= GOT_DATA; | 1206 | ret |= GOT_DATA; |
| 1192 | } | 1207 | } |
| 1193 | 1208 | ||
| 1194 | return(ret); | 1209 | return(ret); |
| 1195 | } | 1210 | } |
| 1196 | 1211 | ||
| 1197 | /* verify that dl_primitive in ctl_area = prim */ | 1212 | /* verify that dl_primitive in ctl_area = prim */ |
| 1198 | static int check_ctrl(int prim){ | 1213 | static int check_ctrl(int prim){ |
| @@ -1201,10 +1216,10 @@ static int check_ctrl(int prim){ | |||
| 1201 | if(err_ack->dl_primitive != prim){ | 1216 | if(err_ack->dl_primitive != prim){ |
| 1202 | printf(_("Error: DLPI stream API failed to get MAC in check_ctrl: %s.\n"), strerror(errno)); | 1217 | printf(_("Error: DLPI stream API failed to get MAC in check_ctrl: %s.\n"), strerror(errno)); |
| 1203 | exit(STATE_UNKNOWN); | 1218 | exit(STATE_UNKNOWN); |
| 1204 | } | 1219 | } |
| 1205 | 1220 | ||
| 1206 | return 0; | 1221 | return 0; |
| 1207 | } | 1222 | } |
| 1208 | 1223 | ||
| 1209 | /* put a control message on a stream */ | 1224 | /* put a control message on a stream */ |
| 1210 | static int put_ctrl(int fd, int len, int pri){ | 1225 | static int put_ctrl(int fd, int len, int pri){ |
| @@ -1213,10 +1228,10 @@ static int put_ctrl(int fd, int len, int pri){ | |||
| 1213 | if(putmsg(fd, &ctl, 0, pri) < 0){ | 1228 | if(putmsg(fd, &ctl, 0, pri) < 0){ |
| 1214 | printf(_("Error: DLPI stream API failed to get MAC in put_ctrl/putmsg(): %s.\n"), strerror(errno)); | 1229 | printf(_("Error: DLPI stream API failed to get MAC in put_ctrl/putmsg(): %s.\n"), strerror(errno)); |
| 1215 | exit(STATE_UNKNOWN); | 1230 | exit(STATE_UNKNOWN); |
| 1216 | } | 1231 | } |
| 1217 | 1232 | ||
| 1218 | return 0; | 1233 | return 0; |
| 1219 | } | 1234 | } |
| 1220 | 1235 | ||
| 1221 | /* put a control + data message on a stream */ | 1236 | /* put a control + data message on a stream */ |
| 1222 | static int put_both(int fd, int clen, int dlen, int pri){ | 1237 | static int put_both(int fd, int clen, int dlen, int pri){ |
| @@ -1226,10 +1241,10 @@ static int put_both(int fd, int clen, int dlen, int pri){ | |||
| 1226 | if(putmsg(fd, &ctl, &dat, pri) < 0){ | 1241 | if(putmsg(fd, &ctl, &dat, pri) < 0){ |
| 1227 | printf(_("Error: DLPI stream API failed to get MAC in put_both/putmsg().\n"), strerror(errno)); | 1242 | printf(_("Error: DLPI stream API failed to get MAC in put_both/putmsg().\n"), strerror(errno)); |
| 1228 | exit(STATE_UNKNOWN); | 1243 | exit(STATE_UNKNOWN); |
| 1229 | } | 1244 | } |
| 1230 | 1245 | ||
| 1231 | return 0; | 1246 | return 0; |
| 1232 | } | 1247 | } |
| 1233 | 1248 | ||
| 1234 | /* open file descriptor and attach */ | 1249 | /* open file descriptor and attach */ |
| 1235 | static int dl_open(const char *dev, int unit, int *fd){ | 1250 | static int dl_open(const char *dev, int unit, int *fd){ |
| @@ -1238,13 +1253,13 @@ static int dl_open(const char *dev, int unit, int *fd){ | |||
| 1238 | if((*fd = open(dev, O_RDWR)) == -1){ | 1253 | if((*fd = open(dev, O_RDWR)) == -1){ |
| 1239 | printf(_("Error: DLPI stream API failed to get MAC in dl_attach_req/open(%s..): %s.\n"), dev, strerror(errno)); | 1254 | printf(_("Error: DLPI stream API failed to get MAC in dl_attach_req/open(%s..): %s.\n"), dev, strerror(errno)); |
| 1240 | exit(STATE_UNKNOWN); | 1255 | exit(STATE_UNKNOWN); |
| 1241 | } | 1256 | } |
| 1242 | attach_req->dl_primitive = DL_ATTACH_REQ; | 1257 | attach_req->dl_primitive = DL_ATTACH_REQ; |
| 1243 | attach_req->dl_ppa = unit; | 1258 | attach_req->dl_ppa = unit; |
| 1244 | put_ctrl(*fd, sizeof(dl_attach_req_t), 0); | 1259 | put_ctrl(*fd, sizeof(dl_attach_req_t), 0); |
| 1245 | get_msg(*fd); | 1260 | get_msg(*fd); |
| 1246 | return check_ctrl(DL_OK_ACK); | 1261 | return check_ctrl(DL_OK_ACK); |
| 1247 | } | 1262 | } |
| 1248 | 1263 | ||
| 1249 | /* send DL_BIND_REQ */ | 1264 | /* send DL_BIND_REQ */ |
| 1250 | static int dl_bind(int fd, int sap, u_char *addr){ | 1265 | static int dl_bind(int fd, int sap, u_char *addr){ |
| @@ -1262,12 +1277,12 @@ static int dl_bind(int fd, int sap, u_char *addr){ | |||
| 1262 | if (GOT_ERR == check_ctrl(DL_BIND_ACK)){ | 1277 | if (GOT_ERR == check_ctrl(DL_BIND_ACK)){ |
| 1263 | printf(_("Error: DLPI stream API failed to get MAC in dl_bind/check_ctrl(): %s.\n"), strerror(errno)); | 1278 | printf(_("Error: DLPI stream API failed to get MAC in dl_bind/check_ctrl(): %s.\n"), strerror(errno)); |
| 1264 | exit(STATE_UNKNOWN); | 1279 | exit(STATE_UNKNOWN); |
| 1265 | } | 1280 | } |
| 1266 | bcopy((u_char *)bind_ack + bind_ack->dl_addr_offset, addr, | 1281 | bcopy((u_char *)bind_ack + bind_ack->dl_addr_offset, addr, |
| 1267 | bind_ack->dl_addr_length); | 1282 | bind_ack->dl_addr_length); |
| 1268 | 1283 | ||
| 1269 | return 0; | 1284 | return 0; |
| 1270 | } | 1285 | } |
| 1271 | 1286 | ||
| 1272 | /*********************************************************************** | 1287 | /*********************************************************************** |
| 1273 | * interface: | 1288 | * interface: |
| @@ -1286,15 +1301,15 @@ long mac_addr_dlpi( const char *dev, int unit, u_char *addr){ | |||
| 1286 | u_char mac_addr[25]; | 1301 | u_char mac_addr[25]; |
| 1287 | 1302 | ||
| 1288 | if(GOT_ERR != dl_open(dev, unit, &fd)){ | 1303 | if(GOT_ERR != dl_open(dev, unit, &fd)){ |
| 1289 | if(GOT_ERR != dl_bind(fd, INSAP, mac_addr)){ | 1304 | if(GOT_ERR != dl_bind(fd, INSAP, mac_addr)){ |
| 1290 | bcopy( mac_addr, addr, 6); | 1305 | bcopy( mac_addr, addr, 6); |
| 1291 | return 0; | 1306 | return 0; |
| 1292 | } | ||
| 1293 | } | 1307 | } |
| 1294 | close(fd); | 1308 | } |
| 1309 | close(fd); | ||
| 1295 | 1310 | ||
| 1296 | return -1; | 1311 | return -1; |
| 1297 | } | 1312 | } |
| 1298 | 1313 | ||
| 1299 | /* Kompf 2000-2003 */ | 1314 | /* Kompf 2000-2003 */ |
| 1300 | #endif | 1315 | #endif |
| @@ -1311,7 +1326,7 @@ void resolve_host(const char *in,struct in_addr *out){ | |||
| 1311 | 1326 | ||
| 1312 | memcpy(out,&((struct sockaddr_in *)ai->ai_addr)->sin_addr,sizeof(*out)); | 1327 | memcpy(out,&((struct sockaddr_in *)ai->ai_addr)->sin_addr,sizeof(*out)); |
| 1313 | freeaddrinfo(ai); | 1328 | freeaddrinfo(ai); |
| 1314 | } | 1329 | } |
| 1315 | 1330 | ||
| 1316 | 1331 | ||
| 1317 | /* parse MAC address string, return 6 bytes (unterminated) or NULL */ | 1332 | /* parse MAC address string, return 6 bytes (unterminated) or NULL */ |
| @@ -1330,10 +1345,10 @@ unsigned char *mac_aton(const char *string){ | |||
| 1330 | result[j]=strtol(tmp,(char **)NULL,16); | 1345 | result[j]=strtol(tmp,(char **)NULL,16); |
| 1331 | i++; | 1346 | i++; |
| 1332 | j++; | 1347 | j++; |
| 1333 | } | 1348 | } |
| 1334 | 1349 | ||
| 1335 | return (j==6) ? result : NULL; | 1350 | return (j==6) ? result : NULL; |
| 1336 | } | 1351 | } |
| 1337 | 1352 | ||
| 1338 | 1353 | ||
| 1339 | void print_hardware_address(const unsigned char *address){ | 1354 | void print_hardware_address(const unsigned char *address){ |
| @@ -1344,7 +1359,7 @@ void print_hardware_address(const unsigned char *address){ | |||
| 1344 | printf("%2.2x:", address[i]); | 1359 | printf("%2.2x:", address[i]); |
| 1345 | printf("%2.2x", address[i]); | 1360 | printf("%2.2x", address[i]); |
| 1346 | putchar('\n'); | 1361 | putchar('\n'); |
| 1347 | } | 1362 | } |
| 1348 | 1363 | ||
| 1349 | 1364 | ||
| 1350 | /* print usage help */ | 1365 | /* print usage help */ |
| @@ -1357,7 +1372,7 @@ void print_help(void){ | |||
| 1357 | 1372 | ||
| 1358 | printf("%s\n", _("This plugin tests the availability of DHCP servers on a network.")); | 1373 | printf("%s\n", _("This plugin tests the availability of DHCP servers on a network.")); |
| 1359 | 1374 | ||
| 1360 | printf ("\n\n"); | 1375 | printf ("\n\n"); |
| 1361 | 1376 | ||
| 1362 | print_usage(); | 1377 | print_usage(); |
| 1363 | 1378 | ||
| @@ -1367,32 +1382,31 @@ void print_help(void){ | |||
| 1367 | printf (UT_VERBOSE); | 1382 | printf (UT_VERBOSE); |
| 1368 | 1383 | ||
| 1369 | printf (" %s\n", "-s, --serverip=IPADDRESS"); | 1384 | printf (" %s\n", "-s, --serverip=IPADDRESS"); |
| 1370 | printf (" %s\n", _("IP address of DHCP server that we must hear from")); | 1385 | printf (" %s\n", _("IP address of DHCP server that we must hear from")); |
| 1371 | printf (" %s\n", "-r, --requestedip=IPADDRESS"); | 1386 | printf (" %s\n", "-r, --requestedip=IPADDRESS"); |
| 1372 | printf (" %s\n", _("IP address that should be offered by at least one DHCP server")); | 1387 | printf (" %s\n", _("IP address that should be offered by at least one DHCP server")); |
| 1373 | printf (" %s\n", "-t, --timeout=INTEGER"); | 1388 | printf (" %s\n", "-t, --timeout=INTEGER"); |
| 1374 | printf (" %s\n", _("Seconds to wait for DHCPOFFER before timeout occurs")); | 1389 | printf (" %s\n", _("Seconds to wait for DHCPOFFER before timeout occurs")); |
| 1375 | printf (" %s\n", "-i, --interface=STRING"); | 1390 | printf (" %s\n", "-i, --interface=STRING"); |
| 1376 | printf (" %s\n", _("Interface to to use for listening (i.e. eth0)")); | 1391 | printf (" %s\n", _("Interface to to use for listening (i.e. eth0)")); |
| 1377 | printf (" %s\n", "-m, --mac=STRING"); | 1392 | printf (" %s\n", "-m, --mac=STRING"); |
| 1378 | printf (" %s\n", _("MAC address to use in the DHCP request")); | 1393 | printf (" %s\n", _("MAC address to use in the DHCP request")); |
| 1379 | printf (" %s\n", "-u, --unicast"); | 1394 | printf (" %s\n", "-u, --unicast"); |
| 1380 | printf (" %s\n", _("Unicast testing: mimic a DHCP relay, requires -s")); | 1395 | printf (" %s\n", _("Unicast testing: mimic a DHCP relay, requires -s")); |
| 1381 | 1396 | printf (" %s\n", "-x, --exclusive"); | |
| 1382 | printf (UT_SUPPORT); | 1397 | printf (" %s\n", _("Only requested DHCP server may response (rogue DHCP server detection), requires -s")); |
| 1398 | |||
| 1399 | printf (UT_SUPPORT); | ||
| 1383 | return; | 1400 | return; |
| 1384 | } | 1401 | } |
| 1385 | 1402 | ||
| 1386 | 1403 | ||
| 1387 | void | 1404 | void |
| 1388 | print_usage(void){ | 1405 | print_usage(void){ |
| 1389 | 1406 | ||
| 1390 | printf ("%s\n", _("Usage:")); | 1407 | printf ("%s\n", _("Usage:")); |
| 1391 | printf (" %s [-v] [-u] [-s serverip] [-r requestedip] [-t timeout]\n",progname); | 1408 | printf (" %s [-v] [-u] [-x] [-s serverip] [-r requestedip] [-t timeout]\n",progname); |
| 1392 | printf (" [-i interface] [-m mac]\n"); | 1409 | printf (" [-i interface] [-m mac]\n"); |
| 1393 | 1410 | ||
| 1394 | return; | 1411 | return; |
| 1395 | } | 1412 | } |
| 1396 | |||
| 1397 | |||
| 1398 | |||
diff --git a/plugins-root/check_icmp.c b/plugins-root/check_icmp.c index 1d47e9fc..f788d428 100644 --- a/plugins-root/check_icmp.c +++ b/plugins-root/check_icmp.c | |||
| @@ -43,7 +43,7 @@ const char *copyright = "2005-2008"; | |||
| 43 | const char *email = "devel@monitoring-plugins.org"; | 43 | const char *email = "devel@monitoring-plugins.org"; |
| 44 | 44 | ||
| 45 | /** Monitoring Plugins basic includes */ | 45 | /** Monitoring Plugins basic includes */ |
| 46 | #include "common.h" | 46 | #include "../plugins/common.h" |
| 47 | #include "netutils.h" | 47 | #include "netutils.h" |
| 48 | #include "utils.h" | 48 | #include "utils.h" |
| 49 | 49 | ||
| @@ -109,18 +109,35 @@ typedef struct rta_host { | |||
| 109 | unsigned char icmp_type, icmp_code; /* type and code from errors */ | 109 | unsigned char icmp_type, icmp_code; /* type and code from errors */ |
| 110 | unsigned short flags; /* control/status flags */ | 110 | unsigned short flags; /* control/status flags */ |
| 111 | double rta; /* measured RTA */ | 111 | double rta; /* measured RTA */ |
| 112 | int rta_status; // check result for RTA checks | ||
| 112 | double rtmax; /* max rtt */ | 113 | double rtmax; /* max rtt */ |
| 113 | double rtmin; /* min rtt */ | 114 | double rtmin; /* min rtt */ |
| 115 | double jitter; /* measured jitter */ | ||
| 116 | int jitter_status; // check result for Jitter checks | ||
| 117 | double jitter_max; /* jitter rtt maximum */ | ||
| 118 | double jitter_min; /* jitter rtt minimum */ | ||
| 119 | double EffectiveLatency; | ||
| 120 | double mos; /* Mean opnion score */ | ||
| 121 | int mos_status; // check result for MOS checks | ||
| 122 | double score; /* score */ | ||
| 123 | int score_status; // check result for score checks | ||
| 124 | u_int last_tdiff; | ||
| 125 | u_int last_icmp_seq; /* Last ICMP_SEQ to check out of order pkts */ | ||
| 114 | unsigned char pl; /* measured packet loss */ | 126 | unsigned char pl; /* measured packet loss */ |
| 127 | int pl_status; // check result for packet loss checks | ||
| 115 | struct rta_host *next; /* linked list */ | 128 | struct rta_host *next; /* linked list */ |
| 129 | int order_status; // check result for packet order checks | ||
| 116 | } rta_host; | 130 | } rta_host; |
| 117 | 131 | ||
| 118 | #define FLAG_LOST_CAUSE 0x01 /* decidedly dead target. */ | 132 | #define FLAG_LOST_CAUSE 0x01 /* decidedly dead target. */ |
| 119 | 133 | ||
| 120 | /* threshold structure. all values are maximum allowed, exclusive */ | 134 | /* threshold structure. all values are maximum allowed, exclusive */ |
| 121 | typedef struct threshold { | 135 | typedef struct threshold { |
| 122 | unsigned char pl; /* max allowed packet loss in percent */ | 136 | unsigned char pl; /* max allowed packet loss in percent */ |
| 123 | unsigned int rta; /* roundtrip time average, microseconds */ | 137 | unsigned int rta; /* roundtrip time average, microseconds */ |
| 138 | double jitter; /* jitter time average, microseconds */ | ||
| 139 | double mos; /* MOS */ | ||
| 140 | double score; /* Score */ | ||
| 124 | } threshold; | 141 | } threshold; |
| 125 | 142 | ||
| 126 | /* the data structure */ | 143 | /* the data structure */ |
| @@ -159,6 +176,16 @@ typedef union icmp_packet { | |||
| 159 | #define MODE_ALL 2 | 176 | #define MODE_ALL 2 |
| 160 | #define MODE_ICMP 3 | 177 | #define MODE_ICMP 3 |
| 161 | 178 | ||
| 179 | enum enum_threshold_mode { | ||
| 180 | const_rta_mode, | ||
| 181 | const_packet_loss_mode, | ||
| 182 | const_jitter_mode, | ||
| 183 | const_mos_mode, | ||
| 184 | const_score_mode | ||
| 185 | }; | ||
| 186 | |||
| 187 | typedef enum enum_threshold_mode threshold_mode; | ||
| 188 | |||
| 162 | /* the different ping types we can do | 189 | /* the different ping types we can do |
| 163 | * TODO: investigate ARP ping as well */ | 190 | * TODO: investigate ARP ping as well */ |
| 164 | #define HAVE_ICMP 1 | 191 | #define HAVE_ICMP 1 |
| @@ -188,6 +215,8 @@ static int wait_for_reply(int, u_int); | |||
| 188 | static int recvfrom_wto(int, void *, unsigned int, struct sockaddr *, u_int *, struct timeval*); | 215 | static int recvfrom_wto(int, void *, unsigned int, struct sockaddr *, u_int *, struct timeval*); |
| 189 | static int send_icmp_ping(int, struct rta_host *); | 216 | static int send_icmp_ping(int, struct rta_host *); |
| 190 | static int get_threshold(char *str, threshold *th); | 217 | static int get_threshold(char *str, threshold *th); |
| 218 | static bool get_threshold2(char *str, size_t length, threshold *, threshold *, threshold_mode mode); | ||
| 219 | static bool parse_threshold2_helper(char *s, size_t length, threshold *thr, threshold_mode mode); | ||
| 191 | static void run_checks(void); | 220 | static void run_checks(void); |
| 192 | static void set_source_ip(char *); | 221 | static void set_source_ip(char *); |
| 193 | static int add_target(char *); | 222 | static int add_target(char *); |
| @@ -199,13 +228,28 @@ static void finish(int); | |||
| 199 | static void crash(const char *, ...); | 228 | static void crash(const char *, ...); |
| 200 | 229 | ||
| 201 | /** external **/ | 230 | /** external **/ |
| 202 | extern int optind, opterr, optopt; | 231 | extern int optind; |
| 203 | extern char *optarg; | 232 | extern char *optarg; |
| 204 | extern char **environ; | 233 | extern char **environ; |
| 205 | 234 | ||
| 206 | /** global variables **/ | 235 | /** global variables **/ |
| 207 | static struct rta_host **table, *cursor, *list; | 236 | static struct rta_host **table, *cursor, *list; |
| 208 | static threshold crit = {80, 500000}, warn = {40, 200000}; | 237 | |
| 238 | static threshold crit = { | ||
| 239 | .pl = 80, | ||
| 240 | .rta = 500000, | ||
| 241 | .jitter = 0.0, | ||
| 242 | .mos = 0.0, | ||
| 243 | .score = 0.0 | ||
| 244 | }; | ||
| 245 | static threshold warn = { | ||
| 246 | .pl = 40, | ||
| 247 | .rta = 200000, | ||
| 248 | .jitter = 0.0, | ||
| 249 | .mos = 0.0, | ||
| 250 | .score = 0.0 | ||
| 251 | }; | ||
| 252 | |||
| 209 | static int mode, protocols, sockets, debug = 0, timeout = 10; | 253 | static int mode, protocols, sockets, debug = 0, timeout = 10; |
| 210 | static unsigned short icmp_data_size = DEFAULT_PING_DATA_SIZE; | 254 | static unsigned short icmp_data_size = DEFAULT_PING_DATA_SIZE; |
| 211 | static unsigned short icmp_pkt_size = DEFAULT_PING_DATA_SIZE + ICMP_MINLEN; | 255 | static unsigned short icmp_pkt_size = DEFAULT_PING_DATA_SIZE + ICMP_MINLEN; |
| @@ -224,6 +268,12 @@ static unsigned int warn_down = 1, crit_down = 1; /* host down threshold values | |||
| 224 | static int min_hosts_alive = -1; | 268 | static int min_hosts_alive = -1; |
| 225 | float pkt_backoff_factor = 1.5; | 269 | float pkt_backoff_factor = 1.5; |
| 226 | float target_backoff_factor = 1.5; | 270 | float target_backoff_factor = 1.5; |
| 271 | bool rta_mode=false; | ||
| 272 | bool pl_mode=false; | ||
| 273 | bool jitter_mode=false; | ||
| 274 | bool score_mode=false; | ||
| 275 | bool mos_mode=false; | ||
| 276 | bool order_mode=false; | ||
| 227 | 277 | ||
| 228 | /** code start **/ | 278 | /** code start **/ |
| 229 | static void | 279 | static void |
| @@ -393,12 +443,14 @@ main(int argc, char **argv) | |||
| 393 | int icmp_sockerrno, udp_sockerrno, tcp_sockerrno; | 443 | int icmp_sockerrno, udp_sockerrno, tcp_sockerrno; |
| 394 | int result; | 444 | int result; |
| 395 | struct rta_host *host; | 445 | struct rta_host *host; |
| 446 | #ifdef HAVE_SIGACTION | ||
| 447 | struct sigaction sig_action; | ||
| 448 | #endif | ||
| 396 | #ifdef SO_TIMESTAMP | 449 | #ifdef SO_TIMESTAMP |
| 397 | int on = 1; | 450 | int on = 1; |
| 398 | #endif | 451 | #endif |
| 399 | char *source_ip = NULL; | 452 | char *source_ip = NULL; |
| 400 | char * opts_str = "vhVw:c:n:p:t:H:s:i:b:I:l:m:64"; | 453 | char * opts_str = "vhVw:c:n:p:t:H:s:i:b:I:l:m:P:R:J:S:M:O64"; |
| 401 | |||
| 402 | setlocale (LC_ALL, ""); | 454 | setlocale (LC_ALL, ""); |
| 403 | bindtextdomain (PACKAGE, LOCALEDIR); | 455 | bindtextdomain (PACKAGE, LOCALEDIR); |
| 404 | textdomain (PACKAGE); | 456 | textdomain (PACKAGE); |
| @@ -407,7 +459,7 @@ main(int argc, char **argv) | |||
| 407 | * that before pointer magic (esp. on network data) */ | 459 | * that before pointer magic (esp. on network data) */ |
| 408 | icmp_sockerrno = udp_sockerrno = tcp_sockerrno = sockets = 0; | 460 | icmp_sockerrno = udp_sockerrno = tcp_sockerrno = sockets = 0; |
| 409 | 461 | ||
| 410 | address_family = -1; | 462 | address_family = -1; |
| 411 | int icmp_proto = IPPROTO_ICMP; | 463 | int icmp_proto = IPPROTO_ICMP; |
| 412 | 464 | ||
| 413 | /* get calling name the old-fashioned way for portability instead | 465 | /* get calling name the old-fashioned way for portability instead |
| @@ -422,10 +474,19 @@ main(int argc, char **argv) | |||
| 422 | table = NULL; | 474 | table = NULL; |
| 423 | 475 | ||
| 424 | mode = MODE_RTA; | 476 | mode = MODE_RTA; |
| 477 | /* Default critical thresholds */ | ||
| 425 | crit.rta = 500000; | 478 | crit.rta = 500000; |
| 426 | crit.pl = 80; | 479 | crit.pl = 80; |
| 480 | crit.jitter = 50; | ||
| 481 | crit.mos= 3; | ||
| 482 | crit.score=70; | ||
| 483 | /* Default warning thresholds */ | ||
| 427 | warn.rta = 200000; | 484 | warn.rta = 200000; |
| 428 | warn.pl = 40; | 485 | warn.pl = 40; |
| 486 | warn.jitter = 40; | ||
| 487 | warn.mos= 3.5; | ||
| 488 | warn.score=80; | ||
| 489 | |||
| 429 | protocols = HAVE_ICMP | HAVE_UDP | HAVE_TCP; | 490 | protocols = HAVE_ICMP | HAVE_UDP | HAVE_TCP; |
| 430 | pkt_interval = 80000; /* 80 msec packet interval by default */ | 491 | pkt_interval = 80000; /* 80 msec packet interval by default */ |
| 431 | packets = 5; | 492 | packets = 5; |
| @@ -481,7 +542,8 @@ main(int argc, char **argv) | |||
| 481 | /* Reset argument scanning */ | 542 | /* Reset argument scanning */ |
| 482 | optind = 1; | 543 | optind = 1; |
| 483 | 544 | ||
| 484 | unsigned short size; | 545 | unsigned long size; |
| 546 | bool err; | ||
| 485 | /* parse the arguments */ | 547 | /* parse the arguments */ |
| 486 | for(i = 1; i < argc; i++) { | 548 | for(i = 1; i < argc; i++) { |
| 487 | while((arg = getopt(argc, argv, opts_str)) != EOF) { | 549 | while((arg = getopt(argc, argv, opts_str)) != EOF) { |
| @@ -490,7 +552,7 @@ main(int argc, char **argv) | |||
| 490 | debug++; | 552 | debug++; |
| 491 | break; | 553 | break; |
| 492 | case 'b': | 554 | case 'b': |
| 493 | size = (unsigned short)strtol(optarg,NULL,0); | 555 | size = strtol(optarg,NULL,0); |
| 494 | if (size >= (sizeof(struct icmp) + sizeof(struct icmp_ping_data)) && | 556 | if (size >= (sizeof(struct icmp) + sizeof(struct icmp_ping_data)) && |
| 495 | size < MAX_PING_DATA) { | 557 | size < MAX_PING_DATA) { |
| 496 | icmp_data_size = size; | 558 | icmp_data_size = size; |
| @@ -545,6 +607,49 @@ main(int argc, char **argv) | |||
| 545 | print_help (); | 607 | print_help (); |
| 546 | exit (STATE_UNKNOWN); | 608 | exit (STATE_UNKNOWN); |
| 547 | break; | 609 | break; |
| 610 | case 'R': /* RTA mode */ | ||
| 611 | err = get_threshold2(optarg, strlen(optarg), &warn, &crit, const_rta_mode); | ||
| 612 | if (!err) { | ||
| 613 | crash("Failed to parse RTA threshold"); | ||
| 614 | } | ||
| 615 | |||
| 616 | rta_mode=true; | ||
| 617 | break; | ||
| 618 | case 'P': /* packet loss mode */ | ||
| 619 | err = get_threshold2(optarg, strlen(optarg), &warn, &crit, const_packet_loss_mode); | ||
| 620 | if (!err) { | ||
| 621 | crash("Failed to parse packet loss threshold"); | ||
| 622 | } | ||
| 623 | |||
| 624 | pl_mode=true; | ||
| 625 | break; | ||
| 626 | case 'J': /* jitter mode */ | ||
| 627 | err = get_threshold2(optarg, strlen(optarg), &warn, &crit, const_jitter_mode); | ||
| 628 | if (!err) { | ||
| 629 | crash("Failed to parse jitter threshold"); | ||
| 630 | } | ||
| 631 | |||
| 632 | jitter_mode=true; | ||
| 633 | break; | ||
| 634 | case 'M': /* MOS mode */ | ||
| 635 | err = get_threshold2(optarg, strlen(optarg), &warn, &crit, const_mos_mode); | ||
| 636 | if (!err) { | ||
| 637 | crash("Failed to parse MOS threshold"); | ||
| 638 | } | ||
| 639 | |||
| 640 | mos_mode=true; | ||
| 641 | break; | ||
| 642 | case 'S': /* score mode */ | ||
| 643 | err = get_threshold2(optarg, strlen(optarg), &warn, &crit, const_score_mode); | ||
| 644 | if (!err) { | ||
| 645 | crash("Failed to parse score threshold"); | ||
| 646 | } | ||
| 647 | |||
| 648 | score_mode=true; | ||
| 649 | break; | ||
| 650 | case 'O': /* out of order mode */ | ||
| 651 | order_mode=true; | ||
| 652 | break; | ||
| 548 | } | 653 | } |
| 549 | } | 654 | } |
| 550 | } | 655 | } |
| @@ -565,10 +670,10 @@ main(int argc, char **argv) | |||
| 565 | add_target(*argv); | 670 | add_target(*argv); |
| 566 | argv++; | 671 | argv++; |
| 567 | } | 672 | } |
| 673 | |||
| 568 | if(!targets) { | 674 | if(!targets) { |
| 569 | errno = 0; | 675 | errno = 0; |
| 570 | crash("No hosts to check"); | 676 | crash("No hosts to check"); |
| 571 | exit(3); | ||
| 572 | } | 677 | } |
| 573 | 678 | ||
| 574 | // add_target might change address_family | 679 | // add_target might change address_family |
| @@ -631,11 +736,25 @@ main(int argc, char **argv) | |||
| 631 | if(warn.pl > crit.pl) warn.pl = crit.pl; | 736 | if(warn.pl > crit.pl) warn.pl = crit.pl; |
| 632 | if(warn.rta > crit.rta) warn.rta = crit.rta; | 737 | if(warn.rta > crit.rta) warn.rta = crit.rta; |
| 633 | if(warn_down > crit_down) crit_down = warn_down; | 738 | if(warn_down > crit_down) crit_down = warn_down; |
| 634 | 739 | if(warn.jitter > crit.jitter) crit.jitter = warn.jitter; | |
| 740 | if(warn.mos < crit.mos) warn.mos = crit.mos; | ||
| 741 | if(warn.score < crit.score) warn.score = crit.score; | ||
| 742 | |||
| 743 | #ifdef HAVE_SIGACTION | ||
| 744 | sig_action.sa_sigaction = NULL; | ||
| 745 | sig_action.sa_handler = finish; | ||
| 746 | sigfillset(&sig_action.sa_mask); | ||
| 747 | sig_action.sa_flags = SA_NODEFER|SA_RESTART; | ||
| 748 | sigaction(SIGINT, &sig_action, NULL); | ||
| 749 | sigaction(SIGHUP, &sig_action, NULL); | ||
| 750 | sigaction(SIGTERM, &sig_action, NULL); | ||
| 751 | sigaction(SIGALRM, &sig_action, NULL); | ||
| 752 | #else /* HAVE_SIGACTION */ | ||
| 635 | signal(SIGINT, finish); | 753 | signal(SIGINT, finish); |
| 636 | signal(SIGHUP, finish); | 754 | signal(SIGHUP, finish); |
| 637 | signal(SIGTERM, finish); | 755 | signal(SIGTERM, finish); |
| 638 | signal(SIGALRM, finish); | 756 | signal(SIGALRM, finish); |
| 757 | #endif /* HAVE_SIGACTION */ | ||
| 639 | if(debug) printf("Setting alarm timeout to %u seconds\n", timeout); | 758 | if(debug) printf("Setting alarm timeout to %u seconds\n", timeout); |
| 640 | alarm(timeout); | 759 | alarm(timeout); |
| 641 | 760 | ||
| @@ -685,7 +804,11 @@ main(int argc, char **argv) | |||
| 685 | } | 804 | } |
| 686 | 805 | ||
| 687 | host = list; | 806 | host = list; |
| 688 | table = (struct rta_host**)malloc(sizeof(struct rta_host **) * targets); | 807 | table = malloc(sizeof(struct rta_host *) * targets); |
| 808 | if(!table) { | ||
| 809 | crash("main(): malloc failed for host table"); | ||
| 810 | } | ||
| 811 | |||
| 689 | i = 0; | 812 | i = 0; |
| 690 | while(host) { | 813 | while(host) { |
| 691 | host->id = i*packets; | 814 | host->id = i*packets; |
| @@ -772,6 +895,7 @@ wait_for_reply(int sock, u_int t) | |||
| 772 | struct icmp_ping_data data; | 895 | struct icmp_ping_data data; |
| 773 | struct timeval wait_start, now; | 896 | struct timeval wait_start, now; |
| 774 | u_int tdiff, i, per_pkt_wait; | 897 | u_int tdiff, i, per_pkt_wait; |
| 898 | double jitter_tmp; | ||
| 775 | 899 | ||
| 776 | if (!(packet.buf = malloc(icmp_pkt_size))) { | 900 | if (!(packet.buf = malloc(icmp_pkt_size))) { |
| 777 | crash("send_icmp_ping(): failed to malloc %d bytes for send buffer", | 901 | crash("send_icmp_ping(): failed to malloc %d bytes for send buffer", |
| @@ -890,12 +1014,44 @@ wait_for_reply(int sock, u_int t) | |||
| 890 | 1014 | ||
| 891 | tdiff = get_timevaldiff(&data.stime, &now); | 1015 | tdiff = get_timevaldiff(&data.stime, &now); |
| 892 | 1016 | ||
| 1017 | if (host->last_tdiff>0) { | ||
| 1018 | /* Calculate jitter */ | ||
| 1019 | if (host->last_tdiff > tdiff) { | ||
| 1020 | jitter_tmp = host->last_tdiff - tdiff; | ||
| 1021 | } else { | ||
| 1022 | jitter_tmp = tdiff - host->last_tdiff; | ||
| 1023 | } | ||
| 1024 | |||
| 1025 | if (host->jitter==0) { | ||
| 1026 | host->jitter=jitter_tmp; | ||
| 1027 | host->jitter_max=jitter_tmp; | ||
| 1028 | host->jitter_min=jitter_tmp; | ||
| 1029 | } else { | ||
| 1030 | host->jitter+=jitter_tmp; | ||
| 1031 | |||
| 1032 | if (jitter_tmp < host->jitter_min) { | ||
| 1033 | host->jitter_min=jitter_tmp; | ||
| 1034 | } | ||
| 1035 | |||
| 1036 | if (jitter_tmp > host->jitter_max) { | ||
| 1037 | host->jitter_max=jitter_tmp; | ||
| 1038 | } | ||
| 1039 | } | ||
| 1040 | |||
| 1041 | /* Check if packets in order */ | ||
| 1042 | if (host->last_icmp_seq >= packet.icp->icmp_seq) | ||
| 1043 | host->order_status=STATE_CRITICAL; | ||
| 1044 | } | ||
| 1045 | host->last_tdiff=tdiff; | ||
| 1046 | |||
| 1047 | host->last_icmp_seq=packet.icp->icmp_seq; | ||
| 1048 | |||
| 893 | host->time_waited += tdiff; | 1049 | host->time_waited += tdiff; |
| 894 | host->icmp_recv++; | 1050 | host->icmp_recv++; |
| 895 | icmp_recv++; | 1051 | icmp_recv++; |
| 896 | if (tdiff > host->rtmax) | 1052 | if (tdiff > (unsigned int)host->rtmax) |
| 897 | host->rtmax = tdiff; | 1053 | host->rtmax = tdiff; |
| 898 | if (tdiff < host->rtmin) | 1054 | if (tdiff < (unsigned int)host->rtmin) |
| 899 | host->rtmin = tdiff; | 1055 | host->rtmin = tdiff; |
| 900 | 1056 | ||
| 901 | if(debug) { | 1057 | if(debug) { |
| @@ -1056,7 +1212,9 @@ recvfrom_wto(int sock, void *buf, unsigned int len, struct sockaddr *saddr, | |||
| 1056 | int n, ret; | 1212 | int n, ret; |
| 1057 | struct timeval to, then, now; | 1213 | struct timeval to, then, now; |
| 1058 | fd_set rd, wr; | 1214 | fd_set rd, wr; |
| 1215 | #ifdef HAVE_MSGHDR_MSG_CONTROL | ||
| 1059 | char ans_data[4096]; | 1216 | char ans_data[4096]; |
| 1217 | #endif // HAVE_MSGHDR_MSG_CONTROL | ||
| 1060 | struct msghdr hdr; | 1218 | struct msghdr hdr; |
| 1061 | struct iovec iov; | 1219 | struct iovec iov; |
| 1062 | #ifdef SO_TIMESTAMP | 1220 | #ifdef SO_TIMESTAMP |
| @@ -1094,8 +1252,10 @@ recvfrom_wto(int sock, void *buf, unsigned int len, struct sockaddr *saddr, | |||
| 1094 | hdr.msg_namelen = slen; | 1252 | hdr.msg_namelen = slen; |
| 1095 | hdr.msg_iov = &iov; | 1253 | hdr.msg_iov = &iov; |
| 1096 | hdr.msg_iovlen = 1; | 1254 | hdr.msg_iovlen = 1; |
| 1255 | #ifdef HAVE_MSGHDR_MSG_CONTROL | ||
| 1097 | hdr.msg_control = ans_data; | 1256 | hdr.msg_control = ans_data; |
| 1098 | hdr.msg_controllen = sizeof(ans_data); | 1257 | hdr.msg_controllen = sizeof(ans_data); |
| 1258 | #endif | ||
| 1099 | 1259 | ||
| 1100 | ret = recvmsg(sock, &hdr, 0); | 1260 | ret = recvmsg(sock, &hdr, 0); |
| 1101 | #ifdef SO_TIMESTAMP | 1261 | #ifdef SO_TIMESTAMP |
| @@ -1125,6 +1285,8 @@ finish(int sig) | |||
| 1125 | {"OK", "WARNING", "CRITICAL", "UNKNOWN", "DEPENDENT"}; | 1285 | {"OK", "WARNING", "CRITICAL", "UNKNOWN", "DEPENDENT"}; |
| 1126 | int hosts_ok = 0; | 1286 | int hosts_ok = 0; |
| 1127 | int hosts_warn = 0; | 1287 | int hosts_warn = 0; |
| 1288 | int this_status; | ||
| 1289 | double R; | ||
| 1128 | 1290 | ||
| 1129 | alarm(0); | 1291 | alarm(0); |
| 1130 | if(debug > 1) printf("finish(%d) called\n", sig); | 1292 | if(debug > 1) printf("finish(%d) called\n", sig); |
| @@ -1140,9 +1302,12 @@ finish(int sig) | |||
| 1140 | } | 1302 | } |
| 1141 | 1303 | ||
| 1142 | /* iterate thrice to calculate values, give output, and print perfparse */ | 1304 | /* iterate thrice to calculate values, give output, and print perfparse */ |
| 1305 | status=STATE_OK; | ||
| 1143 | host = list; | 1306 | host = list; |
| 1144 | 1307 | ||
| 1145 | while(host) { | 1308 | while(host) { |
| 1309 | this_status = STATE_OK; | ||
| 1310 | |||
| 1146 | if(!host->icmp_recv) { | 1311 | if(!host->icmp_recv) { |
| 1147 | /* rta 0 is ofcourse not entirely correct, but will still show up | 1312 | /* rta 0 is ofcourse not entirely correct, but will still show up |
| 1148 | * conspicuously as missing entries in perfparse and cacti */ | 1313 | * conspicuously as missing entries in perfparse and cacti */ |
| @@ -1151,26 +1316,138 @@ finish(int sig) | |||
| 1151 | status = STATE_CRITICAL; | 1316 | status = STATE_CRITICAL; |
| 1152 | /* up the down counter if not already counted */ | 1317 | /* up the down counter if not already counted */ |
| 1153 | if(!(host->flags & FLAG_LOST_CAUSE) && targets_alive) targets_down++; | 1318 | if(!(host->flags & FLAG_LOST_CAUSE) && targets_alive) targets_down++; |
| 1154 | } | 1319 | } else { |
| 1155 | else { | ||
| 1156 | pl = ((host->icmp_sent - host->icmp_recv) * 100) / host->icmp_sent; | 1320 | pl = ((host->icmp_sent - host->icmp_recv) * 100) / host->icmp_sent; |
| 1157 | rta = (double)host->time_waited / host->icmp_recv; | 1321 | rta = (double)host->time_waited / host->icmp_recv; |
| 1158 | } | 1322 | } |
| 1323 | |||
| 1324 | if (host->icmp_recv>1) { | ||
| 1325 | /* | ||
| 1326 | * This algorithm is probably pretty much blindly copied from | ||
| 1327 | * locations like this one: https://www.slac.stanford.edu/comp/net/wan-mon/tutorial.html#mos | ||
| 1328 | * It calculates a MOS value (range of 1 to 5, where 1 is bad and 5 really good). | ||
| 1329 | * According to some quick research MOS originates from the Audio/Video transport network area. | ||
| 1330 | * Whether it can and should be computed from ICMP data, I can not say. | ||
| 1331 | * | ||
| 1332 | * Anyway the basic idea is to map a value "R" with a range of 0-100 to the MOS value | ||
| 1333 | * | ||
| 1334 | * MOS stands likely for Mean Opinion Score ( https://en.wikipedia.org/wiki/Mean_Opinion_Score ) | ||
| 1335 | * | ||
| 1336 | * More links: | ||
| 1337 | * - https://confluence.slac.stanford.edu/display/IEPM/MOS | ||
| 1338 | */ | ||
| 1339 | host->jitter=(host->jitter / (host->icmp_recv - 1)/1000); | ||
| 1340 | |||
| 1341 | /* | ||
| 1342 | * Take the average round trip latency (in milliseconds), add | ||
| 1343 | * round trip jitter, but double the impact to latency | ||
| 1344 | * then add 10 for protocol latencies (in milliseconds). | ||
| 1345 | */ | ||
| 1346 | host->EffectiveLatency = (rta/1000) + host->jitter * 2 + 10; | ||
| 1347 | |||
| 1348 | if (host->EffectiveLatency < 160) { | ||
| 1349 | R = 93.2 - (host->EffectiveLatency / 40); | ||
| 1350 | } else { | ||
| 1351 | R = 93.2 - ((host->EffectiveLatency - 120) / 10); | ||
| 1352 | } | ||
| 1353 | |||
| 1354 | // Now, let us deduct 2.5 R values per percentage of packet loss (i.e. a | ||
| 1355 | // loss of 5% will be entered as 5). | ||
| 1356 | R = R - (pl * 2.5); | ||
| 1357 | |||
| 1358 | if (R < 0) { | ||
| 1359 | R = 0; | ||
| 1360 | } | ||
| 1361 | |||
| 1362 | host->score = R; | ||
| 1363 | host->mos= 1 + ((0.035) * R) + ((.000007) * R * (R-60) * (100-R)); | ||
| 1364 | } else { | ||
| 1365 | host->jitter=0; | ||
| 1366 | host->jitter_min=0; | ||
| 1367 | host->jitter_max=0; | ||
| 1368 | host->mos=0; | ||
| 1369 | } | ||
| 1370 | |||
| 1159 | host->pl = pl; | 1371 | host->pl = pl; |
| 1160 | host->rta = rta; | 1372 | host->rta = rta; |
| 1161 | if(pl >= crit.pl || rta >= crit.rta) { | 1373 | |
| 1162 | status = STATE_CRITICAL; | 1374 | /* if no new mode selected, use old schema */ |
| 1375 | if (!rta_mode && !pl_mode && !jitter_mode && !score_mode && !mos_mode && !order_mode) { | ||
| 1376 | rta_mode = true; | ||
| 1377 | pl_mode = true; | ||
| 1163 | } | 1378 | } |
| 1164 | else if(!status && (pl >= warn.pl || rta >= warn.rta)) { | 1379 | |
| 1165 | status = STATE_WARNING; | 1380 | /* Check which mode is on and do the warn / Crit stuff */ |
| 1166 | hosts_warn++; | 1381 | if (rta_mode) { |
| 1382 | if(rta >= crit.rta) { | ||
| 1383 | this_status = STATE_CRITICAL; | ||
| 1384 | status = STATE_CRITICAL; | ||
| 1385 | host->rta_status=STATE_CRITICAL; | ||
| 1386 | } else if(status!=STATE_CRITICAL && (rta >= warn.rta)) { | ||
| 1387 | this_status = (this_status <= STATE_WARNING ? STATE_WARNING : this_status); | ||
| 1388 | status = STATE_WARNING; | ||
| 1389 | host->rta_status=STATE_WARNING; | ||
| 1390 | } | ||
| 1391 | } | ||
| 1392 | |||
| 1393 | if (pl_mode) { | ||
| 1394 | if(pl >= crit.pl) { | ||
| 1395 | this_status = STATE_CRITICAL; | ||
| 1396 | status = STATE_CRITICAL; | ||
| 1397 | host->pl_status=STATE_CRITICAL; | ||
| 1398 | } else if(status!=STATE_CRITICAL && (pl >= warn.pl)) { | ||
| 1399 | this_status = (this_status <= STATE_WARNING ? STATE_WARNING : this_status); | ||
| 1400 | status = STATE_WARNING; | ||
| 1401 | host->pl_status=STATE_WARNING; | ||
| 1402 | } | ||
| 1403 | } | ||
| 1404 | |||
| 1405 | if (jitter_mode) { | ||
| 1406 | if(host->jitter >= crit.jitter) { | ||
| 1407 | this_status = STATE_CRITICAL; | ||
| 1408 | status = STATE_CRITICAL; | ||
| 1409 | host->jitter_status=STATE_CRITICAL; | ||
| 1410 | } else if(status!=STATE_CRITICAL && (host->jitter >= warn.jitter)) { | ||
| 1411 | this_status = (this_status <= STATE_WARNING ? STATE_WARNING : this_status); | ||
| 1412 | status = STATE_WARNING; | ||
| 1413 | host->jitter_status=STATE_WARNING; | ||
| 1414 | } | ||
| 1415 | } | ||
| 1416 | |||
| 1417 | if (mos_mode) { | ||
| 1418 | if(host->mos <= crit.mos) { | ||
| 1419 | this_status = STATE_CRITICAL; | ||
| 1420 | status = STATE_CRITICAL; | ||
| 1421 | host->mos_status=STATE_CRITICAL; | ||
| 1422 | } else if(status!=STATE_CRITICAL && (host->mos <= warn.mos)) { | ||
| 1423 | this_status = (this_status <= STATE_WARNING ? STATE_WARNING : this_status); | ||
| 1424 | status = STATE_WARNING; | ||
| 1425 | host->mos_status=STATE_WARNING; | ||
| 1426 | } | ||
| 1427 | } | ||
| 1428 | |||
| 1429 | if (score_mode) { | ||
| 1430 | if(host->score <= crit.score) { | ||
| 1431 | this_status = STATE_CRITICAL; | ||
| 1432 | status = STATE_CRITICAL; | ||
| 1433 | host->score_status=STATE_CRITICAL; | ||
| 1434 | } else if(status!=STATE_CRITICAL && (host->score <= warn.score)) { | ||
| 1435 | this_status = (this_status <= STATE_WARNING ? STATE_WARNING : this_status); | ||
| 1436 | status = STATE_WARNING; | ||
| 1437 | host->score_status=STATE_WARNING; | ||
| 1438 | } | ||
| 1167 | } | 1439 | } |
| 1168 | else { | 1440 | |
| 1441 | if (this_status == STATE_WARNING) { | ||
| 1442 | hosts_warn++; | ||
| 1443 | } else if (this_status == STATE_OK) { | ||
| 1169 | hosts_ok++; | 1444 | hosts_ok++; |
| 1170 | } | 1445 | } |
| 1171 | 1446 | ||
| 1172 | host = host->next; | 1447 | host = host->next; |
| 1173 | } | 1448 | } |
| 1449 | |||
| 1450 | |||
| 1174 | /* this is inevitable */ | 1451 | /* this is inevitable */ |
| 1175 | if(!targets_alive) status = STATE_CRITICAL; | 1452 | if(!targets_alive) status = STATE_CRITICAL; |
| 1176 | if(min_hosts_alive > -1) { | 1453 | if(min_hosts_alive > -1) { |
| @@ -1181,6 +1458,7 @@ finish(int sig) | |||
| 1181 | 1458 | ||
| 1182 | host = list; | 1459 | host = list; |
| 1183 | while(host) { | 1460 | while(host) { |
| 1461 | |||
| 1184 | if(debug) puts(""); | 1462 | if(debug) puts(""); |
| 1185 | if(i) { | 1463 | if(i) { |
| 1186 | if(i < targets) printf(" :: "); | 1464 | if(i < targets) printf(" :: "); |
| @@ -1189,6 +1467,8 @@ finish(int sig) | |||
| 1189 | i++; | 1467 | i++; |
| 1190 | if(!host->icmp_recv) { | 1468 | if(!host->icmp_recv) { |
| 1191 | status = STATE_CRITICAL; | 1469 | status = STATE_CRITICAL; |
| 1470 | host->rtmin=0; | ||
| 1471 | host->jitter_min=0; | ||
| 1192 | if(host->flags & FLAG_LOST_CAUSE) { | 1472 | if(host->flags & FLAG_LOST_CAUSE) { |
| 1193 | char address[INET6_ADDRSTRLEN]; | 1473 | char address[INET6_ADDRSTRLEN]; |
| 1194 | parse_address(&host->error_addr, address, sizeof(address)); | 1474 | parse_address(&host->error_addr, address, sizeof(address)); |
| @@ -1197,31 +1477,137 @@ finish(int sig) | |||
| 1197 | get_icmp_error_msg(host->icmp_type, host->icmp_code), | 1477 | get_icmp_error_msg(host->icmp_type, host->icmp_code), |
| 1198 | address, | 1478 | address, |
| 1199 | 100); | 1479 | 100); |
| 1200 | } | 1480 | } else { /* not marked as lost cause, so we have no flags for it */ |
| 1201 | else { /* not marked as lost cause, so we have no flags for it */ | ||
| 1202 | printf("%s: rta nan, lost 100%%", host->name); | 1481 | printf("%s: rta nan, lost 100%%", host->name); |
| 1203 | } | 1482 | } |
| 1483 | } else { /* !icmp_recv */ | ||
| 1484 | printf("%s", host->name); | ||
| 1485 | /* rta text output */ | ||
| 1486 | if (rta_mode) { | ||
| 1487 | if (status == STATE_OK) | ||
| 1488 | printf(" rta %0.3fms", host->rta / 1000); | ||
| 1489 | else if (status==STATE_WARNING && host->rta_status==status) | ||
| 1490 | printf(" rta %0.3fms > %0.3fms", (float)host->rta / 1000, (float)warn.rta/1000); | ||
| 1491 | else if (status==STATE_CRITICAL && host->rta_status==status) | ||
| 1492 | printf(" rta %0.3fms > %0.3fms", (float)host->rta / 1000, (float)crit.rta/1000); | ||
| 1493 | } | ||
| 1494 | /* pl text output */ | ||
| 1495 | if (pl_mode) { | ||
| 1496 | if (status == STATE_OK) | ||
| 1497 | printf(" lost %u%%", host->pl); | ||
| 1498 | else if (status==STATE_WARNING && host->pl_status==status) | ||
| 1499 | printf(" lost %u%% > %u%%", host->pl, warn.pl); | ||
| 1500 | else if (status==STATE_CRITICAL && host->pl_status==status) | ||
| 1501 | printf(" lost %u%% > %u%%", host->pl, crit.pl); | ||
| 1502 | } | ||
| 1503 | /* jitter text output */ | ||
| 1504 | if (jitter_mode) { | ||
| 1505 | if (status == STATE_OK) | ||
| 1506 | printf(" jitter %0.3fms", (float)host->jitter); | ||
| 1507 | else if (status==STATE_WARNING && host->jitter_status==status) | ||
| 1508 | printf(" jitter %0.3fms > %0.3fms", (float)host->jitter, warn.jitter); | ||
| 1509 | else if (status==STATE_CRITICAL && host->jitter_status==status) | ||
| 1510 | printf(" jitter %0.3fms > %0.3fms", (float)host->jitter, crit.jitter); | ||
| 1511 | } | ||
| 1512 | /* mos text output */ | ||
| 1513 | if (mos_mode) { | ||
| 1514 | if (status == STATE_OK) | ||
| 1515 | printf(" MOS %0.1f", (float)host->mos); | ||
| 1516 | else if (status==STATE_WARNING && host->mos_status==status) | ||
| 1517 | printf(" MOS %0.1f < %0.1f", (float)host->mos, (float)warn.mos); | ||
| 1518 | else if (status==STATE_CRITICAL && host->mos_status==status) | ||
| 1519 | printf(" MOS %0.1f < %0.1f", (float)host->mos, (float)crit.mos); | ||
| 1520 | } | ||
| 1521 | /* score text output */ | ||
| 1522 | if (score_mode) { | ||
| 1523 | if (status == STATE_OK) | ||
| 1524 | printf(" Score %u", (int)host->score); | ||
| 1525 | else if (status==STATE_WARNING && host->score_status==status ) | ||
| 1526 | printf(" Score %u < %u", (int)host->score, (int)warn.score); | ||
| 1527 | else if (status==STATE_CRITICAL && host->score_status==status ) | ||
| 1528 | printf(" Score %u < %u", (int)host->score, (int)crit.score); | ||
| 1529 | } | ||
| 1530 | /* order statis text output */ | ||
| 1531 | if (order_mode) { | ||
| 1532 | if (status == STATE_OK) | ||
| 1533 | printf(" Packets in order"); | ||
| 1534 | else if (status==STATE_CRITICAL && host->order_status==status) | ||
| 1535 | printf(" Packets out of order"); | ||
| 1536 | } | ||
| 1204 | } | 1537 | } |
| 1205 | else { /* !icmp_recv */ | ||
| 1206 | printf("%s: rta %0.3fms, lost %u%%", | ||
| 1207 | host->name, host->rta / 1000, host->pl); | ||
| 1208 | } | ||
| 1209 | |||
| 1210 | host = host->next; | 1538 | host = host->next; |
| 1211 | } | 1539 | } |
| 1212 | 1540 | ||
| 1213 | /* iterate once more for pretty perfparse output */ | 1541 | /* iterate once more for pretty perfparse output */ |
| 1214 | printf("|"); | 1542 | if (!(!rta_mode && !pl_mode && !jitter_mode && !score_mode && !mos_mode && order_mode)) { |
| 1543 | printf("|"); | ||
| 1544 | } | ||
| 1215 | i = 0; | 1545 | i = 0; |
| 1216 | host = list; | 1546 | host = list; |
| 1217 | while(host) { | 1547 | while(host) { |
| 1218 | if(debug) puts(""); | 1548 | if(debug) puts(""); |
| 1219 | printf("%srta=%0.3fms;%0.3f;%0.3f;0; %spl=%u%%;%u;%u;; %srtmax=%0.3fms;;;; %srtmin=%0.3fms;;;; ", | 1549 | |
| 1220 | (targets > 1) ? host->name : "", | 1550 | if (rta_mode) { |
| 1221 | host->rta / 1000, (float)warn.rta / 1000, (float)crit.rta / 1000, | 1551 | if (host->pl<100) { |
| 1222 | (targets > 1) ? host->name : "", host->pl, warn.pl, crit.pl, | 1552 | printf("%srta=%0.3fms;%0.3f;%0.3f;0; %srtmax=%0.3fms;;;; %srtmin=%0.3fms;;;; ", |
| 1223 | (targets > 1) ? host->name : "", (float)host->rtmax / 1000, | 1553 | (targets > 1) ? host->name : "", |
| 1224 | (targets > 1) ? host->name : "", (host->rtmin < INFINITY) ? (float)host->rtmin / 1000 : (float)0); | 1554 | host->rta / 1000, (float)warn.rta / 1000, (float)crit.rta / 1000, |
| 1555 | (targets > 1) ? host->name : "", (float)host->rtmax / 1000, | ||
| 1556 | (targets > 1) ? host->name : "", (host->rtmin < INFINITY) ? (float)host->rtmin / 1000 : (float)0); | ||
| 1557 | } else { | ||
| 1558 | printf("%srta=U;;;; %srtmax=U;;;; %srtmin=U;;;; ", | ||
| 1559 | (targets > 1) ? host->name : "", | ||
| 1560 | (targets > 1) ? host->name : "", | ||
| 1561 | (targets > 1) ? host->name : ""); | ||
| 1562 | } | ||
| 1563 | } | ||
| 1564 | |||
| 1565 | if (pl_mode) { | ||
| 1566 | printf("%spl=%u%%;%u;%u;0;100 ", (targets > 1) ? host->name : "", host->pl, warn.pl, crit.pl); | ||
| 1567 | } | ||
| 1568 | |||
| 1569 | if (jitter_mode) { | ||
| 1570 | if (host->pl<100) { | ||
| 1571 | printf("%sjitter_avg=%0.3fms;%0.3f;%0.3f;0; %sjitter_max=%0.3fms;;;; %sjitter_min=%0.3fms;;;; ", | ||
| 1572 | (targets > 1) ? host->name : "", | ||
| 1573 | (float)host->jitter, | ||
| 1574 | (float)warn.jitter, | ||
| 1575 | (float)crit.jitter, | ||
| 1576 | (targets > 1) ? host->name : "", | ||
| 1577 | (float)host->jitter_max / 1000, (targets > 1) ? host->name : "", | ||
| 1578 | (float)host->jitter_min / 1000 | ||
| 1579 | ); | ||
| 1580 | } else { | ||
| 1581 | printf("%sjitter_avg=U;;;; %sjitter_max=U;;;; %sjitter_min=U;;;; ", | ||
| 1582 | (targets > 1) ? host->name : "", | ||
| 1583 | (targets > 1) ? host->name : "", | ||
| 1584 | (targets > 1) ? host->name : ""); | ||
| 1585 | } | ||
| 1586 | } | ||
| 1587 | |||
| 1588 | if (mos_mode) { | ||
| 1589 | if (host->pl<100) { | ||
| 1590 | printf("%smos=%0.1f;%0.1f;%0.1f;0;5 ", | ||
| 1591 | (targets > 1) ? host->name : "", | ||
| 1592 | (float)host->mos, | ||
| 1593 | (float)warn.mos, | ||
| 1594 | (float)crit.mos); | ||
| 1595 | } else { | ||
| 1596 | printf("%smos=U;;;; ", (targets > 1) ? host->name : ""); | ||
| 1597 | } | ||
| 1598 | } | ||
| 1599 | |||
| 1600 | if (score_mode) { | ||
| 1601 | if (host->pl<100) { | ||
| 1602 | printf("%sscore=%u;%u;%u;0;100 ", | ||
| 1603 | (targets > 1) ? host->name : "", | ||
| 1604 | (int)host->score, | ||
| 1605 | (int)warn.score, | ||
| 1606 | (int)crit.score); | ||
| 1607 | } else { | ||
| 1608 | printf("%sscore=U;;;; ", (targets > 1) ? host->name : ""); | ||
| 1609 | } | ||
| 1610 | } | ||
| 1225 | 1611 | ||
| 1226 | host = host->next; | 1612 | host = host->next; |
| 1227 | } | 1613 | } |
| @@ -1312,6 +1698,7 @@ add_target_ip(char *arg, struct sockaddr_storage *in) | |||
| 1312 | /* set the values. use calling name for output */ | 1698 | /* set the values. use calling name for output */ |
| 1313 | host->name = strdup(arg); | 1699 | host->name = strdup(arg); |
| 1314 | 1700 | ||
| 1701 | |||
| 1315 | /* fill out the sockaddr_storage struct */ | 1702 | /* fill out the sockaddr_storage struct */ |
| 1316 | if(address_family == AF_INET) { | 1703 | if(address_family == AF_INET) { |
| 1317 | host_sin = (struct sockaddr_in *)&host->saddr_in; | 1704 | host_sin = (struct sockaddr_in *)&host->saddr_in; |
| @@ -1324,7 +1711,22 @@ add_target_ip(char *arg, struct sockaddr_storage *in) | |||
| 1324 | memcpy(host_sin6->sin6_addr.s6_addr, sin6->sin6_addr.s6_addr, sizeof host_sin6->sin6_addr.s6_addr); | 1711 | memcpy(host_sin6->sin6_addr.s6_addr, sin6->sin6_addr.s6_addr, sizeof host_sin6->sin6_addr.s6_addr); |
| 1325 | } | 1712 | } |
| 1326 | 1713 | ||
| 1714 | /* fill out the sockaddr_in struct */ | ||
| 1327 | host->rtmin = INFINITY; | 1715 | host->rtmin = INFINITY; |
| 1716 | host->rtmax = 0; | ||
| 1717 | host->jitter=0; | ||
| 1718 | host->jitter_max=0; | ||
| 1719 | host->jitter_min=INFINITY; | ||
| 1720 | host->last_tdiff=0; | ||
| 1721 | host->order_status=STATE_OK; | ||
| 1722 | host->last_icmp_seq=0; | ||
| 1723 | host->rta_status=0; | ||
| 1724 | host->pl_status=0; | ||
| 1725 | host->jitter_status=0; | ||
| 1726 | host->mos_status=0; | ||
| 1727 | host->score_status=0; | ||
| 1728 | host->pl_status=0; | ||
| 1729 | |||
| 1328 | 1730 | ||
| 1329 | if(!list) list = cursor = host; | 1731 | if(!list) list = cursor = host; |
| 1330 | else cursor->next = host; | 1732 | else cursor->next = host; |
| @@ -1408,7 +1810,7 @@ add_target(char *arg) | |||
| 1408 | } | 1810 | } |
| 1409 | break; | 1811 | break; |
| 1410 | } | 1812 | } |
| 1411 | freeaddrinfo(res); | 1813 | freeaddrinfo(res); |
| 1412 | 1814 | ||
| 1413 | return 0; | 1815 | return 0; |
| 1414 | } | 1816 | } |
| @@ -1472,7 +1874,7 @@ get_timevar(const char *str) | |||
| 1472 | 1874 | ||
| 1473 | /* unit might be given as ms|m (millisec), | 1875 | /* unit might be given as ms|m (millisec), |
| 1474 | * us|u (microsec) or just plain s, for seconds */ | 1876 | * us|u (microsec) or just plain s, for seconds */ |
| 1475 | u = p = '\0'; | 1877 | p = '\0'; |
| 1476 | u = str[len - 1]; | 1878 | u = str[len - 1]; |
| 1477 | if(len >= 2 && !isdigit((int)str[len - 2])) p = str[len - 2]; | 1879 | if(len >= 2 && !isdigit((int)str[len - 2])) p = str[len - 2]; |
| 1478 | if(p && u == 's') u = p; | 1880 | if(p && u == 's') u = p; |
| @@ -1530,6 +1932,81 @@ get_threshold(char *str, threshold *th) | |||
| 1530 | return 0; | 1932 | return 0; |
| 1531 | } | 1933 | } |
| 1532 | 1934 | ||
| 1935 | /* | ||
| 1936 | * This functions receives a pointer to a string which should contain a threshold for the | ||
| 1937 | * rta, packet_loss, jitter, mos or score mode in the form number,number[m|%]* assigns the | ||
| 1938 | * parsed number to the corresponding threshold variable. | ||
| 1939 | * @param[in,out] str String containing the given threshold values | ||
| 1940 | * @param[in] length strlen(str) | ||
| 1941 | * @param[out] warn Pointer to the warn threshold struct to which the values should be assigned | ||
| 1942 | * @param[out] crit Pointer to the crit threshold struct to which the values should be assigned | ||
| 1943 | * @param[in] mode Determines whether this a threshold for rta, packet_loss, jitter, mos or score (exclusively) | ||
| 1944 | */ | ||
| 1945 | static bool get_threshold2(char *str, size_t length, threshold *warn, threshold *crit, threshold_mode mode) { | ||
| 1946 | if (!str || !length || !warn || !crit) return false; | ||
| 1947 | |||
| 1948 | |||
| 1949 | // p points to the last char in str | ||
| 1950 | char *p = &str[length - 1]; | ||
| 1951 | |||
| 1952 | // first_iteration is bof-stop on stupid libc's | ||
| 1953 | bool first_iteration = true; | ||
| 1954 | |||
| 1955 | while(p != &str[0]) { | ||
| 1956 | if( (*p == 'm') || (*p == '%') ) { | ||
| 1957 | *p = '\0'; | ||
| 1958 | } else if(*p == ',' && !first_iteration) { | ||
| 1959 | *p = '\0'; /* reset it so get_timevar(str) works nicely later */ | ||
| 1960 | |||
| 1961 | char *start_of_value = p + 1; | ||
| 1962 | |||
| 1963 | if (!parse_threshold2_helper(start_of_value, strlen(start_of_value), crit, mode)){ | ||
| 1964 | return false; | ||
| 1965 | } | ||
| 1966 | |||
| 1967 | } | ||
| 1968 | first_iteration = false; | ||
| 1969 | p--; | ||
| 1970 | } | ||
| 1971 | |||
| 1972 | return parse_threshold2_helper(p, strlen(p), warn, mode); | ||
| 1973 | } | ||
| 1974 | |||
| 1975 | static bool parse_threshold2_helper(char *s, size_t length, threshold *thr, threshold_mode mode) { | ||
| 1976 | char *resultChecker = {0}; | ||
| 1977 | |||
| 1978 | switch (mode) { | ||
| 1979 | case const_rta_mode: | ||
| 1980 | thr->rta = strtod(s, &resultChecker) * 1000; | ||
| 1981 | break; | ||
| 1982 | case const_packet_loss_mode: | ||
| 1983 | thr->pl = (unsigned char)strtoul(s, &resultChecker, 0); | ||
| 1984 | break; | ||
| 1985 | case const_jitter_mode: | ||
| 1986 | thr->jitter = strtod(s, &resultChecker); | ||
| 1987 | |||
| 1988 | break; | ||
| 1989 | case const_mos_mode: | ||
| 1990 | thr->mos = strtod(s, &resultChecker); | ||
| 1991 | break; | ||
| 1992 | case const_score_mode: | ||
| 1993 | thr->score = strtod(s, &resultChecker); | ||
| 1994 | break; | ||
| 1995 | } | ||
| 1996 | |||
| 1997 | if (resultChecker == s) { | ||
| 1998 | // Failed to parse | ||
| 1999 | return false; | ||
| 2000 | } | ||
| 2001 | |||
| 2002 | if (resultChecker != (s + length)) { | ||
| 2003 | // Trailing symbols | ||
| 2004 | return false; | ||
| 2005 | } | ||
| 2006 | |||
| 2007 | return true; | ||
| 2008 | } | ||
| 2009 | |||
| 1533 | unsigned short | 2010 | unsigned short |
| 1534 | icmp_checksum(uint16_t *p, size_t n) | 2011 | icmp_checksum(uint16_t *p, size_t n) |
| 1535 | { | 2012 | { |
| @@ -1555,74 +2032,91 @@ icmp_checksum(uint16_t *p, size_t n) | |||
| 1555 | void | 2032 | void |
| 1556 | print_help(void) | 2033 | print_help(void) |
| 1557 | { | 2034 | { |
| 1558 | 2035 | /*print_revision (progname);*/ /* FIXME: Why? */ | |
| 1559 | /*print_revision (progname);*/ /* FIXME: Why? */ | 2036 | printf ("Copyright (c) 2005 Andreas Ericsson <ae@op5.se>\n"); |
| 1560 | 2037 | ||
| 1561 | printf ("Copyright (c) 2005 Andreas Ericsson <ae@op5.se>\n"); | 2038 | printf (COPYRIGHT, copyright, email); |
| 1562 | printf (COPYRIGHT, copyright, email); | 2039 | |
| 1563 | 2040 | printf ("\n\n"); | |
| 1564 | printf ("\n\n"); | 2041 | |
| 1565 | 2042 | print_usage (); | |
| 1566 | print_usage (); | 2043 | |
| 1567 | 2044 | printf (UT_HELP_VRSN); | |
| 1568 | printf (UT_HELP_VRSN); | 2045 | printf (UT_EXTRA_OPTS); |
| 1569 | printf (UT_EXTRA_OPTS); | 2046 | |
| 1570 | 2047 | printf (" %s\n", "-H"); | |
| 1571 | printf (" %s\n", "-H"); | 2048 | printf (" %s\n", _("specify a target")); |
| 1572 | printf (" %s\n", _("specify a target")); | 2049 | printf (" %s\n", "[-4|-6]"); |
| 1573 | printf (" %s\n", "[-4|-6]"); | 2050 | printf (" %s\n", _("Use IPv4 (default) or IPv6 to communicate with the targets")); |
| 1574 | printf (" %s\n", _("Use IPv4 (default) or IPv6 to communicate with the targets")); | 2051 | printf (" %s\n", "-w"); |
| 1575 | printf (" %s\n", "-w"); | 2052 | printf (" %s", _("warning threshold (currently ")); |
| 1576 | printf (" %s", _("warning threshold (currently ")); | 2053 | printf ("%0.3fms,%u%%)\n", (float)warn.rta / 1000, warn.pl); |
| 1577 | printf ("%0.3fms,%u%%)\n", (float)warn.rta / 1000, warn.pl); | 2054 | printf (" %s\n", "-c"); |
| 1578 | printf (" %s\n", "-c"); | 2055 | printf (" %s", _("critical threshold (currently ")); |
| 1579 | printf (" %s", _("critical threshold (currently ")); | 2056 | printf ("%0.3fms,%u%%)\n", (float)crit.rta / 1000, crit.pl); |
| 1580 | printf ("%0.3fms,%u%%)\n", (float)crit.rta / 1000, crit.pl); | 2057 | |
| 1581 | printf (" %s\n", "-s"); | 2058 | printf (" %s\n", "-R"); |
| 1582 | printf (" %s\n", _("specify a source IP address or device name")); | 2059 | printf (" %s\n", _("RTA, round trip average, mode warning,critical, ex. 100ms,200ms unit in ms")); |
| 1583 | printf (" %s\n", "-n"); | 2060 | printf (" %s\n", "-P"); |
| 1584 | printf (" %s", _("number of packets to send (currently ")); | 2061 | printf (" %s\n", _("packet loss mode, ex. 40%,50% , unit in %")); |
| 1585 | printf ("%u)\n",packets); | 2062 | printf (" %s\n", "-J"); |
| 1586 | printf (" %s\n", "-i"); | 2063 | printf (" %s\n", _("jitter mode warning,critical, ex. 40.000ms,50.000ms , unit in ms ")); |
| 1587 | printf (" %s", _("max packet interval (currently ")); | 2064 | printf (" %s\n", "-M"); |
| 1588 | printf ("%0.3fms)\n",(float)pkt_interval / 1000); | 2065 | printf (" %s\n", _("MOS mode, between 0 and 4.4 warning,critical, ex. 3.5,3.0")); |
| 1589 | printf (" %s\n", "-I"); | 2066 | printf (" %s\n", "-S"); |
| 1590 | printf (" %s", _("max target interval (currently ")); | 2067 | printf (" %s\n", _("score mode, max value 100 warning,critical, ex. 80,70 ")); |
| 1591 | printf ("%0.3fms)\n", (float)target_interval / 1000); | 2068 | printf (" %s\n", "-O"); |
| 1592 | printf (" %s\n", "-m"); | 2069 | printf (" %s\n", _("detect out of order ICMP packts ")); |
| 1593 | printf (" %s",_("number of alive hosts required for success")); | 2070 | printf (" %s\n", "-H"); |
| 1594 | printf ("\n"); | 2071 | printf (" %s\n", _("specify a target")); |
| 1595 | printf (" %s\n", "-l"); | 2072 | printf (" %s\n", "-s"); |
| 1596 | printf (" %s", _("TTL on outgoing packets (currently ")); | 2073 | printf (" %s\n", _("specify a source IP address or device name")); |
| 1597 | printf ("%u)\n", ttl); | 2074 | printf (" %s\n", "-n"); |
| 1598 | printf (" %s\n", "-t"); | 2075 | printf (" %s", _("number of packets to send (currently ")); |
| 1599 | printf (" %s",_("timeout value (seconds, currently ")); | 2076 | printf ("%u)\n",packets); |
| 1600 | printf ("%u)\n", timeout); | 2077 | printf (" %s\n", "-p"); |
| 1601 | printf (" %s\n", "-b"); | 2078 | printf (" %s", _("number of packets to send (currently ")); |
| 1602 | printf (" %s\n", _("Number of icmp data bytes to send")); | 2079 | printf ("%u)\n",packets); |
| 1603 | printf (" %s %u + %d)\n", _("Packet size will be data bytes + icmp header (currently"),icmp_data_size, ICMP_MINLEN); | 2080 | printf (" %s\n", "-i"); |
| 1604 | printf (" %s\n", "-v"); | 2081 | printf (" %s", _("max packet interval (currently ")); |
| 1605 | printf (" %s\n", _("verbose")); | 2082 | printf ("%0.3fms)\n",(float)pkt_interval / 1000); |
| 1606 | 2083 | printf (" %s\n", "-I"); | |
| 1607 | printf ("\n"); | 2084 | printf (" %s", _("max target interval (currently ")); |
| 1608 | printf ("%s\n", _("Notes:")); | 2085 | printf ("%0.3fms)\n", (float)target_interval / 1000); |
| 1609 | printf (" %s\n", _("The -H switch is optional. Naming a host (or several) to check is not.")); | 2086 | printf (" %s\n", "-m"); |
| 1610 | printf ("\n"); | 2087 | printf (" %s",_("number of alive hosts required for success")); |
| 1611 | printf (" %s\n", _("Threshold format for -w and -c is 200.25,60% for 200.25 msec RTA and 60%")); | 2088 | printf ("\n"); |
| 1612 | printf (" %s\n", _("packet loss. The default values should work well for most users.")); | 2089 | printf (" %s\n", "-l"); |
| 1613 | printf (" %s\n", _("You can specify different RTA factors using the standardized abbreviations")); | 2090 | printf (" %s", _("TTL on outgoing packets (currently ")); |
| 1614 | printf (" %s\n", _("us (microseconds), ms (milliseconds, default) or just plain s for seconds.")); | 2091 | printf ("%u)\n", ttl); |
| 1615 | /* -d not yet implemented */ | 2092 | printf (" %s\n", "-t"); |
| 1616 | /* printf ("%s\n", _("Threshold format for -d is warn,crit. 12,14 means WARNING if >= 12 hops")); | 2093 | printf (" %s",_("timeout value (seconds, currently ")); |
| 1617 | printf ("%s\n", _("are spent and CRITICAL if >= 14 hops are spent.")); | 2094 | printf ("%u)\n", timeout); |
| 1618 | printf ("%s\n\n", _("NOTE: Some systems decrease TTL when forming ICMP_ECHOREPLY, others do not."));*/ | 2095 | printf (" %s\n", "-b"); |
| 1619 | printf ("\n"); | 2096 | printf (" %s\n", _("Number of icmp data bytes to send")); |
| 1620 | printf (" %s\n", _("The -v switch can be specified several times for increased verbosity.")); | 2097 | printf (" %s %u + %d)\n", _("Packet size will be data bytes + icmp header (currently"),icmp_data_size, ICMP_MINLEN); |
| 1621 | /* printf ("%s\n", _("Long options are currently unsupported.")); | 2098 | printf (" %s\n", "-v"); |
| 1622 | printf ("%s\n", _("Options marked with * require an argument")); | 2099 | printf (" %s\n", _("verbose")); |
| 1623 | */ | 2100 | printf ("\n"); |
| 1624 | 2101 | printf ("%s\n", _("Notes:")); | |
| 1625 | printf (UT_SUPPORT); | 2102 | printf (" %s\n", _("If none of R,P,J,M,S or O is specified, default behavior is -R -P")); |
| 2103 | printf (" %s\n", _("The -H switch is optional. Naming a host (or several) to check is not.")); | ||
| 2104 | printf ("\n"); | ||
| 2105 | printf (" %s\n", _("Threshold format for -w and -c is 200.25,60% for 200.25 msec RTA and 60%")); | ||
| 2106 | printf (" %s\n", _("packet loss. The default values should work well for most users.")); | ||
| 2107 | printf (" %s\n", _("You can specify different RTA factors using the standardized abbreviations")); | ||
| 2108 | printf (" %s\n", _("us (microseconds), ms (milliseconds, default) or just plain s for seconds.")); | ||
| 2109 | /* -d not yet implemented */ | ||
| 2110 | /* printf ("%s\n", _("Threshold format for -d is warn,crit. 12,14 means WARNING if >= 12 hops")); | ||
| 2111 | printf ("%s\n", _("are spent and CRITICAL if >= 14 hops are spent.")); | ||
| 2112 | printf ("%s\n\n", _("NOTE: Some systems decrease TTL when forming ICMP_ECHOREPLY, others do not."));*/ | ||
| 2113 | printf ("\n"); | ||
| 2114 | printf (" %s\n", _("The -v switch can be specified several times for increased verbosity.")); | ||
| 2115 | /* printf ("%s\n", _("Long options are currently unsupported.")); | ||
| 2116 | printf ("%s\n", _("Options marked with * require an argument")); | ||
| 2117 | */ | ||
| 2118 | |||
| 2119 | printf (UT_SUPPORT); | ||
| 1626 | } | 2120 | } |
| 1627 | 2121 | ||
| 1628 | 2122 | ||
| @@ -1630,6 +2124,6 @@ print_help(void) | |||
| 1630 | void | 2124 | void |
| 1631 | print_usage (void) | 2125 | print_usage (void) |
| 1632 | { | 2126 | { |
| 1633 | printf ("%s\n", _("Usage:")); | 2127 | printf ("%s\n", _("Usage:")); |
| 1634 | printf(" %s [options] [-H] host1 host2 hostN\n", progname); | 2128 | printf(" %s [options] [-H] host1 host2 hostN\n", progname); |
| 1635 | } | 2129 | } |
diff --git a/plugins-root/t/check_icmp.t b/plugins-root/t/check_icmp.t index 96addd3b..de1d88d2 100644 --- a/plugins-root/t/check_icmp.t +++ b/plugins-root/t/check_icmp.t | |||
| @@ -12,14 +12,14 @@ my $allow_sudo = getTestParameter( "NP_ALLOW_SUDO", | |||
| 12 | "no" ); | 12 | "no" ); |
| 13 | 13 | ||
| 14 | if ($allow_sudo eq "yes" or $> == 0) { | 14 | if ($allow_sudo eq "yes" or $> == 0) { |
| 15 | plan tests => 20; | 15 | plan tests => 40; |
| 16 | } else { | 16 | } else { |
| 17 | plan skip_all => "Need sudo to test check_icmp"; | 17 | plan skip_all => "Need sudo to test check_icmp"; |
| 18 | } | 18 | } |
| 19 | my $sudo = $> == 0 ? '' : 'sudo'; | 19 | my $sudo = $> == 0 ? '' : 'sudo'; |
| 20 | 20 | ||
| 21 | my $successOutput = '/OK - .*?: rta (?:[\d\.]+ms)|(?:nan), lost \d+%/'; | 21 | my $successOutput = '/OK - .*? rta (?:[\d\.]+ms)|(?:nan), lost \d+%/'; |
| 22 | my $failureOutput = '/(WARNING|CRITICAL) - .*?: rta [\d\.]+ms, lost \d%/'; | 22 | my $failureOutput = '/(WARNING|CRITICAL) - .*? rta (?:[\d\.]+ms > [\d\.]+ms|nan)/'; |
| 23 | 23 | ||
| 24 | my $host_responsive = getTestParameter( "NP_HOST_RESPONSIVE", | 24 | my $host_responsive = getTestParameter( "NP_HOST_RESPONSIVE", |
| 25 | "The hostname of system responsive to network requests", | 25 | "The hostname of system responsive to network requests", |
| @@ -54,10 +54,11 @@ is( $res->return_code, 2, "Syntax ok, with forced critical" ); | |||
| 54 | like( $res->output, $failureOutput, "Output OK" ); | 54 | like( $res->output, $failureOutput, "Output OK" ); |
| 55 | 55 | ||
| 56 | $res = NPTest->testCmd( | 56 | $res = NPTest->testCmd( |
| 57 | "$sudo ./check_icmp -H $host_nonresponsive -w 10000ms,100% -c 10000ms,100%" | 57 | "$sudo ./check_icmp -H $host_nonresponsive -w 10000ms,100% -c 10000ms,100% -t 2" |
| 58 | ); | 58 | ); |
| 59 | is( $res->return_code, 2, "Timeout - host nonresponsive" ); | 59 | is( $res->return_code, 2, "Timeout - host nonresponsive" ); |
| 60 | like( $res->output, '/100%/', "Error contains '100%' string (for 100% packet loss)" ); | 60 | like( $res->output, '/pl=100%/', "Error contains 'pl=100%' string (for 100% packet loss)" ); |
| 61 | like( $res->output, '/rta=U/', "Error contains 'rta=U' string" ); | ||
| 61 | 62 | ||
| 62 | $res = NPTest->testCmd( | 63 | $res = NPTest->testCmd( |
| 63 | "$sudo ./check_icmp -w 10000ms,100% -c 10000ms,100%" | 64 | "$sudo ./check_icmp -w 10000ms,100% -c 10000ms,100%" |
| @@ -66,13 +67,13 @@ is( $res->return_code, 3, "No hostname" ); | |||
| 66 | like( $res->output, '/No hosts to check/', "Output with appropriate error message"); | 67 | like( $res->output, '/No hosts to check/', "Output with appropriate error message"); |
| 67 | 68 | ||
| 68 | $res = NPTest->testCmd( | 69 | $res = NPTest->testCmd( |
| 69 | "$sudo ./check_icmp -H $host_nonresponsive -w 10000ms,100% -c 10000ms,100% -n 1 -m 0" | 70 | "$sudo ./check_icmp -H $host_nonresponsive -w 10000ms,100% -c 10000ms,100% -n 1 -m 0 -t 2" |
| 70 | ); | 71 | ); |
| 71 | is( $res->return_code, 0, "One host nonresponsive - zero required" ); | 72 | is( $res->return_code, 0, "One host nonresponsive - zero required" ); |
| 72 | like( $res->output, $successOutput, "Output OK" ); | 73 | like( $res->output, $successOutput, "Output OK" ); |
| 73 | 74 | ||
| 74 | $res = NPTest->testCmd( | 75 | $res = NPTest->testCmd( |
| 75 | "$sudo ./check_icmp -H $host_responsive -H $host_nonresponsive -w 10000ms,100% -c 10000ms,100% -n 1 -m 1" | 76 | "$sudo ./check_icmp -H $host_responsive -H $host_nonresponsive -w 10000ms,100% -c 10000ms,100% -n 1 -m 1 -t 2" |
| 76 | ); | 77 | ); |
| 77 | is( $res->return_code, 0, "One of two host nonresponsive - one required" ); | 78 | is( $res->return_code, 0, "One of two host nonresponsive - one required" ); |
| 78 | like( $res->output, $successOutput, "Output OK" ); | 79 | like( $res->output, $successOutput, "Output OK" ); |
| @@ -94,3 +95,49 @@ $res = NPTest->testCmd( | |||
| 94 | ); | 95 | ); |
| 95 | is( $res->return_code, 0, "Try max packet size" ); | 96 | is( $res->return_code, 0, "Try max packet size" ); |
| 96 | like( $res->output, $successOutput, "Output OK - Didn't overflow" ); | 97 | like( $res->output, $successOutput, "Output OK - Didn't overflow" ); |
| 98 | |||
| 99 | $res = NPTest->testCmd( | ||
| 100 | "$sudo ./check_icmp -H $host_responsive -R 100,100 -n 1 -t 2" | ||
| 101 | ); | ||
| 102 | is( $res->return_code, 0, "rta works" ); | ||
| 103 | like( $res->output, $successOutput, "Output OK" ); | ||
| 104 | $res = NPTest->testCmd( | ||
| 105 | "$sudo ./check_icmp -H $host_responsive -P 80,90 -n 1 -t 2" | ||
| 106 | ); | ||
| 107 | is( $res->return_code, 0, "pl works" ); | ||
| 108 | like( $res->output, '/lost 0%/', "Output OK" ); | ||
| 109 | |||
| 110 | $res = NPTest->testCmd( | ||
| 111 | "$sudo ./check_icmp -H $host_responsive -J 80,90 -t 2" | ||
| 112 | ); | ||
| 113 | is( $res->return_code, 0, "jitter works" ); | ||
| 114 | like( $res->output, '/jitter \d/', "Output OK" ); | ||
| 115 | |||
| 116 | $res = NPTest->testCmd( | ||
| 117 | "$sudo ./check_icmp -H $host_responsive -M 4,3 -t 2" | ||
| 118 | ); | ||
| 119 | is( $res->return_code, 0, "mos works" ); | ||
| 120 | like( $res->output, '/MOS \d/', "Output OK" ); | ||
| 121 | |||
| 122 | $res = NPTest->testCmd( | ||
| 123 | "$sudo ./check_icmp -H $host_responsive -S 80,70 -t 2" | ||
| 124 | ); | ||
| 125 | is( $res->return_code, 0, "score works" ); | ||
| 126 | like( $res->output, '/Score \d/', "Output OK" ); | ||
| 127 | |||
| 128 | $res = NPTest->testCmd( | ||
| 129 | "$sudo ./check_icmp -H $host_responsive -O -t 2" | ||
| 130 | ); | ||
| 131 | is( $res->return_code, 0, "order works" ); | ||
| 132 | like( $res->output, '/Packets in order/', "Output OK" ); | ||
| 133 | |||
| 134 | $res = NPTest->testCmd( | ||
| 135 | "$sudo ./check_icmp -H $host_responsive -O -S 80,70 -M 4,3 -J 80,90 -P 80,90 -R 100,100 -t 2" | ||
| 136 | ); | ||
| 137 | is( $res->return_code, 0, "order works" ); | ||
| 138 | like( $res->output, '/Packets in order/', "Output OK" ); | ||
| 139 | like( $res->output, '/Score \d/', "Output OK" ); | ||
| 140 | like( $res->output, '/MOS \d/', "Output OK" ); | ||
| 141 | like( $res->output, '/jitter \d/', "Output OK" ); | ||
| 142 | like( $res->output, '/lost 0%/', "Output OK" ); | ||
| 143 | like( $res->output, $successOutput, "Output OK" ); | ||
diff --git a/plugins-scripts/check_disk_smb.pl b/plugins-scripts/check_disk_smb.pl index f4d33a7b..eda8dd48 100644 --- a/plugins-scripts/check_disk_smb.pl +++ b/plugins-scripts/check_disk_smb.pl | |||
| @@ -226,7 +226,8 @@ if (/\s*(\d*) blocks of size (\d*)\. (\d*) blocks available/) { | |||
| 226 | my ($total_bytes) = $1 * $2; | 226 | my ($total_bytes) = $1 * $2; |
| 227 | my ($occupied_bytes) = $1 * $2 - $avail_bytes; | 227 | my ($occupied_bytes) = $1 * $2 - $avail_bytes; |
| 228 | my ($avail) = $avail_bytes/1024; | 228 | my ($avail) = $avail_bytes/1024; |
| 229 | my ($capper) = int(($3/$1)*100); | 229 | my ($capper); |
| 230 | if ($1!=0) { $capper = int(($3/$1)*100) } else { $capper=100 }; | ||
| 230 | my ($mountpt) = "\\\\$host\\$share"; | 231 | my ($mountpt) = "\\\\$host\\$share"; |
| 231 | 232 | ||
| 232 | # TODO : why is the kB the standard unit for args ? | 233 | # TODO : why is the kB the standard unit for args ? |
diff --git a/plugins-scripts/check_ircd.pl b/plugins-scripts/check_ircd.pl index 84f20229..15a70802 100755 --- a/plugins-scripts/check_ircd.pl +++ b/plugins-scripts/check_ircd.pl | |||
| @@ -40,15 +40,16 @@ | |||
| 40 | 40 | ||
| 41 | # ----------------------------------------------------------------[ Require ]-- | 41 | # ----------------------------------------------------------------[ Require ]-- |
| 42 | 42 | ||
| 43 | require 5.004; | 43 | require 5.14.0; |
| 44 | 44 | ||
| 45 | # -------------------------------------------------------------------[ Uses ]-- | 45 | # -------------------------------------------------------------------[ Uses ]-- |
| 46 | 46 | ||
| 47 | use Socket; | ||
| 48 | use strict; | 47 | use strict; |
| 48 | use IO::Socket::IP; | ||
| 49 | use Getopt::Long; | 49 | use Getopt::Long; |
| 50 | use vars qw($opt_V $opt_h $opt_t $opt_p $opt_H $opt_w $opt_c $verbose); | 50 | use vars qw($opt_V $opt_h $opt_t $opt_p $opt_H $opt_w $opt_c $opt_4 $opt_6 $verbose); |
| 51 | use vars qw($PROGNAME); | 51 | use vars qw($PROGNAME); |
| 52 | use vars qw($ClientSocket); | ||
| 52 | use FindBin; | 53 | use FindBin; |
| 53 | use lib "$FindBin::Bin"; | 54 | use lib "$FindBin::Bin"; |
| 54 | use utils qw($TIMEOUT %ERRORS &print_revision &support &usage); | 55 | use utils qw($TIMEOUT %ERRORS &print_revision &support &usage); |
| @@ -58,7 +59,6 @@ use utils qw($TIMEOUT %ERRORS &print_revision &support &usage); | |||
| 58 | sub print_help (); | 59 | sub print_help (); |
| 59 | sub print_usage (); | 60 | sub print_usage (); |
| 60 | sub connection ($$$$); | 61 | sub connection ($$$$); |
| 61 | sub bindRemote ($$); | ||
| 62 | 62 | ||
| 63 | # -------------------------------------------------------------[ Environment ]-- | 63 | # -------------------------------------------------------------[ Environment ]-- |
| 64 | 64 | ||
| @@ -104,7 +104,7 @@ sub connection ($$$$) | |||
| 104 | $answer = "Server $in_remotehost has less than 0 users! Something is Really WRONG!\n"; | 104 | $answer = "Server $in_remotehost has less than 0 users! Something is Really WRONG!\n"; |
| 105 | } | 105 | } |
| 106 | 106 | ||
| 107 | print ClientSocket "quit\n"; | 107 | print $ClientSocket "quit\n"; |
| 108 | print $answer; | 108 | print $answer; |
| 109 | exit $ERRORS{$state}; | 109 | exit $ERRORS{$state}; |
| 110 | } | 110 | } |
| @@ -112,7 +112,7 @@ sub connection ($$$$) | |||
| 112 | # ------------------------------------------------------------[ print_usage ]-- | 112 | # ------------------------------------------------------------[ print_usage ]-- |
| 113 | 113 | ||
| 114 | sub print_usage () { | 114 | sub print_usage () { |
| 115 | print "Usage: $PROGNAME -H <host> [-w <warn>] [-c <crit>] [-p <port>]\n"; | 115 | print "Usage: $PROGNAME -H <host> [-w <warn>] [-c <crit>] [-p <port>] [ -4|-6 ]\n"; |
| 116 | } | 116 | } |
| 117 | 117 | ||
| 118 | # -------------------------------------------------------------[ print_help ]-- | 118 | # -------------------------------------------------------------[ print_help ]-- |
| @@ -135,35 +135,15 @@ Perl Check IRCD plugin for monitoring | |||
| 135 | Number of connected users which generates a critical state (Default: 100) | 135 | Number of connected users which generates a critical state (Default: 100) |
| 136 | -p, --port=INTEGER | 136 | -p, --port=INTEGER |
| 137 | Port that the ircd daemon is running on <host> (Default: 6667) | 137 | Port that the ircd daemon is running on <host> (Default: 6667) |
| 138 | -4, --use-ipv4 | ||
| 139 | Use IPv4 connection | ||
| 140 | -6, --use-ipv6 | ||
| 141 | Use IPv6 connection | ||
| 138 | -v, --verbose | 142 | -v, --verbose |
| 139 | Print extra debugging information | 143 | Print extra debugging information |
| 140 | "; | 144 | "; |
| 141 | } | 145 | } |
| 142 | 146 | ||
| 143 | # -------------------------------------------------------------[ bindRemote ]-- | ||
| 144 | |||
| 145 | sub bindRemote ($$) | ||
| 146 | { | ||
| 147 | my ($in_remotehost, $in_remoteport) = @_; | ||
| 148 | my $proto = getprotobyname('tcp'); | ||
| 149 | my $sockaddr; | ||
| 150 | my $that; | ||
| 151 | my ($name, $aliases,$type,$len,$thataddr) = gethostbyname($in_remotehost); | ||
| 152 | |||
| 153 | if (!socket(ClientSocket,AF_INET, SOCK_STREAM, $proto)) { | ||
| 154 | print "IRCD UNKNOWN: Could not start socket ($!)\n"; | ||
| 155 | exit $ERRORS{"UNKNOWN"}; | ||
| 156 | } | ||
| 157 | $sockaddr = 'S n a4 x8'; | ||
| 158 | $that = pack($sockaddr, AF_INET, $in_remoteport, $thataddr); | ||
| 159 | if (!connect(ClientSocket, $that)) { | ||
| 160 | print "IRCD UNKNOWN: Could not connect socket ($!)\n"; | ||
| 161 | exit $ERRORS{"UNKNOWN"}; | ||
| 162 | } | ||
| 163 | select(ClientSocket); $| = 1; select(STDOUT); | ||
| 164 | return \*ClientSocket; | ||
| 165 | } | ||
| 166 | |||
| 167 | # ===================================================================[ MAIN ]== | 147 | # ===================================================================[ MAIN ]== |
| 168 | 148 | ||
| 169 | MAIN: | 149 | MAIN: |
| @@ -179,6 +159,8 @@ MAIN: | |||
| 179 | "w=i" => \$opt_w, "warning=i" => \$opt_w, | 159 | "w=i" => \$opt_w, "warning=i" => \$opt_w, |
| 180 | "c=i" => \$opt_c, "critical=i" => \$opt_c, | 160 | "c=i" => \$opt_c, "critical=i" => \$opt_c, |
| 181 | "p=i" => \$opt_p, "port=i" => \$opt_p, | 161 | "p=i" => \$opt_p, "port=i" => \$opt_p, |
| 162 | "4" => \$opt_4, "use-ipv4" => \$opt_4, | ||
| 163 | "6" => \$opt_6, "use-ipv6" => \$opt_6, | ||
| 182 | "H=s" => \$opt_H, "hostname=s" => \$opt_H); | 164 | "H=s" => \$opt_H, "hostname=s" => \$opt_H); |
| 183 | 165 | ||
| 184 | if ($opt_V) { | 166 | if ($opt_V) { |
| @@ -189,7 +171,7 @@ MAIN: | |||
| 189 | if ($opt_h) {print_help(); exit $ERRORS{'UNKNOWN'};} | 171 | if ($opt_h) {print_help(); exit $ERRORS{'UNKNOWN'};} |
| 190 | 172 | ||
| 191 | ($opt_H) || ($opt_H = shift @ARGV) || usage("Host name/address not specified\n"); | 173 | ($opt_H) || ($opt_H = shift @ARGV) || usage("Host name/address not specified\n"); |
| 192 | my $remotehost = $1 if ($opt_H =~ /([-.A-Za-z0-9]+)/); | 174 | my $remotehost = $1 if ($opt_H =~ /([-.:%A-Za-z0-9]+)/); |
| 193 | ($remotehost) || usage("Invalid host: $opt_H\n"); | 175 | ($remotehost) || usage("Invalid host: $opt_H\n"); |
| 194 | 176 | ||
| 195 | ($opt_w) || ($opt_w = shift @ARGV) || ($opt_w = 50); | 177 | ($opt_w) || ($opt_w = shift @ARGV) || ($opt_w = 50); |
| @@ -214,21 +196,28 @@ MAIN: | |||
| 214 | 196 | ||
| 215 | alarm($TIMEOUT); | 197 | alarm($TIMEOUT); |
| 216 | 198 | ||
| 217 | my ($name, $alias, $proto) = getprotobyname('tcp'); | ||
| 218 | |||
| 219 | print "MAIN(debug): binding to remote host: $remotehost -> $remoteport\n" if $verbose; | 199 | print "MAIN(debug): binding to remote host: $remotehost -> $remoteport\n" if $verbose; |
| 220 | my $ClientSocket = &bindRemote($remotehost,$remoteport); | 200 | $ClientSocket = IO::Socket::IP->new( |
| 201 | PeerHost => $remotehost, | ||
| 202 | PeerService => $remoteport, | ||
| 203 | Family => $opt_4 ? AF_INET : $opt_6 ? AF_INET6 : undef, | ||
| 204 | Type => SOCK_STREAM, | ||
| 205 | ); | ||
| 206 | if (!$ClientSocket) { | ||
| 207 | print "IRCD UNKNOWN: Could not start socket ($!)\n"; | ||
| 208 | exit $ERRORS{"UNKNOWN"}; | ||
| 209 | } | ||
| 221 | 210 | ||
| 222 | print ClientSocket "NICK $NICK\nUSER $USER_INFO\n"; | 211 | print $ClientSocket "NICK $NICK\nUSER $USER_INFO\n"; |
| 223 | 212 | ||
| 224 | while (<ClientSocket>) { | 213 | while (<$ClientSocket>) { |
| 225 | print "MAIN(debug): default var = $_\n" if $verbose; | 214 | print "MAIN(debug): default var = $_\n" if $verbose; |
| 226 | 215 | ||
| 227 | # DALnet,LagNet,UnderNet etc. Require this! | 216 | # DALnet,LagNet,UnderNet etc. Require this! |
| 228 | # Replies with a PONG when presented with a PING query. | 217 | # Replies with a PONG when presented with a PING query. |
| 229 | # If a server doesn't require it, it will be ignored. | 218 | # If a server doesn't require it, it will be ignored. |
| 230 | 219 | ||
| 231 | if (m/^PING (.*)/) {print ClientSocket "PONG $1\n";} | 220 | if (m/^PING (.*)/) {print $ClientSocket "PONG $1\n";} |
| 232 | 221 | ||
| 233 | alarm(0); | 222 | alarm(0); |
| 234 | 223 | ||
diff --git a/plugins-scripts/check_mailq.pl b/plugins-scripts/check_mailq.pl index 49156af3..f143c6fa 100755 --- a/plugins-scripts/check_mailq.pl +++ b/plugins-scripts/check_mailq.pl | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | #!@PERL@ -w | 1 | #!@PERL@ -w |
| 2 | 2 | ||
| 3 | # check_mailq - check to see how many messages are in the smtp queue awating | 3 | # check_mailq - check to see how many messages are in the smtp queue awating |
| 4 | # transmittal. | 4 | # transmittal. |
| 5 | # | 5 | # |
| 6 | # Initial version support sendmail's mailq command | 6 | # Initial version support sendmail's mailq command |
| 7 | # Support for multiple sendmail queues (Carlos Canau) | 7 | # Support for multiple sendmail queues (Carlos Canau) |
| @@ -29,8 +29,8 @@ use POSIX; | |||
| 29 | use strict; | 29 | use strict; |
| 30 | use Getopt::Long; | 30 | use Getopt::Long; |
| 31 | use vars qw($opt_V $opt_h $opt_v $verbose $PROGNAME $opt_w $opt_c $opt_t $opt_s $opt_d | 31 | use vars qw($opt_V $opt_h $opt_v $verbose $PROGNAME $opt_w $opt_c $opt_t $opt_s $opt_d |
| 32 | $opt_M $mailq $status $state $msg $msg_q $msg_p $opt_W $opt_C $mailq $mailq_args | 32 | $opt_M $mailq $status $state $msg $msg_q $msg_p $opt_W $opt_C $mailq $mailq_args |
| 33 | @lines %srcdomains %dstdomains); | 33 | @lines %srcdomains %dstdomains); |
| 34 | use FindBin; | 34 | use FindBin; |
| 35 | use lib "$FindBin::Bin"; | 35 | use lib "$FindBin::Bin"; |
| 36 | use utils qw(%ERRORS &print_revision &support &usage ); | 36 | use utils qw(%ERRORS &print_revision &support &usage ); |
| @@ -42,10 +42,10 @@ sub print_usage (); | |||
| 42 | sub process_arguments (); | 42 | sub process_arguments (); |
| 43 | 43 | ||
| 44 | $ENV{'PATH'}='@TRUSTED_PATH@'; | 44 | $ENV{'PATH'}='@TRUSTED_PATH@'; |
| 45 | $ENV{'BASH_ENV'}=''; | 45 | $ENV{'BASH_ENV'}=''; |
| 46 | $ENV{'ENV'}=''; | 46 | $ENV{'ENV'}=''; |
| 47 | $PROGNAME = "check_mailq"; | 47 | $PROGNAME = "check_mailq"; |
| 48 | $mailq = 'sendmail'; # default | 48 | $mailq = 'sendmail'; # default |
| 49 | $msg_q = 0 ; | 49 | $msg_q = 0 ; |
| 50 | $msg_p = 0 ; | 50 | $msg_p = 0 ; |
| 51 | # If appended, must start with a space | 51 | # If appended, must start with a space |
| @@ -55,50 +55,49 @@ $state = $ERRORS{'UNKNOWN'}; | |||
| 55 | Getopt::Long::Configure('bundling'); | 55 | Getopt::Long::Configure('bundling'); |
| 56 | $status = process_arguments(); | 56 | $status = process_arguments(); |
| 57 | if ($status){ | 57 | if ($status){ |
| 58 | print "ERROR: processing arguments\n"; | 58 | print "ERROR: processing arguments\n"; |
| 59 | exit $ERRORS{"UNKNOWN"}; | 59 | exit $ERRORS{"UNKNOWN"}; |
| 60 | } | 60 | } |
| 61 | 61 | ||
| 62 | if ($opt_s) { | 62 | if ($opt_s) { |
| 63 | if (defined $utils::PATH_TO_SUDO && -x $utils::PATH_TO_SUDO) { | 63 | if (defined $utils::PATH_TO_SUDO && -x $utils::PATH_TO_SUDO) { |
| 64 | $sudo = $utils::PATH_TO_SUDO; | 64 | $sudo = $utils::PATH_TO_SUDO; |
| 65 | } else { | 65 | } else { |
| 66 | print "ERROR: Cannot execute sudo\n"; | 66 | print "ERROR: Cannot execute sudo\n"; |
| 67 | exit $ERRORS{'UNKNOWN'}; | 67 | exit $ERRORS{'UNKNOWN'}; |
| 68 | } | 68 | } |
| 69 | } else { | 69 | } else { |
| 70 | $sudo = ""; | 70 | $sudo = ""; |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | if ($opt_d) { | 73 | if ($opt_d) { |
| 74 | $mailq_args = $mailq_args . ' -C ' . $opt_d; | 74 | $mailq_args = $mailq_args . ' -C ' . $opt_d; |
| 75 | } | 75 | } |
| 76 | 76 | ||
| 77 | $SIG{'ALRM'} = sub { | 77 | $SIG{'ALRM'} = sub { |
| 78 | print ("ERROR: timed out waiting for $utils::PATH_TO_MAILQ \n"); | 78 | print ("ERROR: timed out waiting for $utils::PATH_TO_MAILQ \n"); |
| 79 | exit $ERRORS{"WARNING"}; | 79 | exit $ERRORS{"WARNING"}; |
| 80 | }; | 80 | }; |
| 81 | alarm($opt_t); | 81 | alarm($opt_t); |
| 82 | 82 | ||
| 83 | # switch based on MTA | 83 | # switch based on MTA |
| 84 | 84 | ||
| 85 | if ($mailq eq "sendmail") { | 85 | if ($mailq eq "sendmail") { |
| 86 | 86 | if( ! $utils::PATH_TO_MAILQ) { | |
| 87 | ## open mailq | 87 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; |
| 88 | if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) { | 88 | exit $ERRORS{'UNKNOWN'}; |
| 89 | if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) { | 89 | } |
| 90 | print "ERROR: could not open $utils::PATH_TO_MAILQ \n"; | 90 | |
| 91 | exit $ERRORS{'UNKNOWN'}; | 91 | if ( ! -x $utils::PATH_TO_MAILQ) { |
| 92 | } | 92 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; |
| 93 | }elsif( defined $utils::PATH_TO_MAILQ){ | 93 | exit $ERRORS{'UNKNOWN'}; |
| 94 | unless (-x $utils::PATH_TO_MAILQ) { | 94 | } |
| 95 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; | 95 | |
| 96 | exit $ERRORS{'UNKNOWN'}; | 96 | ## open mailq |
| 97 | } | 97 | if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) { |
| 98 | } else { | 98 | print "ERROR: could not open $sudo $utils::PATH_TO_MAILQ \n"; |
| 99 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; | 99 | exit $ERRORS{'UNKNOWN'}; |
| 100 | exit $ERRORS{'UNKNOWN'}; | 100 | } |
| 101 | } | ||
| 102 | # single queue empty | 101 | # single queue empty |
| 103 | ##/var/spool/mqueue is empty | 102 | ##/var/spool/mqueue is empty |
| 104 | # single queue: 1 | 103 | # single queue: 1 |
| @@ -168,213 +167,207 @@ if ($mailq eq "sendmail") { | |||
| 168 | ## /var/spool/mqueue is empty | 167 | ## /var/spool/mqueue is empty |
| 169 | ## Total requests: 0 | 168 | ## Total requests: 0 |
| 170 | 169 | ||
| 171 | my $this_msg_q = 0; | 170 | my $this_msg_q = 0; |
| 172 | while (<MAILQ>) { | 171 | while (<MAILQ>) { |
| 173 | 172 | ||
| 174 | # match email addr on queue listing | 173 | # match email addr on queue listing |
| 175 | if ( (/<.*@.*\.(\w+\.\w+)>/) || (/<.*@(\w+\.\w+)>/) ) { | 174 | if ( (/<.*@.*\.(\w+\.\w+)>/) || (/<.*@(\w+\.\w+)>/) ) { |
| 176 | my $domain = $1; | 175 | my $domain = $1; |
| 177 | if (/^\w+/) { | 176 | if (/^\w+/) { |
| 178 | print "$utils::PATH_TO_MAILQ = srcdomain = $domain \n" if $verbose ; | 177 | print "$utils::PATH_TO_MAILQ = srcdomain = $domain \n" if $verbose ; |
| 179 | $srcdomains{$domain} ++; | 178 | $srcdomains{$domain} ++; |
| 180 | } | 179 | } |
| 181 | next; | 180 | next; |
| 182 | } | 181 | } |
| 183 | |||
| 184 | # | ||
| 185 | # ... | ||
| 186 | # sendmail considers a message with more than one destiny, say N, to the same MX | ||
| 187 | # to have N messages in queue. | ||
| 188 | # we will only consider one in this code | ||
| 189 | if (( /\s\(reply:\sread\serror\sfrom\s.*\.(\w+\.\w+)\.$/ ) || ( /\s\(reply:\sread\serror\sfrom\s(\w+\.\w+)\.$/ ) || | ||
| 190 | ( /\s\(timeout\swriting\smessage\sto\s.*\.(\w+\.\w+)\.:/ ) || ( /\s\(timeout\swriting\smessage\sto\s(\w+\.\w+)\.:/ ) || | ||
| 191 | ( /\s\(host\smap:\slookup\s\(.*\.(\w+\.\w+)\):/ ) || ( /\s\(host\smap:\slookup\s\((\w+\.\w+)\):/ ) || | ||
| 192 | ( /\s\(Deferred:\s.*\s.*\.(\w+\.\w+)\.\)/ ) || ( /\s\(Deferred:\s.*\s(\w+\.\w+)\.\)/ ) ) { | ||
| 193 | |||
| 194 | print "$utils::PATH_TO_MAILQ = dstdomain = $1 \n" if $verbose ; | ||
| 195 | $dstdomains{$1} ++; | ||
| 196 | } | ||
| 197 | |||
| 198 | if (/\s+\(I\/O\serror\)/) { | ||
| 199 | print "$utils::PATH_TO_MAILQ = dstdomain = UNKNOWN \n" if $verbose ; | ||
| 200 | $dstdomains{'UNKNOWN'} ++; | ||
| 201 | } | ||
| 202 | |||
| 203 | # Finally look at the overall queue length | ||
| 204 | # | ||
| 205 | if (/mqueue/) { | ||
| 206 | print "$utils::PATH_TO_MAILQ = $_ "if $verbose ; | ||
| 207 | if (/ \((\d+) request/) { | ||
| 208 | # | ||
| 209 | # single queue: first line | ||
| 210 | # multi queue: one for each queue. overwrite on multi queue below | ||
| 211 | $this_msg_q = $1 ; | ||
| 212 | $msg_q += $1 ; | ||
| 213 | } | ||
| 214 | } elsif (/^\s+Total\sRequests:\s(\d+)$/i) { | ||
| 215 | if ($this_msg_q) { | ||
| 216 | $this_msg_q = 0 ; | ||
| 217 | } else { | ||
| 218 | print "$utils::PATH_TO_MAILQ = $_ \n" if $verbose ; | ||
| 219 | # | ||
| 220 | # multi queue: last line | ||
| 221 | $msg_q += $1 ; | ||
| 222 | } | ||
| 223 | } | ||
| 224 | |||
| 225 | } | ||
| 226 | |||
| 227 | |||
| 228 | ## close mailq | ||
| 229 | |||
| 230 | close (MAILQ); | ||
| 231 | |||
| 232 | if ( $? ) { | ||
| 233 | print "CRITICAL: Error code ".($?>>8)." returned from $utils::PATH_TO_MAILQ",$/; | ||
| 234 | exit $ERRORS{CRITICAL}; | ||
| 235 | } | ||
| 236 | |||
| 237 | ## shut off the alarm | ||
| 238 | alarm(0); | ||
| 239 | |||
| 240 | |||
| 241 | |||
| 242 | ## now check the queue length(s) | ||
| 243 | |||
| 244 | if ($msg_q == 0) { | ||
| 245 | $msg = "OK: $mailq mailq is empty"; | ||
| 246 | $state = $ERRORS{'OK'}; | ||
| 247 | } else { | ||
| 248 | print "msg_q = $msg_q warn=$opt_w crit=$opt_c\n" if $verbose; | ||
| 249 | |||
| 250 | # overall queue length | ||
| 251 | if ($msg_q < $opt_w) { | ||
| 252 | $msg = "OK: $mailq mailq ($msg_q) is below threshold ($opt_w/$opt_c)"; | ||
| 253 | $state = $ERRORS{'OK'}; | ||
| 254 | }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) { | ||
| 255 | $msg = "WARNING: $mailq mailq is $msg_q (threshold w = $opt_w)"; | ||
| 256 | $state = $ERRORS{'WARNING'}; | ||
| 257 | }else { | ||
| 258 | $msg = "CRITICAL: $mailq mailq is $msg_q (threshold c = $opt_c)"; | ||
| 259 | $state = $ERRORS{'CRITICAL'}; | ||
| 260 | } | ||
| 261 | |||
| 262 | # check for domain specific queue lengths if requested | ||
| 263 | if (defined $opt_W) { | ||
| 264 | |||
| 265 | # Apply threshold to queue lengths FROM domain | ||
| 266 | my @srckeys = sort { $srcdomains{$b} <=> $srcdomains{$a} } keys %srcdomains; | ||
| 267 | my $srcmaxkey = $srckeys[0]; | ||
| 268 | print "src max is $srcmaxkey with $srcdomains{$srcmaxkey} messages\n" if $verbose; | ||
| 269 | |||
| 270 | if ($srcdomains{$srcmaxkey} >= $opt_W && $srcdomains{$srcmaxkey} < $opt_C) { | ||
| 271 | if ($state == $ERRORS{'OK'}) { | ||
| 272 | $msg = "WARNING: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)"; | ||
| 273 | $state = $ERRORS{'WARNING'}; | ||
| 274 | } elsif (($state == $ERRORS{'WARNING'}) || ($state == $ERRORS{'CRITICAL'})){ | ||
| 275 | $msg .= " -and- $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)"; | ||
| 276 | } else { | ||
| 277 | $msg = "WARNING: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)"; | ||
| 278 | $state = $ERRORS{'WARNING'}; | ||
| 279 | } | ||
| 280 | } elsif ($srcdomains{$srcmaxkey} >= $opt_C) { | ||
| 281 | if ($state == $ERRORS{'OK'}) { | ||
| 282 | $msg = "CRITICAL: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold C = $opt_C)"; | ||
| 283 | $state = $ERRORS{'CRITICAL'}; | ||
| 284 | } elsif ($state == $ERRORS{'WARNING'}) { | ||
| 285 | $msg = "CRITICAL: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold C = $opt_C) -and- " . $msg; | ||
| 286 | $msg =~ s/WARNING: //; | ||
| 287 | } elsif ($state == $ERRORS{'CRITICAL'}) { | ||
| 288 | $msg .= " -and- $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)"; | ||
| 289 | } else { | ||
| 290 | $msg = "CRITICAL: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)"; | ||
| 291 | $state = $ERRORS{'CRITICAL'}; | ||
| 292 | } | ||
| 293 | } else { | ||
| 294 | if ($srcdomains{$srcmaxkey} > 0) { | ||
| 295 | $msg .= " $srcdomains{$srcmaxkey} msgs. FROM $srcmaxkey is below threshold ($opt_W/$opt_C)"; | ||
| 296 | } | ||
| 297 | } | ||
| 298 | |||
| 299 | # Apply threshold to queue lengths TO domain | ||
| 300 | my @dstkeys = sort { $dstdomains{$b} <=> $dstdomains{$a} } keys %dstdomains; | ||
| 301 | my $dstmaxkey = $dstkeys[0]; | ||
| 302 | print "dst max is $dstmaxkey with $dstdomains{$dstmaxkey} messages\n" if $verbose; | ||
| 303 | |||
| 304 | if ($dstdomains{$dstmaxkey} >= $opt_W && $dstdomains{$dstmaxkey} < $opt_C) { | ||
| 305 | if ($state == $ERRORS{'OK'}) { | ||
| 306 | $msg = "WARNING: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)"; | ||
| 307 | $state = $ERRORS{'WARNING'}; | ||
| 308 | } elsif (($state == $ERRORS{'WARNING'}) || ($state == $ERRORS{'CRITICAL'})){ | ||
| 309 | $msg .= " -and- $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)"; | ||
| 310 | } else { | ||
| 311 | $msg = "WARNING: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)"; | ||
| 312 | $state = $ERRORS{'WARNING'}; | ||
| 313 | } | ||
| 314 | } elsif ($dstdomains{$dstmaxkey} >= $opt_C) { | ||
| 315 | if ($state == $ERRORS{'OK'}) { | ||
| 316 | $msg = "CRITICAL: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold C = $opt_C)"; | ||
| 317 | $state = $ERRORS{'CRITICAL'}; | ||
| 318 | } elsif ($state == $ERRORS{'WARNING'}) { | ||
| 319 | $msg = "CRITICAL: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold C = $opt_C) -and- " . $msg; | ||
| 320 | $msg =~ s/WARNING: //; | ||
| 321 | } elsif ($state == $ERRORS{'CRITICAL'}) { | ||
| 322 | $msg .= " -and- $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)"; | ||
| 323 | } else { | ||
| 324 | $msg = "CRITICAL: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)"; | ||
| 325 | $state = $ERRORS{'CRITICAL'}; | ||
| 326 | } | ||
| 327 | } else { | ||
| 328 | if ($dstdomains{$dstmaxkey} > 0) { | ||
| 329 | $msg .= " $dstdomains{$dstmaxkey} msgs. TO $dstmaxkey is below threshold ($opt_W/$opt_C)"; | ||
| 330 | } | ||
| 331 | } | ||
| 332 | |||
| 333 | } # End of queue length thresholds | ||
| 334 | |||
| 335 | } | ||
| 336 | 182 | ||
| 337 | } # end of ($mailq eq "sendmail") | 183 | # |
| 338 | elsif ( $mailq eq "postfix" ) { | 184 | # ... |
| 185 | # sendmail considers a message with more than one destiny, say N, to the same MX | ||
| 186 | # to have N messages in queue. | ||
| 187 | # we will only consider one in this code | ||
| 188 | if (( /\s\(reply:\sread\serror\sfrom\s.*\.(\w+\.\w+)\.$/ ) || ( /\s\(reply:\sread\serror\sfrom\s(\w+\.\w+)\.$/ ) || | ||
| 189 | ( /\s\(timeout\swriting\smessage\sto\s.*\.(\w+\.\w+)\.:/ ) || ( /\s\(timeout\swriting\smessage\sto\s(\w+\.\w+)\.:/ ) || | ||
| 190 | ( /\s\(host\smap:\slookup\s\(.*\.(\w+\.\w+)\):/ ) || ( /\s\(host\smap:\slookup\s\((\w+\.\w+)\):/ ) || | ||
| 191 | ( /\s\(Deferred:\s.*\s.*\.(\w+\.\w+)\.\)/ ) || ( /\s\(Deferred:\s.*\s(\w+\.\w+)\.\)/ ) ) { | ||
| 192 | |||
| 193 | print "$utils::PATH_TO_MAILQ = dstdomain = $1 \n" if $verbose ; | ||
| 194 | $dstdomains{$1} ++; | ||
| 195 | } | ||
| 339 | 196 | ||
| 340 | ## open mailq | 197 | if (/\s+\(I\/O\serror\)/) { |
| 341 | if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) { | 198 | print "$utils::PATH_TO_MAILQ = dstdomain = UNKNOWN \n" if $verbose ; |
| 342 | if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ$mailq_args | " ) ) { | 199 | $dstdomains{'UNKNOWN'} ++; |
| 343 | print "ERROR: could not open $utils::PATH_TO_MAILQ$mailq_args \n"; | ||
| 344 | exit $ERRORS{'UNKNOWN'}; | ||
| 345 | } | ||
| 346 | }elsif( defined $utils::PATH_TO_MAILQ){ | ||
| 347 | unless (-x $utils::PATH_TO_MAILQ) { | ||
| 348 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; | ||
| 349 | exit $ERRORS{'UNKNOWN'}; | ||
| 350 | } | ||
| 351 | } else { | ||
| 352 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; | ||
| 353 | exit $ERRORS{'UNKNOWN'}; | ||
| 354 | } | 200 | } |
| 355 | 201 | ||
| 202 | # Finally look at the overall queue length | ||
| 203 | # | ||
| 204 | if (/mqueue/) { | ||
| 205 | print "$utils::PATH_TO_MAILQ = $_ "if $verbose ; | ||
| 206 | if (/ \((\d+) request/) { | ||
| 207 | # | ||
| 208 | # single queue: first line | ||
| 209 | # multi queue: one for each queue. overwrite on multi queue below | ||
| 210 | $this_msg_q = $1 ; | ||
| 211 | $msg_q += $1 ; | ||
| 212 | } | ||
| 213 | } elsif (/^\s+Total\sRequests:\s(\d+)$/i) { | ||
| 214 | if ($this_msg_q) { | ||
| 215 | $this_msg_q = 0 ; | ||
| 216 | } else { | ||
| 217 | print "$utils::PATH_TO_MAILQ = $_ \n" if $verbose ; | ||
| 218 | # | ||
| 219 | # multi queue: last line | ||
| 220 | $msg_q += $1 ; | ||
| 221 | } | ||
| 222 | } | ||
| 356 | 223 | ||
| 357 | @lines = reverse <MAILQ>; | 224 | } |
| 225 | |||
| 226 | ## close mailq | ||
| 227 | close (MAILQ); | ||
| 228 | |||
| 229 | if ( $? ) { | ||
| 230 | print "CRITICAL: Error code ".($?>>8)." returned from $utils::PATH_TO_MAILQ",$/; | ||
| 231 | exit $ERRORS{CRITICAL}; | ||
| 232 | } | ||
| 233 | |||
| 234 | ## shut off the alarm | ||
| 235 | alarm(0); | ||
| 236 | |||
| 237 | ## now check the queue length(s) | ||
| 238 | |||
| 239 | if ($msg_q == 0) { | ||
| 240 | $msg = "OK: $mailq mailq is empty"; | ||
| 241 | $state = $ERRORS{'OK'}; | ||
| 242 | } else { | ||
| 243 | print "msg_q = $msg_q warn=$opt_w crit=$opt_c\n" if $verbose; | ||
| 244 | |||
| 245 | # overall queue length | ||
| 246 | if ($msg_q < $opt_w) { | ||
| 247 | $msg = "OK: $mailq mailq ($msg_q) is below threshold ($opt_w/$opt_c)"; | ||
| 248 | $state = $ERRORS{'OK'}; | ||
| 249 | }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) { | ||
| 250 | $msg = "WARNING: $mailq mailq is $msg_q (threshold w = $opt_w)"; | ||
| 251 | $state = $ERRORS{'WARNING'}; | ||
| 252 | }else { | ||
| 253 | $msg = "CRITICAL: $mailq mailq is $msg_q (threshold c = $opt_c)"; | ||
| 254 | $state = $ERRORS{'CRITICAL'}; | ||
| 255 | } | ||
| 358 | 256 | ||
| 359 | # close qmail-qstat | 257 | # check for domain specific queue lengths if requested |
| 360 | close MAILQ; | 258 | if (defined $opt_W) { |
| 259 | |||
| 260 | # Apply threshold to queue lengths FROM domain | ||
| 261 | my @srckeys = sort { $srcdomains{$b} <=> $srcdomains{$a} } keys %srcdomains; | ||
| 262 | my $srcmaxkey = $srckeys[0]; | ||
| 263 | print "src max is $srcmaxkey with $srcdomains{$srcmaxkey} messages\n" if $verbose; | ||
| 264 | |||
| 265 | if ($srcdomains{$srcmaxkey} >= $opt_W && $srcdomains{$srcmaxkey} < $opt_C) { | ||
| 266 | if ($state == $ERRORS{'OK'}) { | ||
| 267 | $msg = "WARNING: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)"; | ||
| 268 | $state = $ERRORS{'WARNING'}; | ||
| 269 | } elsif (($state == $ERRORS{'WARNING'}) || ($state == $ERRORS{'CRITICAL'})){ | ||
| 270 | $msg .= " -and- $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)"; | ||
| 271 | } else { | ||
| 272 | $msg = "WARNING: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)"; | ||
| 273 | $state = $ERRORS{'WARNING'}; | ||
| 274 | } | ||
| 275 | } elsif ($srcdomains{$srcmaxkey} >= $opt_C) { | ||
| 276 | if ($state == $ERRORS{'OK'}) { | ||
| 277 | $msg = "CRITICAL: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold C = $opt_C)"; | ||
| 278 | $state = $ERRORS{'CRITICAL'}; | ||
| 279 | } elsif ($state == $ERRORS{'WARNING'}) { | ||
| 280 | $msg = "CRITICAL: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold C = $opt_C) -and- " . $msg; | ||
| 281 | $msg =~ s/WARNING: //; | ||
| 282 | } elsif ($state == $ERRORS{'CRITICAL'}) { | ||
| 283 | $msg .= " -and- $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)"; | ||
| 284 | } else { | ||
| 285 | $msg = "CRITICAL: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)"; | ||
| 286 | $state = $ERRORS{'CRITICAL'}; | ||
| 287 | } | ||
| 288 | } else { | ||
| 289 | if ($srcdomains{$srcmaxkey} > 0) { | ||
| 290 | $msg .= " $srcdomains{$srcmaxkey} msgs. FROM $srcmaxkey is below threshold ($opt_W/$opt_C)"; | ||
| 291 | } | ||
| 292 | } | ||
| 293 | |||
| 294 | # Apply threshold to queue lengths TO domain | ||
| 295 | my @dstkeys = sort { $dstdomains{$b} <=> $dstdomains{$a} } keys %dstdomains; | ||
| 296 | my $dstmaxkey = $dstkeys[0]; | ||
| 297 | print "dst max is $dstmaxkey with $dstdomains{$dstmaxkey} messages\n" if $verbose; | ||
| 298 | |||
| 299 | if ($dstdomains{$dstmaxkey} >= $opt_W && $dstdomains{$dstmaxkey} < $opt_C) { | ||
| 300 | if ($state == $ERRORS{'OK'}) { | ||
| 301 | $msg = "WARNING: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)"; | ||
| 302 | $state = $ERRORS{'WARNING'}; | ||
| 303 | } elsif (($state == $ERRORS{'WARNING'}) || ($state == $ERRORS{'CRITICAL'})){ | ||
| 304 | $msg .= " -and- $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)"; | ||
| 305 | } else { | ||
| 306 | $msg = "WARNING: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)"; | ||
| 307 | $state = $ERRORS{'WARNING'}; | ||
| 308 | } | ||
| 309 | } elsif ($dstdomains{$dstmaxkey} >= $opt_C) { | ||
| 310 | if ($state == $ERRORS{'OK'}) { | ||
| 311 | $msg = "CRITICAL: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold C = $opt_C)"; | ||
| 312 | $state = $ERRORS{'CRITICAL'}; | ||
| 313 | } elsif ($state == $ERRORS{'WARNING'}) { | ||
| 314 | $msg = "CRITICAL: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold C = $opt_C) -and- " . $msg; | ||
| 315 | $msg =~ s/WARNING: //; | ||
| 316 | } elsif ($state == $ERRORS{'CRITICAL'}) { | ||
| 317 | $msg .= " -and- $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)"; | ||
| 318 | } else { | ||
| 319 | $msg = "CRITICAL: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)"; | ||
| 320 | $state = $ERRORS{'CRITICAL'}; | ||
| 321 | } | ||
| 322 | } else { | ||
| 323 | if ($dstdomains{$dstmaxkey} > 0) { | ||
| 324 | $msg .= " $dstdomains{$dstmaxkey} msgs. TO $dstmaxkey is below threshold ($opt_W/$opt_C)"; | ||
| 325 | } | ||
| 326 | } | ||
| 361 | 327 | ||
| 362 | if ( $? ) { | 328 | } # End of queue length thresholds |
| 363 | print "CRITICAL: Error code ".($?>>8)." returned from $utils::PATH_TO_MAILQ$mailq_args",$/; | ||
| 364 | exit $ERRORS{CRITICAL}; | ||
| 365 | } | ||
| 366 | 329 | ||
| 367 | ## shut off the alarm | 330 | } |
| 368 | alarm(0); | ||
| 369 | 331 | ||
| 370 | # check queue length | 332 | } # end of ($mailq eq "sendmail") |
| 371 | if ($lines[0]=~/Kbytes in (\d+)/) { | 333 | elsif ( $mailq eq "postfix" ) { |
| 372 | $msg_q = $1 ; | 334 | if( ! $utils::PATH_TO_MAILQ ) { |
| 373 | }elsif ($lines[0]=~/Mail queue is empty/) { | 335 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; |
| 374 | $msg_q = 0; | 336 | exit $ERRORS{'UNKNOWN'}; |
| 337 | } | ||
| 338 | |||
| 339 | if ( ! -x $utils::PATH_TO_MAILQ) { | ||
| 340 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; | ||
| 341 | exit $ERRORS{'UNKNOWN'}; | ||
| 342 | } | ||
| 343 | |||
| 344 | ## open mailq | ||
| 345 | if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ$mailq_args | " ) ) { | ||
| 346 | print "ERROR: could not open $utils::PATH_TO_MAILQ$mailq_args \n"; | ||
| 347 | exit $ERRORS{'UNKNOWN'}; | ||
| 348 | } | ||
| 349 | |||
| 350 | @lines = reverse <MAILQ>; | ||
| 351 | |||
| 352 | # close qmail-qstat | ||
| 353 | close MAILQ; | ||
| 354 | |||
| 355 | if ( $? ) { | ||
| 356 | print "CRITICAL: Error code ".($?>>8)." returned from $utils::PATH_TO_MAILQ$mailq_args",$/; | ||
| 357 | exit $ERRORS{CRITICAL}; | ||
| 358 | } | ||
| 359 | |||
| 360 | ## shut off the alarm | ||
| 361 | alarm(0); | ||
| 362 | |||
| 363 | # check queue length | ||
| 364 | if ($lines[0]=~/Kbytes in (\d+)/) { | ||
| 365 | $msg_q = $1 ; | ||
| 366 | }elsif ($lines[0]=~/Mail queue is empty/) { | ||
| 367 | $msg_q = 0; | ||
| 375 | }else{ | 368 | }else{ |
| 376 | print "Couldn't match $utils::PATH_TO_MAILQ$mailq_args output\n"; | 369 | print "Couldn't match $utils::PATH_TO_MAILQ$mailq_args output\n"; |
| 377 | exit $ERRORS{'UNKNOWN'}; | 370 | exit $ERRORS{'UNKNOWN'}; |
| 378 | } | 371 | } |
| 379 | 372 | ||
| 380 | # check messages not processed | 373 | # check messages not processed |
| @@ -390,194 +383,193 @@ elsif ( $mailq eq "postfix" ) { | |||
| 390 | $msg = "OK: $mailq mailq reports queue is empty"; | 383 | $msg = "OK: $mailq mailq reports queue is empty"; |
| 391 | $state = $ERRORS{'OK'}; | 384 | $state = $ERRORS{'OK'}; |
| 392 | } else { | 385 | } else { |
| 393 | print "msg_q = $msg_q warn=$opt_w crit=$opt_c\n" if $verbose; | 386 | print "msg_q = $msg_q warn=$opt_w crit=$opt_c\n" if $verbose; |
| 394 | 387 | ||
| 395 | # overall queue length | 388 | # overall queue length |
| 396 | if ($msg_q < $opt_w) { | 389 | if ($msg_q < $opt_w) { |
| 397 | $msg = "OK: $mailq mailq ($msg_q) is below threshold ($opt_w/$opt_c)"; | 390 | $msg = "OK: $mailq mailq ($msg_q) is below threshold ($opt_w/$opt_c)"; |
| 398 | $state = $ERRORS{'OK'}; | 391 | $state = $ERRORS{'OK'}; |
| 399 | }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) { | 392 | }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) { |
| 400 | $msg = "WARNING: $mailq mailq is $msg_q (threshold w = $opt_w)"; | 393 | $msg = "WARNING: $mailq mailq is $msg_q (threshold w = $opt_w)"; |
| 401 | $state = $ERRORS{'WARNING'}; | 394 | $state = $ERRORS{'WARNING'}; |
| 402 | }else { | 395 | }else { |
| 403 | $msg = "CRITICAL: $mailq mailq is $msg_q (threshold c = $opt_c)"; | 396 | $msg = "CRITICAL: $mailq mailq is $msg_q (threshold c = $opt_c)"; |
| 404 | $state = $ERRORS{'CRITICAL'}; | 397 | $state = $ERRORS{'CRITICAL'}; |
| 405 | } | 398 | } |
| 406 | 399 | ||
| 407 | # check messages not yet preprocessed (only compare is $opt_W and $opt_C | 400 | # check messages not yet preprocessed (only compare is $opt_W and $opt_C |
| 408 | # are defined) | 401 | # are defined) |
| 409 | 402 | ||
| 410 | #if (defined $opt_W) { | 403 | #if (defined $opt_W) { |
| 411 | # $msg .= "[Preprocessed = $msg_p]"; | 404 | # $msg .= "[Preprocessed = $msg_p]"; |
| 412 | # if ($msg_p >= $opt_W && $msg_p < $opt_C ) { | 405 | # if ($msg_p >= $opt_W && $msg_p < $opt_C ) { |
| 413 | # $state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"} ; | 406 | # $state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"} ; |
| 414 | # }elsif ($msg_p >= $opt_C ) { | 407 | # }elsif ($msg_p >= $opt_C ) { |
| 415 | # $state = $ERRORS{"CRITICAL"} ; | 408 | # $state = $ERRORS{"CRITICAL"} ; |
| 416 | # } | 409 | # } |
| 417 | #} | 410 | #} |
| 418 | } | 411 | } |
| 419 | } # end of ($mailq eq "postfix") | 412 | } # end of ($mailq eq "postfix") |
| 420 | elsif ( $mailq eq "qmail" ) { | 413 | elsif ( $mailq eq "qmail" ) { |
| 414 | if ( ! $utils::PATH_TO_QMAIL_QSTAT ) { | ||
| 415 | print "ERROR: \$utils::PATH_TO_QMAIL_QSTAT is not defined\n"; | ||
| 416 | exit $ERRORS{'UNKNOWN'}; | ||
| 417 | } | ||
| 418 | |||
| 419 | if ( ! -x $utils::PATH_TO_QMAIL_QSTAT) { | ||
| 420 | print "ERROR: $utils::PATH_TO_QMAIL_QSTAT is not executable by (uid $>:gid($)))\n"; | ||
| 421 | exit $ERRORS{'UNKNOWN'}; | ||
| 422 | } | ||
| 423 | |||
| 424 | # open qmail-qstat | ||
| 425 | if (! open (MAILQ, "$sudo $utils::PATH_TO_QMAIL_QSTAT | " ) ) { | ||
| 426 | print "ERROR: could not open $utils::PATH_TO_QMAIL_QSTAT \n"; | ||
| 427 | exit $ERRORS{'UNKNOWN'}; | ||
| 428 | } | ||
| 429 | |||
| 430 | @lines = <MAILQ>; | ||
| 431 | |||
| 432 | # close qmail-qstat | ||
| 433 | close MAILQ; | ||
| 434 | |||
| 435 | if ( $? ) { | ||
| 436 | print "CRITICAL: Error code ".($?>>8)." returned from $utils::PATH_TO_MAILQ",$/; | ||
| 437 | exit $ERRORS{CRITICAL}; | ||
| 438 | } | ||
| 439 | |||
| 440 | ## shut off the alarm | ||
| 441 | alarm(0); | ||
| 442 | |||
| 443 | # check queue length | ||
| 444 | if ($lines[0]=~/^messages in queue: (\d+)/) { | ||
| 445 | $msg_q = $1 ; | ||
| 446 | }else{ | ||
| 447 | print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n"; | ||
| 448 | exit $ERRORS{'UNKNOWN'}; | ||
| 449 | } | ||
| 450 | |||
| 451 | # check messages not processed | ||
| 452 | if ($lines[1]=~/^messages in queue but not yet preprocessed: (\d+)/) { | ||
| 453 | my $msg_p = $1; | ||
| 454 | }else{ | ||
| 455 | print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n"; | ||
| 456 | exit $ERRORS{'UNKNOWN'}; | ||
| 457 | } | ||
| 458 | |||
| 459 | |||
| 460 | # check queue length(s) | ||
| 461 | if ($msg_q == 0){ | ||
| 462 | $msg = "OK: qmail-qstat reports queue is empty"; | ||
| 463 | $state = $ERRORS{'OK'}; | ||
| 464 | } else { | ||
| 465 | print "msg_q = $msg_q warn=$opt_w crit=$opt_c\n" if $verbose; | ||
| 466 | |||
| 467 | # overall queue length | ||
| 468 | if ($msg_q < $opt_w) { | ||
| 469 | $msg = "OK: $mailq mailq ($msg_q) is below threshold ($opt_w/$opt_c)"; | ||
| 470 | $state = $ERRORS{'OK'}; | ||
| 471 | }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) { | ||
| 472 | $msg = "WARNING: $mailq mailq is $msg_q (threshold w = $opt_w)"; | ||
| 473 | $state = $ERRORS{'WARNING'}; | ||
| 474 | }else { | ||
| 475 | $msg = "CRITICAL: $mailq mailq is $msg_q (threshold c = $opt_c)"; | ||
| 476 | $state = $ERRORS{'CRITICAL'}; | ||
| 477 | } | ||
| 478 | |||
| 479 | # check messages not yet preprocessed (only compare is $opt_W and $opt_C | ||
| 480 | # are defined) | ||
| 481 | |||
| 482 | if (defined $opt_W) { | ||
| 483 | $msg .= "[Preprocessed = $msg_p]"; | ||
| 484 | if ($msg_p >= $opt_W && $msg_p < $opt_C ) { | ||
| 485 | $state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"} ; | ||
| 486 | }elsif ($msg_p >= $opt_C ) { | ||
| 487 | $state = $ERRORS{"CRITICAL"} ; | ||
| 488 | } | ||
| 489 | } | ||
| 490 | } | ||
| 421 | 491 | ||
| 422 | # open qmail-qstat | ||
| 423 | if ( defined $utils::PATH_TO_QMAIL_QSTAT && -x $utils::PATH_TO_QMAIL_QSTAT ) { | ||
| 424 | if (! open (MAILQ, "$sudo $utils::PATH_TO_QMAIL_QSTAT | " ) ) { | ||
| 425 | print "ERROR: could not open $utils::PATH_TO_QMAIL_QSTAT \n"; | ||
| 426 | exit $ERRORS{'UNKNOWN'}; | ||
| 427 | } | ||
| 428 | }elsif( defined $utils::PATH_TO_QMAIL_QSTAT){ | ||
| 429 | unless (-x $utils::PATH_TO_QMAIL_QSTAT) { | ||
| 430 | print "ERROR: $utils::PATH_TO_QMAIL_QSTAT is not executable by (uid $>:gid($)))\n"; | ||
| 431 | exit $ERRORS{'UNKNOWN'}; | ||
| 432 | } | ||
| 433 | } else { | ||
| 434 | print "ERROR: \$utils::PATH_TO_QMAIL_QSTAT is not defined\n"; | ||
| 435 | exit $ERRORS{'UNKNOWN'}; | ||
| 436 | } | ||
| 437 | |||
| 438 | @lines = <MAILQ>; | ||
| 439 | |||
| 440 | # close qmail-qstat | ||
| 441 | close MAILQ; | ||
| 442 | |||
| 443 | if ( $? ) { | ||
| 444 | print "CRITICAL: Error code ".($?>>8)." returned from $utils::PATH_TO_MAILQ",$/; | ||
| 445 | exit $ERRORS{CRITICAL}; | ||
| 446 | } | ||
| 447 | |||
| 448 | ## shut off the alarm | ||
| 449 | alarm(0); | ||
| 450 | |||
| 451 | # check queue length | ||
| 452 | if ($lines[0]=~/^messages in queue: (\d+)/) { | ||
| 453 | $msg_q = $1 ; | ||
| 454 | }else{ | ||
| 455 | print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n"; | ||
| 456 | exit $ERRORS{'UNKNOWN'}; | ||
| 457 | } | ||
| 458 | |||
| 459 | # check messages not processed | ||
| 460 | if ($lines[1]=~/^messages in queue but not yet preprocessed: (\d+)/) { | ||
| 461 | my $msg_p = $1; | ||
| 462 | }else{ | ||
| 463 | print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n"; | ||
| 464 | exit $ERRORS{'UNKNOWN'}; | ||
| 465 | } | ||
| 466 | |||
| 467 | |||
| 468 | # check queue length(s) | ||
| 469 | if ($msg_q == 0){ | ||
| 470 | $msg = "OK: qmail-qstat reports queue is empty"; | ||
| 471 | $state = $ERRORS{'OK'}; | ||
| 472 | } else { | ||
| 473 | print "msg_q = $msg_q warn=$opt_w crit=$opt_c\n" if $verbose; | ||
| 474 | |||
| 475 | # overall queue length | ||
| 476 | if ($msg_q < $opt_w) { | ||
| 477 | $msg = "OK: $mailq mailq ($msg_q) is below threshold ($opt_w/$opt_c)"; | ||
| 478 | $state = $ERRORS{'OK'}; | ||
| 479 | }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) { | ||
| 480 | $msg = "WARNING: $mailq mailq is $msg_q (threshold w = $opt_w)"; | ||
| 481 | $state = $ERRORS{'WARNING'}; | ||
| 482 | }else { | ||
| 483 | $msg = "CRITICAL: $mailq mailq is $msg_q (threshold c = $opt_c)"; | ||
| 484 | $state = $ERRORS{'CRITICAL'}; | ||
| 485 | } | ||
| 486 | |||
| 487 | # check messages not yet preprocessed (only compare is $opt_W and $opt_C | ||
| 488 | # are defined) | ||
| 489 | |||
| 490 | if (defined $opt_W) { | ||
| 491 | $msg .= "[Preprocessed = $msg_p]"; | ||
| 492 | if ($msg_p >= $opt_W && $msg_p < $opt_C ) { | ||
| 493 | $state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"} ; | ||
| 494 | }elsif ($msg_p >= $opt_C ) { | ||
| 495 | $state = $ERRORS{"CRITICAL"} ; | ||
| 496 | } | ||
| 497 | } | ||
| 498 | } | ||
| 499 | |||
| 500 | 492 | ||
| 501 | 493 | ||
| 502 | } # end of ($mailq eq "qmail") | 494 | } # end of ($mailq eq "qmail") |
| 503 | elsif ( $mailq eq "exim" ) { | 495 | elsif ( $mailq eq "exim" ) { |
| 504 | ## open mailq | 496 | if ( ! $utils::PATH_TO_MAILQ ) { |
| 505 | if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) { | 497 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; |
| 506 | if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) { | 498 | exit $ERRORS{'UNKNOWN'}; |
| 507 | print "ERROR: could not open $utils::PATH_TO_MAILQ \n"; | 499 | } |
| 508 | exit $ERRORS{'UNKNOWN'}; | 500 | |
| 509 | } | 501 | if ( ! -x $utils::PATH_TO_MAILQ) { |
| 510 | }elsif( defined $utils::PATH_TO_MAILQ){ | 502 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; |
| 511 | unless (-x $utils::PATH_TO_MAILQ) { | 503 | exit $ERRORS{'UNKNOWN'}; |
| 512 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; | 504 | } |
| 513 | exit $ERRORS{'UNKNOWN'}; | 505 | |
| 514 | } | 506 | ## open mailq |
| 515 | } else { | 507 | if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) { |
| 516 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; | 508 | print "ERROR: could not open $utils::PATH_TO_MAILQ \n"; |
| 517 | exit $ERRORS{'UNKNOWN'}; | 509 | exit $ERRORS{'UNKNOWN'}; |
| 518 | } | 510 | } |
| 519 | 511 | ||
| 520 | while (<MAILQ>) { | 512 | while (<MAILQ>) { |
| 521 | #22m 1.7K 19aEEr-0007hx-Dy <> *** frozen *** | 513 | #22m 1.7K 19aEEr-0007hx-Dy <> *** frozen *** |
| 522 | #root@exlixams.glups.fr | 514 | #root@exlixams.glups.fr |
| 523 | 515 | ||
| 524 | if (/\s[\w\d]{6}-[\w\d]{6}-[\w\d]{2}\s/) { # message id 19aEEr-0007hx-Dy | 516 | if (/\s[\w\d]{6}-[\w\d]{6}-[\w\d]{2}\s/) { # message id 19aEEr-0007hx-Dy |
| 525 | $msg_q++ ; | 517 | $msg_q++ ; |
| 526 | } | 518 | } |
| 527 | } | 519 | } |
| 528 | close(MAILQ) ; | 520 | close(MAILQ) ; |
| 529 | 521 | ||
| 530 | if ( $? ) { | 522 | if ( $? ) { |
| 531 | print "CRITICAL: Error code ".($?>>8)." returned from $utils::PATH_TO_MAILQ",$/; | 523 | print "CRITICAL: Error code ".($?>>8)." returned from $utils::PATH_TO_MAILQ",$/; |
| 532 | exit $ERRORS{CRITICAL}; | 524 | exit $ERRORS{CRITICAL}; |
| 533 | } | 525 | } |
| 534 | if ($msg_q < $opt_w) { | 526 | if ($msg_q < $opt_w) { |
| 535 | $msg = "OK: $mailq mailq ($msg_q) is below threshold ($opt_w/$opt_c)"; | 527 | $msg = "OK: $mailq mailq ($msg_q) is below threshold ($opt_w/$opt_c)"; |
| 536 | $state = $ERRORS{'OK'}; | 528 | $state = $ERRORS{'OK'}; |
| 537 | }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) { | 529 | }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) { |
| 538 | $msg = "WARNING: $mailq mailq is $msg_q (threshold w = $opt_w)"; | 530 | $msg = "WARNING: $mailq mailq is $msg_q (threshold w = $opt_w)"; |
| 539 | $state = $ERRORS{'WARNING'}; | 531 | $state = $ERRORS{'WARNING'}; |
| 540 | }else { | 532 | }else { |
| 541 | $msg = "CRITICAL: $mailq mailq is $msg_q (threshold c = $opt_c)"; | 533 | $msg = "CRITICAL: $mailq mailq is $msg_q (threshold c = $opt_c)"; |
| 542 | $state = $ERRORS{'CRITICAL'}; | 534 | $state = $ERRORS{'CRITICAL'}; |
| 543 | } | 535 | } |
| 544 | } # end of ($mailq eq "exim") | 536 | } # end of ($mailq eq "exim") |
| 545 | 537 | ||
| 546 | elsif ( $mailq eq "nullmailer" ) { | 538 | elsif ( $mailq eq "nullmailer" ) { |
| 547 | ## open mailq | 539 | if( ! $utils::PATH_TO_MAILQ) { |
| 548 | if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) { | 540 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; |
| 549 | if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) { | 541 | exit $ERRORS{'UNKNOWN'}; |
| 550 | print "ERROR: could not open $utils::PATH_TO_MAILQ \n"; | 542 | } |
| 551 | exit $ERRORS{'UNKNOWN'}; | 543 | |
| 552 | } | 544 | if ( ! -x $utils::PATH_TO_MAILQ) { |
| 553 | }elsif( defined $utils::PATH_TO_MAILQ){ | 545 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; |
| 554 | unless (-x $utils::PATH_TO_MAILQ) { | 546 | exit $ERRORS{'UNKNOWN'}; |
| 555 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; | 547 | } |
| 556 | exit $ERRORS{'UNKNOWN'}; | 548 | |
| 557 | } | 549 | ## open mailq |
| 558 | } else { | 550 | if ( ! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) { |
| 559 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; | 551 | print "ERROR: could not open $utils::PATH_TO_MAILQ \n"; |
| 560 | exit $ERRORS{'UNKNOWN'}; | 552 | exit $ERRORS{'UNKNOWN'}; |
| 561 | } | 553 | } |
| 562 | 554 | ||
| 563 | while (<MAILQ>) { | 555 | while (<MAILQ>) { |
| 564 | #2022-08-25 01:30:40 502 bytes from <user@example.com> | 556 | #2022-08-25 01:30:40 502 bytes from <user@example.com> |
| 565 | 557 | ||
| 566 | if (/^\d{4}-\d{2}-\d{2}\s+\d{2}\:\d{2}\:\d{2}\s+\d+\sbytes/) { | 558 | if (/^\d{4}-\d{2}-\d{2}\s+\d{2}\:\d{2}\:\d{2}\s+\d+\sbytes/) { |
| 567 | $msg_q++ ; | 559 | $msg_q++ ; |
| 568 | } | 560 | } |
| 569 | } | 561 | } |
| 570 | close(MAILQ) ; | 562 | close(MAILQ) ; |
| 571 | if ($msg_q < $opt_w) { | 563 | if ($msg_q < $opt_w) { |
| 572 | $msg = "OK: $mailq mailq ($msg_q) is below threshold ($opt_w/$opt_c)"; | 564 | $msg = "OK: $mailq mailq ($msg_q) is below threshold ($opt_w/$opt_c)"; |
| 573 | $state = $ERRORS{'OK'}; | 565 | $state = $ERRORS{'OK'}; |
| 574 | }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) { | 566 | }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) { |
| 575 | $msg = "WARNING: $mailq mailq is $msg_q (threshold w = $opt_w)"; | 567 | $msg = "WARNING: $mailq mailq is $msg_q (threshold w = $opt_w)"; |
| 576 | $state = $ERRORS{'WARNING'}; | 568 | $state = $ERRORS{'WARNING'}; |
| 577 | }else { | 569 | }else { |
| 578 | $msg = "CRITICAL: $mailq mailq is $msg_q (threshold c = $opt_c)"; | 570 | $msg = "CRITICAL: $mailq mailq is $msg_q (threshold c = $opt_c)"; |
| 579 | $state = $ERRORS{'CRITICAL'}; | 571 | $state = $ERRORS{'CRITICAL'}; |
| 580 | } | 572 | } |
| 581 | } # end of ($mailq eq "nullmailer") | 573 | } # end of ($mailq eq "nullmailer") |
| 582 | 574 | ||
| 583 | # Perfdata support | 575 | # Perfdata support |
| @@ -590,130 +582,130 @@ exit $state; | |||
| 590 | 582 | ||
| 591 | 583 | ||
| 592 | sub process_arguments(){ | 584 | sub process_arguments(){ |
| 593 | GetOptions | 585 | GetOptions |
| 594 | ("V" => \$opt_V, "version" => \$opt_V, | 586 | ("V" => \$opt_V, "version" => \$opt_V, |
| 595 | "v" => \$opt_v, "verbose" => \$opt_v, | 587 | "v" => \$opt_v, "verbose" => \$opt_v, |
| 596 | "h" => \$opt_h, "help" => \$opt_h, | 588 | "h" => \$opt_h, "help" => \$opt_h, |
| 597 | "M:s" => \$opt_M, "mailserver:s" => \$opt_M, # mailserver (default sendmail) | 589 | "M:s" => \$opt_M, "mailserver:s" => \$opt_M, # mailserver (default sendmail) |
| 598 | "w=i" => \$opt_w, "warning=i" => \$opt_w, # warning if above this number | 590 | "w=i" => \$opt_w, "warning=i" => \$opt_w, # warning if above this number |
| 599 | "c=i" => \$opt_c, "critical=i" => \$opt_c, # critical if above this number | 591 | "c=i" => \$opt_c, "critical=i" => \$opt_c, # critical if above this number |
| 600 | "W=i" => \$opt_W, "warning-domain=i" => \$opt_W, # Warning if above this number | 592 | "W=i" => \$opt_W, "warning-domain=i" => \$opt_W, # Warning if above this number |
| 601 | "C=i" => \$opt_C, "critical-domain=i" => \$opt_C, # Critical if above this number | 593 | "C=i" => \$opt_C, "critical-domain=i" => \$opt_C, # Critical if above this number |
| 602 | "t=i" => \$opt_t, "timeout=i" => \$opt_t, | 594 | "t=i" => \$opt_t, "timeout=i" => \$opt_t, |
| 603 | "s" => \$opt_s, "sudo" => \$opt_s, | 595 | "s" => \$opt_s, "sudo" => \$opt_s, |
| 604 | "d:s" => \$opt_d, "configdir:s" => \$opt_d, | 596 | "d:s" => \$opt_d, "configdir:s" => \$opt_d, |
| 605 | ); | 597 | ); |
| 606 | 598 | ||
| 607 | if ($opt_V) { | 599 | if ($opt_V) { |
| 608 | print_revision($PROGNAME,'@NP_VERSION@'); | 600 | print_revision($PROGNAME,'@NP_VERSION@'); |
| 609 | exit $ERRORS{'UNKNOWN'}; | 601 | exit $ERRORS{'UNKNOWN'}; |
| 610 | } | 602 | } |
| 611 | 603 | ||
| 612 | if ($opt_h) { | 604 | if ($opt_h) { |
| 613 | print_help(); | 605 | print_help(); |
| 614 | exit $ERRORS{'UNKNOWN'}; | 606 | exit $ERRORS{'UNKNOWN'}; |
| 615 | } | 607 | } |
| 616 | 608 | ||
| 617 | if (defined $opt_v ){ | 609 | if (defined $opt_v ){ |
| 618 | $verbose = $opt_v; | 610 | $verbose = $opt_v; |
| 619 | } | 611 | } |
| 620 | 612 | ||
| 621 | unless (defined $opt_t) { | 613 | unless (defined $opt_t) { |
| 622 | $opt_t = $utils::TIMEOUT ; # default timeout | 614 | $opt_t = $utils::TIMEOUT ; # default timeout |
| 623 | } | 615 | } |
| 624 | 616 | ||
| 625 | unless ( defined $opt_w && defined $opt_c ) { | 617 | unless ( defined $opt_w && defined $opt_c ) { |
| 626 | print_usage(); | 618 | print_usage(); |
| 627 | exit $ERRORS{'UNKNOWN'}; | 619 | exit $ERRORS{'UNKNOWN'}; |
| 628 | } | 620 | } |
| 629 | 621 | ||
| 630 | if ( $opt_w >= $opt_c) { | 622 | if ( $opt_w >= $opt_c) { |
| 631 | print "Warning (-w) cannot be greater than Critical (-c)!\n"; | 623 | print "Warning (-w) cannot be greater than Critical (-c)!\n"; |
| 632 | exit $ERRORS{'UNKNOWN'}; | 624 | exit $ERRORS{'UNKNOWN'}; |
| 633 | } | 625 | } |
| 634 | 626 | ||
| 635 | if (defined $opt_W && ! defined !$opt_C) { | 627 | if (defined $opt_W && ! defined !$opt_C) { |
| 636 | print "Need -C if using -W\n"; | 628 | print "Need -C if using -W\n"; |
| 637 | exit $ERRORS{'UNKNOWN'}; | 629 | exit $ERRORS{'UNKNOWN'}; |
| 638 | }elsif(defined $opt_W && defined $opt_C) { | 630 | }elsif(defined $opt_W && defined $opt_C) { |
| 639 | if ($opt_W >= $opt_C) { | 631 | if ($opt_W >= $opt_C) { |
| 640 | print "Warning (-W) cannot be greater than Critical (-C)!\n"; | 632 | print "Warning (-W) cannot be greater than Critical (-C)!\n"; |
| 641 | exit $ERRORS{'UNKNOWN'}; | 633 | exit $ERRORS{'UNKNOWN'}; |
| 642 | } | 634 | } |
| 643 | } | 635 | } |
| 644 | 636 | ||
| 645 | if (defined $opt_M) { | 637 | if (defined $opt_M) { |
| 646 | if ($opt_M =~ /^(sendmail|qmail|postfix|exim|nullmailer)$/) { | 638 | if ($opt_M =~ /^(sendmail|qmail|postfix|exim|nullmailer)$/) { |
| 647 | $mailq = $opt_M ; | 639 | $mailq = $opt_M ; |
| 648 | }elsif( $opt_M eq ''){ | 640 | }elsif( $opt_M eq ''){ |
| 649 | $mailq = 'sendmail'; | 641 | $mailq = 'sendmail'; |
| 650 | }else{ | 642 | }else{ |
| 651 | print "-M: $opt_M is not supported\n"; | 643 | print "-M: $opt_M is not supported\n"; |
| 652 | exit $ERRORS{'UNKNOWN'}; | 644 | exit $ERRORS{'UNKNOWN'}; |
| 653 | } | 645 | } |
| 654 | }else{ | 646 | }else{ |
| 655 | if (defined $utils::PATH_TO_QMAIL_QSTAT | 647 | if (defined $utils::PATH_TO_QMAIL_QSTAT |
| 656 | && -x $utils::PATH_TO_QMAIL_QSTAT) | 648 | && -x $utils::PATH_TO_QMAIL_QSTAT) |
| 657 | { | 649 | { |
| 658 | $mailq = 'qmail'; | 650 | $mailq = 'qmail'; |
| 659 | } | 651 | } |
| 660 | elsif (-d '/var/lib/postfix' || -d '/var/local/lib/postfix' | 652 | elsif (-d '/var/lib/postfix' || -d '/var/local/lib/postfix' |
| 661 | || -e '/usr/sbin/postfix' || -e '/usr/local/sbin/postfix') | 653 | || -e '/usr/sbin/postfix' || -e '/usr/local/sbin/postfix') |
| 662 | { | 654 | { |
| 663 | $mailq = 'postfix'; | 655 | $mailq = 'postfix'; |
| 664 | } | 656 | } |
| 665 | elsif (-d '/usr/lib/exim4' || -d '/usr/local/lib/exim4' | 657 | elsif (-d '/usr/lib/exim4' || -d '/usr/local/lib/exim4' |
| 666 | || -e '/usr/sbin/exim' || -e '/usr/local/sbin/exim') | 658 | || -e '/usr/sbin/exim' || -e '/usr/local/sbin/exim') |
| 667 | { | 659 | { |
| 668 | $mailq = 'exim'; | 660 | $mailq = 'exim'; |
| 669 | } | 661 | } |
| 670 | elsif (-d '/usr/lib/nullmailer' || -d '/usr/local/lib/nullmailer' | 662 | elsif (-d '/usr/lib/nullmailer' || -d '/usr/local/lib/nullmailer' |
| 671 | || -e '/usr/sbin/nullmailer-send' | 663 | || -e '/usr/sbin/nullmailer-send' |
| 672 | || -e '/usr/local/sbin/nullmailer-send') | 664 | || -e '/usr/local/sbin/nullmailer-send') |
| 673 | { | 665 | { |
| 674 | $mailq = 'nullmailer'; | 666 | $mailq = 'nullmailer'; |
| 675 | } | 667 | } |
| 676 | else { | 668 | else { |
| 677 | $mailq = 'sendmail'; | 669 | $mailq = 'sendmail'; |
| 678 | } | 670 | } |
| 679 | } | 671 | } |
| 680 | 672 | ||
| 681 | return $ERRORS{'OK'}; | 673 | return $ERRORS{'OK'}; |
| 682 | } | 674 | } |
| 683 | 675 | ||
| 684 | sub print_usage () { | 676 | sub print_usage () { |
| 685 | print "Usage: $PROGNAME -w <warn> -c <crit> [-W <warn>] [-C <crit>] [-M <MTA>] [-t <timeout>] [-s] [-d <CONFIGDIR>] [-v]\n"; | 677 | print "Usage: $PROGNAME -w <warn> -c <crit> [-W <warn>] [-C <crit>] [-M <MTA>] [-t <timeout>] [-s] [-d <CONFIGDIR>] [-v]\n"; |
| 686 | } | 678 | } |
| 687 | 679 | ||
| 688 | sub print_help () { | 680 | sub print_help () { |
| 689 | print_revision($PROGNAME,'@NP_VERSION@'); | 681 | print_revision($PROGNAME,'@NP_VERSION@'); |
| 690 | print "Copyright (c) 2002 Subhendu Ghosh/Carlos Canau/Benjamin Schmid\n"; | 682 | print "Copyright (c) 2002 Subhendu Ghosh/Carlos Canau/Benjamin Schmid\n"; |
| 691 | print "\n"; | 683 | print "\n"; |
| 692 | print_usage(); | 684 | print_usage(); |
| 693 | print "\n"; | 685 | print "\n"; |
| 694 | print " Checks the number of messages in the mail queue (supports multiple sendmail queues, qmail)\n"; | 686 | print " Checks the number of messages in the mail queue (supports multiple sendmail queues, qmail)\n"; |
| 695 | print " Feedback/patches to support non-sendmail mailqueue welcome\n\n"; | 687 | print " Feedback/patches to support non-sendmail mailqueue welcome\n\n"; |
| 696 | print "-w (--warning) = Min. number of messages in queue to generate warning\n"; | 688 | print "-w (--warning) = Min. number of messages in queue to generate warning\n"; |
| 697 | print "-c (--critical) = Min. number of messages in queue to generate critical alert ( w < c )\n"; | 689 | print "-c (--critical) = Min. number of messages in queue to generate critical alert ( w < c )\n"; |
| 698 | print "-W (--warning-domain) = Min. number of messages for same domain in queue to generate warning\n"; | 690 | print "-W (--warning-domain) = Min. number of messages for same domain in queue to generate warning\n"; |
| 699 | print "-C (--critical-domain) = Min. number of messages for same domain in queue to generate critical alert ( W < C )\n"; | 691 | print "-C (--critical-domain) = Min. number of messages for same domain in queue to generate critical alert ( W < C )\n"; |
| 700 | print "-t (--timeout) = Plugin timeout in seconds (default = $utils::TIMEOUT)\n"; | 692 | print "-t (--timeout) = Plugin timeout in seconds (default = $utils::TIMEOUT)\n"; |
| 701 | print "-M (--mailserver) = [ sendmail | qmail | postfix | exim | nullmailer ] (default = autodetect)\n"; | 693 | print "-M (--mailserver) = [ sendmail | qmail | postfix | exim | nullmailer ] (default = autodetect)\n"; |
| 702 | print "-s (--sudo) = Use sudo to call the mailq command\n"; | 694 | print "-s (--sudo) = Use sudo to call the mailq command\n"; |
| 703 | print "-d (--configdir) = Config file or directory\n"; | 695 | print "-d (--configdir) = Config file or directory\n"; |
| 704 | print "-h (--help)\n"; | 696 | print "-h (--help)\n"; |
| 705 | print "-V (--version)\n"; | 697 | print "-V (--version)\n"; |
| 706 | print "-v (--verbose) = debugging output\n"; | 698 | print "-v (--verbose) = debugging output\n"; |
| 707 | print "\n\n"; | 699 | print "\n\n"; |
| 708 | print "Note: -w and -c are required arguments. -W and -C are optional.\n"; | 700 | print "Note: -w and -c are required arguments. -W and -C are optional.\n"; |
| 709 | print " -W and -C are applied to domains listed on the queues - both FROM and TO. (sendmail)\n"; | 701 | print " -W and -C are applied to domains listed on the queues - both FROM and TO. (sendmail)\n"; |
| 710 | print " -W and -C are applied message not yet preproccessed. (qmail)\n"; | 702 | print " -W and -C are applied message not yet preproccessed. (qmail)\n"; |
| 711 | print " This plugin tries to autodetect which mailserver you are running,\n"; | 703 | print " This plugin tries to autodetect which mailserver you are running,\n"; |
| 712 | print " you can override the autodetection with -M.\n"; | 704 | print " you can override the autodetection with -M.\n"; |
| 713 | print " This plugin uses the system mailq command (sendmail) or qmail-stat (qmail)\n"; | 705 | print " This plugin uses the system mailq command (sendmail) or qmail-stat (qmail)\n"; |
| 714 | print " to look at the queues. Mailq can usually only be accessed by root or \n"; | 706 | print " to look at the queues. Mailq can usually only be accessed by root or \n"; |
| 715 | print " a TrustedUser. You will have to set appropriate permissions for the plugin to work.\n"; | 707 | print " a TrustedUser. You will have to set appropriate permissions for the plugin to work.\n"; |
| 716 | print ""; | 708 | print ""; |
| 717 | print "\n\n"; | 709 | print "\n\n"; |
| 718 | support(); | 710 | support(); |
| 719 | } | 711 | } |
diff --git a/plugins-scripts/check_oracle.sh b/plugins-scripts/check_oracle.sh index 59981386..db824bef 100755 --- a/plugins-scripts/check_oracle.sh +++ b/plugins-scripts/check_oracle.sh | |||
| @@ -47,7 +47,7 @@ print_help() { | |||
| 47 | echo "--cache" | 47 | echo "--cache" |
| 48 | echo " Check local database for library and buffer cache hit ratios" | 48 | echo " Check local database for library and buffer cache hit ratios" |
| 49 | echo " ---> Requires Oracle user/password and SID specified." | 49 | echo " ---> Requires Oracle user/password and SID specified." |
| 50 | echo " ---> Requires select on v_$sysstat and v_$librarycache" | 50 | echo " ---> Requires select on v_\$sysstat and v_\$librarycache" |
| 51 | echo "--tablespace" | 51 | echo "--tablespace" |
| 52 | echo " Check local database for tablespace capacity in ORACLE_SID" | 52 | echo " Check local database for tablespace capacity in ORACLE_SID" |
| 53 | echo " ---> Requires Oracle user/password specified." | 53 | echo " ---> Requires Oracle user/password specified." |
| @@ -109,14 +109,14 @@ if [ -z "$ORACLE_HOME" ] ; then | |||
| 109 | for oratab in /var/opt/oracle/oratab /etc/oratab | 109 | for oratab in /var/opt/oracle/oratab /etc/oratab |
| 110 | do | 110 | do |
| 111 | [ ! -f $oratab ] && continue | 111 | [ ! -f $oratab ] && continue |
| 112 | ORACLE_HOME=`IFS=: | 112 | ORACLE_HOME=$(IFS=: |
| 113 | while read -r SID ORACLE_HOME junk; | 113 | while read -r SID ORACLE_HOME _; |
| 114 | do | 114 | do |
| 115 | if [ "$SID" = "$2" ] || [ "$SID" = "*" ] ; then | 115 | if [ "$SID" = "$2" ] || [ "$SID" = "*" ] ; then |
| 116 | echo "$ORACLE_HOME"; | 116 | echo "$ORACLE_HOME"; |
| 117 | exit; | 117 | exit; |
| 118 | fi; | 118 | fi; |
| 119 | done < $oratab` | 119 | done < $oratab) |
| 120 | [ -n "$ORACLE_HOME" ] && break | 120 | [ -n "$ORACLE_HOME" ] && break |
| 121 | done | 121 | done |
| 122 | fi | 122 | fi |
| @@ -209,7 +209,7 @@ case "$cmd" in | |||
| 209 | echo "UNKNOWN - Warning level is less then Crit" | 209 | echo "UNKNOWN - Warning level is less then Crit" |
| 210 | exit "$STATE_UNKNOWN" | 210 | exit "$STATE_UNKNOWN" |
| 211 | fi | 211 | fi |
| 212 | result=`sqlplus -s "${3}"/"${4}"@"${2}" << EOF | 212 | result=$(sqlplus -s "${3}"/"${4}"@"${2}" << EOF |
| 213 | set pagesize 0 | 213 | set pagesize 0 |
| 214 | set numf '9999999.99' | 214 | set numf '9999999.99' |
| 215 | select (1-(pr.value/(dbg.value+cg.value)))*100 | 215 | select (1-(pr.value/(dbg.value+cg.value)))*100 |
| @@ -217,7 +217,8 @@ from v\\$sysstat pr, v\\$sysstat dbg, v\\$sysstat cg | |||
| 217 | where pr.name='physical reads' | 217 | where pr.name='physical reads' |
| 218 | and dbg.name='db block gets' | 218 | and dbg.name='db block gets' |
| 219 | and cg.name='consistent gets'; | 219 | and cg.name='consistent gets'; |
| 220 | EOF` | 220 | EOF |
| 221 | ) | ||
| 221 | 222 | ||
| 222 | if echo "$result" | grep -q 'ORA-' ; then | 223 | if echo "$result" | grep -q 'ORA-' ; then |
| 223 | error=$(echo "$result" | grep "ORA-" | head -1) | 224 | error=$(echo "$result" | grep "ORA-" | head -1) |
| @@ -227,12 +228,13 @@ EOF` | |||
| 227 | 228 | ||
| 228 | buf_hr=$(echo "$result" | awk '/^[0-9\. \t]+$/ {print int($1)}') | 229 | buf_hr=$(echo "$result" | awk '/^[0-9\. \t]+$/ {print int($1)}') |
| 229 | buf_hrx=$(echo "$result" | awk '/^[0-9\. \t]+$/ {print $1}') | 230 | buf_hrx=$(echo "$result" | awk '/^[0-9\. \t]+$/ {print $1}') |
| 230 | result=`sqlplus -s "${3}"/"${4}"@"${2}" << EOF | 231 | result=$(sqlplus -s "${3}"/"${4}"@"${2}" << EOF |
| 231 | set pagesize 0 | 232 | set pagesize 0 |
| 232 | set numf '9999999.99' | 233 | set numf '9999999.99' |
| 233 | select sum(lc.pins)/(sum(lc.pins)+sum(lc.reloads))*100 | 234 | select sum(lc.pins)/(sum(lc.pins)+sum(lc.reloads))*100 |
| 234 | from v\\$librarycache lc; | 235 | from v\\$librarycache lc; |
| 235 | EOF` | 236 | EOF |
| 237 | ) | ||
| 236 | 238 | ||
| 237 | if echo "$result" | grep -q 'ORA-' ; then | 239 | if echo "$result" | grep -q 'ORA-' ; then |
| 238 | error=$(echo "$result" | grep "ORA-" | head -1) | 240 | error=$(echo "$result" | grep "ORA-" | head -1) |
| @@ -260,7 +262,7 @@ EOF` | |||
| 260 | echo "UNKNOWN - Warning level is more then Crit" | 262 | echo "UNKNOWN - Warning level is more then Crit" |
| 261 | exit "$STATE_UNKNOWN" | 263 | exit "$STATE_UNKNOWN" |
| 262 | fi | 264 | fi |
| 263 | result=`sqlplus -s "${3}"/"${4}"@"${2}" << EOF | 265 | result=$(sqlplus -s "${3}"/"${4}"@"${2}" << EOF |
| 264 | set pagesize 0 | 266 | set pagesize 0 |
| 265 | set numf '9999999.99' | 267 | set numf '9999999.99' |
| 266 | select NVL(b.free,0.0),a.total,100 - trunc(NVL(b.free,0.0)/a.total * 1000) / 10 prc | 268 | select NVL(b.free,0.0),a.total,100 - trunc(NVL(b.free,0.0)/a.total * 1000) / 10 prc |
| @@ -271,7 +273,8 @@ LEFT OUTER JOIN | |||
| 271 | ( select tablespace_name,sum(bytes)/1024/1024 free | 273 | ( select tablespace_name,sum(bytes)/1024/1024 free |
| 272 | from dba_free_space group by tablespace_name) B | 274 | from dba_free_space group by tablespace_name) B |
| 273 | ON a.tablespace_name=b.tablespace_name WHERE a.tablespace_name='${5}'; | 275 | ON a.tablespace_name=b.tablespace_name WHERE a.tablespace_name='${5}'; |
| 274 | EOF` | 276 | EOF |
| 277 | ) | ||
| 275 | 278 | ||
| 276 | if echo "$result" | grep -q 'ORA-' ; then | 279 | if echo "$result" | grep -q 'ORA-' ; then |
| 277 | error=$(echo "$result" | grep "ORA-" | head -1) | 280 | error=$(echo "$result" | grep "ORA-" | head -1) |
diff --git a/plugins/check_apt.c b/plugins/check_apt.c index fa982ae3..5c0f6e28 100644 --- a/plugins/check_apt.c +++ b/plugins/check_apt.c | |||
| @@ -94,7 +94,7 @@ static int stderr_warning = 0; /* if a cmd issued output on stderr */ | |||
| 94 | static int exec_warning = 0; /* if a cmd exited non-zero */ | 94 | static int exec_warning = 0; /* if a cmd exited non-zero */ |
| 95 | 95 | ||
| 96 | int main (int argc, char **argv) { | 96 | int main (int argc, char **argv) { |
| 97 | int result=STATE_UNKNOWN, packages_available=0, sec_count=0, i=0; | 97 | int result=STATE_UNKNOWN, packages_available=0, sec_count=0; |
| 98 | char **packages_list=NULL, **secpackages_list=NULL; | 98 | char **packages_list=NULL, **secpackages_list=NULL; |
| 99 | 99 | ||
| 100 | /* Parse extra opts if any */ | 100 | /* Parse extra opts if any */ |
| @@ -142,10 +142,11 @@ int main (int argc, char **argv) { | |||
| 142 | qsort(secpackages_list, sec_count, sizeof(char*), cmpstringp); | 142 | qsort(secpackages_list, sec_count, sizeof(char*), cmpstringp); |
| 143 | qsort(packages_list, packages_available-sec_count, sizeof(char*), cmpstringp); | 143 | qsort(packages_list, packages_available-sec_count, sizeof(char*), cmpstringp); |
| 144 | 144 | ||
| 145 | for(i = 0; i < sec_count; i++) | 145 | for(int i = 0; i < sec_count; i++) |
| 146 | printf("%s (security)\n", secpackages_list[i]); | 146 | printf("%s (security)\n", secpackages_list[i]); |
| 147 | |||
| 147 | if (only_critical == false) { | 148 | if (only_critical == false) { |
| 148 | for(i = 0; i < packages_available - sec_count; i++) | 149 | for(int i = 0; i < packages_available - sec_count; i++) |
| 149 | printf("%s\n", packages_list[i]); | 150 | printf("%s\n", packages_list[i]); |
| 150 | } | 151 | } |
| 151 | } | 152 | } |
| @@ -251,7 +252,7 @@ int process_arguments (int argc, char **argv) { | |||
| 251 | 252 | ||
| 252 | /* run an apt-get upgrade */ | 253 | /* run an apt-get upgrade */ |
| 253 | int run_upgrade(int *pkgcount, int *secpkgcount, char ***pkglist, char ***secpkglist){ | 254 | int run_upgrade(int *pkgcount, int *secpkgcount, char ***pkglist, char ***secpkglist){ |
| 254 | int i=0, result=STATE_UNKNOWN, regres=0, pc=0, spc=0; | 255 | int result=STATE_UNKNOWN, regres=0, pc=0, spc=0; |
| 255 | struct output chld_out, chld_err; | 256 | struct output chld_out, chld_err; |
| 256 | regex_t ireg, ereg, sreg; | 257 | regex_t ireg, ereg, sreg; |
| 257 | char *cmdline=NULL, rerrbuf[64]; | 258 | char *cmdline=NULL, rerrbuf[64]; |
| @@ -320,7 +321,7 @@ int run_upgrade(int *pkgcount, int *secpkgcount, char ***pkglist, char ***secpkg | |||
| 320 | * we may need to switch to the --print-uris output format, | 321 | * we may need to switch to the --print-uris output format, |
| 321 | * in which case the logic here will slightly change. | 322 | * in which case the logic here will slightly change. |
| 322 | */ | 323 | */ |
| 323 | for(i = 0; i < chld_out.lines; i++) { | 324 | for(size_t i = 0; i < chld_out.lines; i++) { |
| 324 | if(verbose){ | 325 | if(verbose){ |
| 325 | printf("%s\n", chld_out.line[i]); | 326 | printf("%s\n", chld_out.line[i]); |
| 326 | } | 327 | } |
| @@ -353,7 +354,7 @@ int run_upgrade(int *pkgcount, int *secpkgcount, char ***pkglist, char ***secpkg | |||
| 353 | stderr_warning=1; | 354 | stderr_warning=1; |
| 354 | result = max_state(result, STATE_WARNING); | 355 | result = max_state(result, STATE_WARNING); |
| 355 | if(verbose){ | 356 | if(verbose){ |
| 356 | for(i = 0; i < chld_err.lines; i++) { | 357 | for(size_t i = 0; i < chld_err.lines; i++) { |
| 357 | fprintf(stderr, "%s\n", chld_err.line[i]); | 358 | fprintf(stderr, "%s\n", chld_err.line[i]); |
| 358 | } | 359 | } |
| 359 | } | 360 | } |
| @@ -367,7 +368,7 @@ int run_upgrade(int *pkgcount, int *secpkgcount, char ***pkglist, char ***secpkg | |||
| 367 | 368 | ||
| 368 | /* run an apt-get update (needs root) */ | 369 | /* run an apt-get update (needs root) */ |
| 369 | int run_update(void){ | 370 | int run_update(void){ |
| 370 | int i=0, result=STATE_UNKNOWN; | 371 | int result=STATE_UNKNOWN; |
| 371 | struct output chld_out, chld_err; | 372 | struct output chld_out, chld_err; |
| 372 | char *cmdline; | 373 | char *cmdline; |
| 373 | 374 | ||
| @@ -385,7 +386,7 @@ int run_update(void){ | |||
| 385 | } | 386 | } |
| 386 | 387 | ||
| 387 | if(verbose){ | 388 | if(verbose){ |
| 388 | for(i = 0; i < chld_out.lines; i++) { | 389 | for(size_t i = 0; i < chld_out.lines; i++) { |
| 389 | printf("%s\n", chld_out.line[i]); | 390 | printf("%s\n", chld_out.line[i]); |
| 390 | } | 391 | } |
| 391 | } | 392 | } |
| @@ -395,7 +396,7 @@ int run_update(void){ | |||
| 395 | stderr_warning=1; | 396 | stderr_warning=1; |
| 396 | result = max_state(result, STATE_WARNING); | 397 | result = max_state(result, STATE_WARNING); |
| 397 | if(verbose){ | 398 | if(verbose){ |
| 398 | for(i = 0; i < chld_err.lines; i++) { | 399 | for(size_t i = 0; i < chld_err.lines; i++) { |
| 399 | fprintf(stderr, "%s\n", chld_err.line[i]); | 400 | fprintf(stderr, "%s\n", chld_err.line[i]); |
| 400 | } | 401 | } |
| 401 | } | 402 | } |
diff --git a/plugins/check_by_ssh.c b/plugins/check_by_ssh.c index 1ad547ed..2a23b397 100644 --- a/plugins/check_by_ssh.c +++ b/plugins/check_by_ssh.c | |||
| @@ -50,7 +50,7 @@ unsigned int services = 0; | |||
| 50 | int skip_stdout = 0; | 50 | int skip_stdout = 0; |
| 51 | int skip_stderr = 0; | 51 | int skip_stderr = 0; |
| 52 | int warn_on_stderr = 0; | 52 | int warn_on_stderr = 0; |
| 53 | bool unknown_timeout = FALSE; | 53 | bool unknown_timeout = false; |
| 54 | char *remotecmd = NULL; | 54 | char *remotecmd = NULL; |
| 55 | char **commargv = NULL; | 55 | char **commargv = NULL; |
| 56 | int commargc = 0; | 56 | int commargc = 0; |
| @@ -58,8 +58,8 @@ char *hostname = NULL; | |||
| 58 | char *outputfile = NULL; | 58 | char *outputfile = NULL; |
| 59 | char *host_shortname = NULL; | 59 | char *host_shortname = NULL; |
| 60 | char **service; | 60 | char **service; |
| 61 | int passive = FALSE; | 61 | bool passive = false; |
| 62 | int verbose = FALSE; | 62 | bool verbose = false; |
| 63 | 63 | ||
| 64 | int | 64 | int |
| 65 | main (int argc, char **argv) | 65 | main (int argc, char **argv) |
| @@ -68,7 +68,6 @@ main (int argc, char **argv) | |||
| 68 | char *status_text; | 68 | char *status_text; |
| 69 | int cresult; | 69 | int cresult; |
| 70 | int result = STATE_UNKNOWN; | 70 | int result = STATE_UNKNOWN; |
| 71 | int i; | ||
| 72 | time_t local_time; | 71 | time_t local_time; |
| 73 | FILE *fp = NULL; | 72 | FILE *fp = NULL; |
| 74 | output chld_out, chld_err; | 73 | output chld_out, chld_err; |
| @@ -96,7 +95,7 @@ main (int argc, char **argv) | |||
| 96 | /* run the command */ | 95 | /* run the command */ |
| 97 | if (verbose) { | 96 | if (verbose) { |
| 98 | printf ("Command: %s\n", commargv[0]); | 97 | printf ("Command: %s\n", commargv[0]); |
| 99 | for (i=1; i<commargc; i++) | 98 | for (int i = 1; i < commargc; i++) |
| 100 | printf ("Argument %i: %s\n", i, commargv[i]); | 99 | printf ("Argument %i: %s\n", i, commargv[i]); |
| 101 | } | 100 | } |
| 102 | 101 | ||
| @@ -110,9 +109,9 @@ main (int argc, char **argv) | |||
| 110 | } | 109 | } |
| 111 | 110 | ||
| 112 | if (verbose) { | 111 | if (verbose) { |
| 113 | for(i = 0; i < chld_out.lines; i++) | 112 | for(size_t i = 0; i < chld_out.lines; i++) |
| 114 | printf("stdout: %s\n", chld_out.line[i]); | 113 | printf("stdout: %s\n", chld_out.line[i]); |
| 115 | for(i = 0; i < chld_err.lines; i++) | 114 | for(size_t i = 0; i < chld_err.lines; i++) |
| 116 | printf("stderr: %s\n", chld_err.line[i]); | 115 | printf("stderr: %s\n", chld_err.line[i]); |
| 117 | } | 116 | } |
| 118 | 117 | ||
| @@ -122,7 +121,7 @@ main (int argc, char **argv) | |||
| 122 | skip_stderr = chld_err.lines; | 121 | skip_stderr = chld_err.lines; |
| 123 | 122 | ||
| 124 | /* UNKNOWN or worse if (non-skipped) output found on stderr */ | 123 | /* UNKNOWN or worse if (non-skipped) output found on stderr */ |
| 125 | if(chld_err.lines > skip_stderr) { | 124 | if(chld_err.lines > (size_t)skip_stderr) { |
| 126 | printf (_("Remote command execution failed: %s\n"), | 125 | printf (_("Remote command execution failed: %s\n"), |
| 127 | chld_err.line[skip_stderr]); | 126 | chld_err.line[skip_stderr]); |
| 128 | if ( warn_on_stderr ) | 127 | if ( warn_on_stderr ) |
| @@ -134,8 +133,8 @@ main (int argc, char **argv) | |||
| 134 | /* this is simple if we're not supposed to be passive. | 133 | /* this is simple if we're not supposed to be passive. |
| 135 | * Wrap up quickly and keep the tricks below */ | 134 | * Wrap up quickly and keep the tricks below */ |
| 136 | if(!passive) { | 135 | if(!passive) { |
| 137 | if (chld_out.lines > skip_stdout) | 136 | if (chld_out.lines > (size_t)skip_stdout) |
| 138 | for (i = skip_stdout; i < chld_out.lines; i++) | 137 | for (size_t i = skip_stdout; i < chld_out.lines; i++) |
| 139 | puts (chld_out.line[i]); | 138 | puts (chld_out.line[i]); |
| 140 | else | 139 | else |
| 141 | printf (_("%s - check_by_ssh: Remote command '%s' returned status %d\n"), | 140 | printf (_("%s - check_by_ssh: Remote command '%s' returned status %d\n"), |
| @@ -156,7 +155,7 @@ main (int argc, char **argv) | |||
| 156 | 155 | ||
| 157 | local_time = time (NULL); | 156 | local_time = time (NULL); |
| 158 | commands = 0; | 157 | commands = 0; |
| 159 | for(i = skip_stdout; i < chld_out.lines; i++) { | 158 | for(size_t i = skip_stdout; i < chld_out.lines; i++) { |
| 160 | status_text = chld_out.line[i++]; | 159 | status_text = chld_out.line[i++]; |
| 161 | if (i == chld_out.lines || strstr (chld_out.line[i], "STATUS CODE: ") == NULL) | 160 | if (i == chld_out.lines || strstr (chld_out.line[i], "STATUS CODE: ") == NULL) |
| 162 | die (STATE_UNKNOWN, _("%s: Error parsing output\n"), progname); | 161 | die (STATE_UNKNOWN, _("%s: Error parsing output\n"), progname); |
| @@ -235,7 +234,7 @@ process_arguments (int argc, char **argv) | |||
| 235 | print_help (); | 234 | print_help (); |
| 236 | exit (STATE_UNKNOWN); | 235 | exit (STATE_UNKNOWN); |
| 237 | case 'v': /* help */ | 236 | case 'v': /* help */ |
| 238 | verbose = TRUE; | 237 | verbose = true; |
| 239 | break; | 238 | break; |
| 240 | case 't': /* timeout period */ | 239 | case 't': /* timeout period */ |
| 241 | if (!is_integer (optarg)) | 240 | if (!is_integer (optarg)) |
| @@ -244,7 +243,7 @@ process_arguments (int argc, char **argv) | |||
| 244 | timeout_interval = atoi (optarg); | 243 | timeout_interval = atoi (optarg); |
| 245 | break; | 244 | break; |
| 246 | case 'U': | 245 | case 'U': |
| 247 | unknown_timeout = TRUE; | 246 | unknown_timeout = true; |
| 248 | break; | 247 | break; |
| 249 | case 'H': /* host */ | 248 | case 'H': /* host */ |
| 250 | hostname = optarg; | 249 | hostname = optarg; |
| @@ -257,7 +256,7 @@ process_arguments (int argc, char **argv) | |||
| 257 | break; | 256 | break; |
| 258 | case 'O': /* output file */ | 257 | case 'O': /* output file */ |
| 259 | outputfile = optarg; | 258 | outputfile = optarg; |
| 260 | passive = TRUE; | 259 | passive = true; |
| 261 | break; | 260 | break; |
| 262 | case 's': /* description of service to check */ | 261 | case 's': /* description of service to check */ |
| 263 | p1 = optarg; | 262 | p1 = optarg; |
diff --git a/plugins/check_curl.c b/plugins/check_curl.c index d0871c48..d3bddacd 100644 --- a/plugins/check_curl.c +++ b/plugins/check_curl.c | |||
| @@ -134,6 +134,7 @@ char regexp[MAX_RE_SIZE]; | |||
| 134 | int cflags = REG_NOSUB | REG_EXTENDED | REG_NEWLINE; | 134 | int cflags = REG_NOSUB | REG_EXTENDED | REG_NEWLINE; |
| 135 | int errcode; | 135 | int errcode; |
| 136 | bool invert_regex = false; | 136 | bool invert_regex = false; |
| 137 | int state_regex = STATE_CRITICAL; | ||
| 137 | 138 | ||
| 138 | char *server_address = NULL; | 139 | char *server_address = NULL; |
| 139 | char *host_name = NULL; | 140 | char *host_name = NULL; |
| @@ -213,6 +214,7 @@ char *client_privkey = NULL; | |||
| 213 | char *ca_cert = NULL; | 214 | char *ca_cert = NULL; |
| 214 | bool verify_peer_and_host = false; | 215 | bool verify_peer_and_host = false; |
| 215 | bool is_openssl_callback = false; | 216 | bool is_openssl_callback = false; |
| 217 | bool add_sslctx_verify_fun = false; | ||
| 216 | #if defined(HAVE_SSL) && defined(USE_OPENSSL) | 218 | #if defined(HAVE_SSL) && defined(USE_OPENSSL) |
| 217 | X509 *cert = NULL; | 219 | X509 *cert = NULL; |
| 218 | #endif /* defined(HAVE_SSL) && defined(USE_OPENSSL) */ | 220 | #endif /* defined(HAVE_SSL) && defined(USE_OPENSSL) */ |
| @@ -223,6 +225,7 @@ curlhelp_ssl_library ssl_library = CURLHELP_SSL_LIBRARY_UNKNOWN; | |||
| 223 | int curl_http_version = CURL_HTTP_VERSION_NONE; | 225 | int curl_http_version = CURL_HTTP_VERSION_NONE; |
| 224 | bool automatic_decompression = false; | 226 | bool automatic_decompression = false; |
| 225 | char *cookie_jar_file = NULL; | 227 | char *cookie_jar_file = NULL; |
| 228 | bool haproxy_protocol = false; | ||
| 226 | 229 | ||
| 227 | bool process_arguments (int, char**); | 230 | bool process_arguments (int, char**); |
| 228 | void handle_curl_option_return_code (CURLcode res, const char* option); | 231 | void handle_curl_option_return_code (CURLcode res, const char* option); |
| @@ -239,10 +242,10 @@ void print_help (void); | |||
| 239 | void print_usage (void); | 242 | void print_usage (void); |
| 240 | void print_curl_version (void); | 243 | void print_curl_version (void); |
| 241 | int curlhelp_initwritebuffer (curlhelp_write_curlbuf*); | 244 | int curlhelp_initwritebuffer (curlhelp_write_curlbuf*); |
| 242 | int curlhelp_buffer_write_callback (void*, size_t , size_t , void*); | 245 | size_t curlhelp_buffer_write_callback(void*, size_t , size_t , void*); |
| 243 | void curlhelp_freewritebuffer (curlhelp_write_curlbuf*); | 246 | void curlhelp_freewritebuffer (curlhelp_write_curlbuf*); |
| 244 | int curlhelp_initreadbuffer (curlhelp_read_curlbuf *, const char *, size_t); | 247 | int curlhelp_initreadbuffer (curlhelp_read_curlbuf *, const char *, size_t); |
| 245 | int curlhelp_buffer_read_callback (void *, size_t , size_t , void *); | 248 | size_t curlhelp_buffer_read_callback(void *, size_t , size_t , void *); |
| 246 | void curlhelp_freereadbuffer (curlhelp_read_curlbuf *); | 249 | void curlhelp_freereadbuffer (curlhelp_read_curlbuf *); |
| 247 | curlhelp_ssl_library curlhelp_get_ssl_library (); | 250 | curlhelp_ssl_library curlhelp_get_ssl_library (); |
| 248 | const char* curlhelp_get_ssl_library_string (curlhelp_ssl_library); | 251 | const char* curlhelp_get_ssl_library_string (curlhelp_ssl_library); |
| @@ -297,7 +300,7 @@ main (int argc, char **argv) | |||
| 297 | 300 | ||
| 298 | int verify_callback(int preverify_ok, X509_STORE_CTX *x509_ctx) | 301 | int verify_callback(int preverify_ok, X509_STORE_CTX *x509_ctx) |
| 299 | { | 302 | { |
| 300 | (void) preverify_ok; | 303 | (void) preverify_ok; |
| 301 | /* TODO: we get all certificates of the chain, so which ones | 304 | /* TODO: we get all certificates of the chain, so which ones |
| 302 | * should we test? | 305 | * should we test? |
| 303 | * TODO: is the last certificate always the server certificate? | 306 | * TODO: is the last certificate always the server certificate? |
| @@ -322,9 +325,18 @@ int verify_callback(int preverify_ok, X509_STORE_CTX *x509_ctx) | |||
| 322 | 325 | ||
| 323 | CURLcode sslctxfun(CURL *curl, SSL_CTX *sslctx, void *parm) | 326 | CURLcode sslctxfun(CURL *curl, SSL_CTX *sslctx, void *parm) |
| 324 | { | 327 | { |
| 325 | (void) curl; // ignore unused parameter | 328 | (void) curl; // ignore unused parameter |
| 326 | (void) parm; // ignore unused parameter | 329 | (void) parm; // ignore unused parameter |
| 327 | SSL_CTX_set_verify(sslctx, SSL_VERIFY_PEER, verify_callback); | 330 | if(add_sslctx_verify_fun) { |
| 331 | SSL_CTX_set_verify(sslctx, SSL_VERIFY_PEER, verify_callback); | ||
| 332 | } | ||
| 333 | |||
| 334 | // workaround for issue: | ||
| 335 | // OpenSSL SSL_read: error:0A000126:SSL routines::unexpected eof while reading, errno 0 | ||
| 336 | // see discussion https://github.com/openssl/openssl/discussions/22690 | ||
| 337 | #ifdef SSL_OP_IGNORE_UNEXPECTED_EOF | ||
| 338 | SSL_CTX_set_options(sslctx, SSL_OP_IGNORE_UNEXPECTED_EOF); | ||
| 339 | #endif | ||
| 328 | 340 | ||
| 329 | return CURLE_OK; | 341 | return CURLE_OK; |
| 330 | } | 342 | } |
| @@ -395,7 +407,7 @@ lookup_host (const char *host, char *buf, size_t buflen) | |||
| 395 | char addrstr[100]; | 407 | char addrstr[100]; |
| 396 | size_t addrstr_len; | 408 | size_t addrstr_len; |
| 397 | int errcode; | 409 | int errcode; |
| 398 | void *ptr; | 410 | void *ptr = { 0 }; |
| 399 | size_t buflen_remaining = buflen - 1; | 411 | size_t buflen_remaining = buflen - 1; |
| 400 | 412 | ||
| 401 | memset (&hints, 0, sizeof (hints)); | 413 | memset (&hints, 0, sizeof (hints)); |
| @@ -466,6 +478,7 @@ int | |||
| 466 | check_http (void) | 478 | check_http (void) |
| 467 | { | 479 | { |
| 468 | int result = STATE_OK; | 480 | int result = STATE_OK; |
| 481 | int result_ssl = STATE_OK; | ||
| 469 | int page_len = 0; | 482 | int page_len = 0; |
| 470 | int i; | 483 | int i; |
| 471 | char *force_host_header = NULL; | 484 | char *force_host_header = NULL; |
| @@ -485,7 +498,7 @@ check_http (void) | |||
| 485 | 498 | ||
| 486 | /* register cleanup function to shut down libcurl properly */ | 499 | /* register cleanup function to shut down libcurl properly */ |
| 487 | atexit (cleanup); | 500 | atexit (cleanup); |
| 488 | 501 | ||
| 489 | if (verbose >= 1) | 502 | if (verbose >= 1) |
| 490 | handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_VERBOSE, 1), "CURLOPT_VERBOSE"); | 503 | handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_VERBOSE, 1), "CURLOPT_VERBOSE"); |
| 491 | 504 | ||
| @@ -520,6 +533,11 @@ check_http (void) | |||
| 520 | handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_CONNECTTIMEOUT, socket_timeout), "CURLOPT_CONNECTTIMEOUT"); | 533 | handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_CONNECTTIMEOUT, socket_timeout), "CURLOPT_CONNECTTIMEOUT"); |
| 521 | handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_TIMEOUT, socket_timeout), "CURLOPT_TIMEOUT"); | 534 | handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_TIMEOUT, socket_timeout), "CURLOPT_TIMEOUT"); |
| 522 | 535 | ||
| 536 | /* enable haproxy protocol */ | ||
| 537 | if (haproxy_protocol) { | ||
| 538 | handle_curl_option_return_code(curl_easy_setopt(curl, CURLOPT_HAPROXYPROTOCOL, 1L), "CURLOPT_HAPROXYPROTOCOL"); | ||
| 539 | } | ||
| 540 | |||
| 523 | // fill dns resolve cache to make curl connect to the given server_address instead of the host_name, only required for ssl, because we use the host_name later on to make SNI happy | 541 | // fill dns resolve cache to make curl connect to the given server_address instead of the host_name, only required for ssl, because we use the host_name later on to make SNI happy |
| 524 | if(use_ssl && host_name != NULL) { | 542 | if(use_ssl && host_name != NULL) { |
| 525 | if ( (res=lookup_host (server_address, addrstr, DEFAULT_BUFFER_SIZE/2)) != 0) { | 543 | if ( (res=lookup_host (server_address, addrstr, DEFAULT_BUFFER_SIZE/2)) != 0) { |
| @@ -670,9 +688,8 @@ check_http (void) | |||
| 670 | * OpenSSL-style libraries only!) */ | 688 | * OpenSSL-style libraries only!) */ |
| 671 | #ifdef USE_OPENSSL | 689 | #ifdef USE_OPENSSL |
| 672 | /* libcurl and monitoring plugins built with OpenSSL, good */ | 690 | /* libcurl and monitoring plugins built with OpenSSL, good */ |
| 673 | handle_curl_option_return_code (curl_easy_setopt(curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun), "CURLOPT_SSL_CTX_FUNCTION"); | 691 | add_sslctx_verify_fun = true; |
| 674 | is_openssl_callback = true; | 692 | is_openssl_callback = true; |
| 675 | #else /* USE_OPENSSL */ | ||
| 676 | #endif /* USE_OPENSSL */ | 693 | #endif /* USE_OPENSSL */ |
| 677 | /* libcurl is built with OpenSSL, monitoring plugins, so falling | 694 | /* libcurl is built with OpenSSL, monitoring plugins, so falling |
| 678 | * back to manually extracting certificate information */ | 695 | * back to manually extracting certificate information */ |
| @@ -705,12 +722,18 @@ check_http (void) | |||
| 705 | #else /* LIBCURL_VERSION_NUM >= MAKE_LIBCURL_VERSION(7, 19, 1) */ | 722 | #else /* LIBCURL_VERSION_NUM >= MAKE_LIBCURL_VERSION(7, 19, 1) */ |
| 706 | /* old libcurl, our only hope is OpenSSL, otherwise we are out of luck */ | 723 | /* old libcurl, our only hope is OpenSSL, otherwise we are out of luck */ |
| 707 | if (ssl_library == CURLHELP_SSL_LIBRARY_OPENSSL || ssl_library == CURLHELP_SSL_LIBRARY_LIBRESSL) | 724 | if (ssl_library == CURLHELP_SSL_LIBRARY_OPENSSL || ssl_library == CURLHELP_SSL_LIBRARY_LIBRESSL) |
| 708 | handle_curl_option_return_code (curl_easy_setopt(curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun), "CURLOPT_SSL_CTX_FUNCTION"); | 725 | add_sslctx_verify_fun = true; |
| 709 | else | 726 | else |
| 710 | die (STATE_CRITICAL, "HTTP CRITICAL - Cannot retrieve certificates (no CURLOPT_SSL_CTX_FUNCTION, no OpenSSL library or libcurl too old and has no CURLOPT_CERTINFO)\n"); | 727 | die (STATE_CRITICAL, "HTTP CRITICAL - Cannot retrieve certificates (no CURLOPT_SSL_CTX_FUNCTION, no OpenSSL library or libcurl too old and has no CURLOPT_CERTINFO)\n"); |
| 711 | #endif /* LIBCURL_VERSION_NUM >= MAKE_LIBCURL_VERSION(7, 19, 1) */ | 728 | #endif /* LIBCURL_VERSION_NUM >= MAKE_LIBCURL_VERSION(7, 19, 1) */ |
| 712 | } | 729 | } |
| 713 | 730 | ||
| 731 | #if LIBCURL_VERSION_NUM >= MAKE_LIBCURL_VERSION(7, 10, 6) /* required for CURLOPT_SSL_CTX_FUNCTION */ | ||
| 732 | // ssl ctx function is not available with all ssl backends | ||
| 733 | if (curl_easy_setopt(curl, CURLOPT_SSL_CTX_FUNCTION, NULL) != CURLE_UNKNOWN_OPTION) | ||
| 734 | handle_curl_option_return_code (curl_easy_setopt(curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun), "CURLOPT_SSL_CTX_FUNCTION"); | ||
| 735 | #endif | ||
| 736 | |||
| 714 | #endif /* LIBCURL_FEATURE_SSL */ | 737 | #endif /* LIBCURL_FEATURE_SSL */ |
| 715 | 738 | ||
| 716 | /* set default or user-given user agent identification */ | 739 | /* set default or user-given user agent identification */ |
| @@ -805,7 +828,7 @@ check_http (void) | |||
| 805 | handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_INFILESIZE, (curl_off_t)strlen (http_post_data)), "CURLOPT_INFILESIZE"); | 828 | handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_INFILESIZE, (curl_off_t)strlen (http_post_data)), "CURLOPT_INFILESIZE"); |
| 806 | } | 829 | } |
| 807 | } | 830 | } |
| 808 | 831 | ||
| 809 | /* cookie handling */ | 832 | /* cookie handling */ |
| 810 | if (cookie_jar_file != NULL) { | 833 | if (cookie_jar_file != NULL) { |
| 811 | handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_COOKIEJAR, cookie_jar_file), "CURLOPT_COOKIEJAR"); | 834 | handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_COOKIEJAR, cookie_jar_file), "CURLOPT_COOKIEJAR"); |
| @@ -845,9 +868,9 @@ check_http (void) | |||
| 845 | /* check certificate with OpenSSL functions, curl has been built against OpenSSL | 868 | /* check certificate with OpenSSL functions, curl has been built against OpenSSL |
| 846 | * and we actually have OpenSSL in the monitoring tools | 869 | * and we actually have OpenSSL in the monitoring tools |
| 847 | */ | 870 | */ |
| 848 | result = np_net_ssl_check_certificate(cert, days_till_exp_warn, days_till_exp_crit); | 871 | result_ssl = np_net_ssl_check_certificate(cert, days_till_exp_warn, days_till_exp_crit); |
| 849 | if (!continue_after_check_cert) { | 872 | if (!continue_after_check_cert) { |
| 850 | return result; | 873 | return result_ssl; |
| 851 | } | 874 | } |
| 852 | #else /* USE_OPENSSL */ | 875 | #else /* USE_OPENSSL */ |
| 853 | die (STATE_CRITICAL, "HTTP CRITICAL - Cannot retrieve certificates - OpenSSL callback used and not linked against OpenSSL\n"); | 876 | die (STATE_CRITICAL, "HTTP CRITICAL - Cannot retrieve certificates - OpenSSL callback used and not linked against OpenSSL\n"); |
| @@ -891,17 +914,17 @@ GOT_FIRST_CERT: | |||
| 891 | die (STATE_CRITICAL, "HTTP CRITICAL - %s\n", msg); | 914 | die (STATE_CRITICAL, "HTTP CRITICAL - %s\n", msg); |
| 892 | } | 915 | } |
| 893 | BIO_free (cert_BIO); | 916 | BIO_free (cert_BIO); |
| 894 | result = np_net_ssl_check_certificate(cert, days_till_exp_warn, days_till_exp_crit); | 917 | result_ssl = np_net_ssl_check_certificate(cert, days_till_exp_warn, days_till_exp_crit); |
| 895 | if (!continue_after_check_cert) { | 918 | if (!continue_after_check_cert) { |
| 896 | return result; | 919 | return result_ssl; |
| 897 | } | 920 | } |
| 898 | #else /* USE_OPENSSL */ | 921 | #else /* USE_OPENSSL */ |
| 899 | /* We assume we don't have OpenSSL and np_net_ssl_check_certificate at our disposal, | 922 | /* We assume we don't have OpenSSL and np_net_ssl_check_certificate at our disposal, |
| 900 | * so we use the libcurl CURLINFO data | 923 | * so we use the libcurl CURLINFO data |
| 901 | */ | 924 | */ |
| 902 | result = net_noopenssl_check_certificate(&cert_ptr, days_till_exp_warn, days_till_exp_crit); | 925 | result_ssl = net_noopenssl_check_certificate(&cert_ptr, days_till_exp_warn, days_till_exp_crit); |
| 903 | if (!continue_after_check_cert) { | 926 | if (!continue_after_check_cert) { |
| 904 | return result; | 927 | return result_ssl; |
| 905 | } | 928 | } |
| 906 | #endif /* USE_OPENSSL */ | 929 | #endif /* USE_OPENSSL */ |
| 907 | } else { | 930 | } else { |
| @@ -1127,7 +1150,7 @@ GOT_FIRST_CERT: | |||
| 1127 | strcpy(msg, tmp); | 1150 | strcpy(msg, tmp); |
| 1128 | 1151 | ||
| 1129 | } | 1152 | } |
| 1130 | result = STATE_CRITICAL; | 1153 | result = state_regex; |
| 1131 | } else { | 1154 | } else { |
| 1132 | regerror (errcode, &preg, errbuf, MAX_INPUT_BUFFER); | 1155 | regerror (errcode, &preg, errbuf, MAX_INPUT_BUFFER); |
| 1133 | 1156 | ||
| @@ -1167,9 +1190,9 @@ GOT_FIRST_CERT: | |||
| 1167 | else | 1190 | else |
| 1168 | msg[strlen(msg)-3] = '\0'; | 1191 | msg[strlen(msg)-3] = '\0'; |
| 1169 | } | 1192 | } |
| 1170 | 1193 | ||
| 1171 | /* TODO: separate _() msg and status code: die (result, "HTTP %s: %s\n", state_text(result), msg); */ | 1194 | /* TODO: separate _() msg and status code: die (result, "HTTP %s: %s\n", state_text(result), msg); */ |
| 1172 | die (result, "HTTP %s: %s %d %s%s%s - %d bytes in %.3f second response time %s|%s\n%s%s", | 1195 | die (max_state_alt(result, result_ssl), "HTTP %s: %s %d %s%s%s - %d bytes in %.3f second response time %s|%s\n%s%s", |
| 1173 | state_text(result), string_statuscode (status_line.http_major, status_line.http_minor), | 1196 | state_text(result), string_statuscode (status_line.http_major, status_line.http_minor), |
| 1174 | status_line.http_code, status_line.msg, | 1197 | status_line.http_code, status_line.msg, |
| 1175 | strlen(msg) > 0 ? " - " : "", | 1198 | strlen(msg) > 0 ? " - " : "", |
| @@ -1179,23 +1202,23 @@ GOT_FIRST_CERT: | |||
| 1179 | (show_body ? body_buf.buf : ""), | 1202 | (show_body ? body_buf.buf : ""), |
| 1180 | (show_body ? "\n" : "") ); | 1203 | (show_body ? "\n" : "") ); |
| 1181 | 1204 | ||
| 1182 | return result; | 1205 | return max_state_alt(result, result_ssl); |
| 1183 | } | 1206 | } |
| 1184 | 1207 | ||
| 1185 | int | 1208 | int |
| 1186 | uri_strcmp (const UriTextRangeA range, const char* s) | 1209 | uri_strcmp (const UriTextRangeA range, const char* s) |
| 1187 | { | 1210 | { |
| 1188 | if (!range.first) return -1; | 1211 | if (!range.first) return -1; |
| 1189 | if (range.afterLast - range.first < strlen (s)) return -1; | 1212 | if ( (size_t)(range.afterLast - range.first) < strlen (s) ) return -1; |
| 1190 | return strncmp (s, range.first, min( range.afterLast - range.first, strlen (s))); | 1213 | return strncmp (s, range.first, min( (size_t)(range.afterLast - range.first), strlen (s))); |
| 1191 | } | 1214 | } |
| 1192 | 1215 | ||
| 1193 | char* | 1216 | char* |
| 1194 | uri_string (const UriTextRangeA range, char* buf, size_t buflen) | 1217 | uri_string (const UriTextRangeA range, char* buf, size_t buflen) |
| 1195 | { | 1218 | { |
| 1196 | if (!range.first) return "(null)"; | 1219 | if (!range.first) return "(null)"; |
| 1197 | strncpy (buf, range.first, max (buflen-1, range.afterLast - range.first)); | 1220 | strncpy (buf, range.first, max (buflen-1, (size_t)(range.afterLast - range.first))); |
| 1198 | buf[max (buflen-1, range.afterLast - range.first)] = '\0'; | 1221 | buf[max (buflen-1, (size_t)(range.afterLast - range.first))] = '\0'; |
| 1199 | buf[range.afterLast - range.first] = '\0'; | 1222 | buf[range.afterLast - range.first] = '\0'; |
| 1200 | return buf; | 1223 | return buf; |
| 1201 | } | 1224 | } |
| @@ -1218,6 +1241,10 @@ redir (curlhelp_write_curlbuf* header_buf) | |||
| 1218 | &status_line.http_major, &status_line.http_minor, &status_line.http_code, &status_line.msg, &msglen, | 1241 | &status_line.http_major, &status_line.http_minor, &status_line.http_code, &status_line.msg, &msglen, |
| 1219 | headers, &nof_headers, 0); | 1242 | headers, &nof_headers, 0); |
| 1220 | 1243 | ||
| 1244 | if (res == -1) { | ||
| 1245 | die (STATE_UNKNOWN, _("HTTP UNKNOWN - Failed to parse Response\n")); | ||
| 1246 | } | ||
| 1247 | |||
| 1221 | location = get_header_value (headers, nof_headers, "location"); | 1248 | location = get_header_value (headers, nof_headers, "location"); |
| 1222 | 1249 | ||
| 1223 | if (verbose >= 2) | 1250 | if (verbose >= 2) |
| @@ -1274,10 +1301,12 @@ redir (curlhelp_write_curlbuf* header_buf) | |||
| 1274 | } | 1301 | } |
| 1275 | } | 1302 | } |
| 1276 | 1303 | ||
| 1277 | if (!uri_strcmp (uri.scheme, "https")) | 1304 | if (uri.scheme.first) { |
| 1278 | use_ssl = true; | 1305 | if (!uri_strcmp (uri.scheme, "https")) |
| 1279 | else | 1306 | use_ssl = true; |
| 1280 | use_ssl = false; | 1307 | else |
| 1308 | use_ssl = false; | ||
| 1309 | } | ||
| 1281 | 1310 | ||
| 1282 | /* we do a sloppy test here only, because uriparser would have failed | 1311 | /* we do a sloppy test here only, because uriparser would have failed |
| 1283 | * above, if the port would be invalid, we just check for MAX_PORT | 1312 | * above, if the port would be invalid, we just check for MAX_PORT |
| @@ -1295,10 +1324,13 @@ redir (curlhelp_write_curlbuf* header_buf) | |||
| 1295 | MAX_PORT, location, display_html ? "</A>" : ""); | 1324 | MAX_PORT, location, display_html ? "</A>" : ""); |
| 1296 | 1325 | ||
| 1297 | /* by RFC 7231 relative URLs in Location should be taken relative to | 1326 | /* by RFC 7231 relative URLs in Location should be taken relative to |
| 1298 | * the original URL, so wy try to form a new absolute URL here | 1327 | * the original URL, so we try to form a new absolute URL here |
| 1299 | */ | 1328 | */ |
| 1300 | if (!uri.scheme.first && !uri.hostText.first) { | 1329 | if (!uri.scheme.first && !uri.hostText.first) { |
| 1301 | new_host = strdup (host_name ? host_name : server_address); | 1330 | new_host = strdup (host_name ? host_name : server_address); |
| 1331 | new_port = server_port; | ||
| 1332 | if(use_ssl) | ||
| 1333 | uri_string (uri.scheme, "https", DEFAULT_BUFFER_SIZE); | ||
| 1302 | } else { | 1334 | } else { |
| 1303 | new_host = strdup (uri_string (uri.hostText, buf, DEFAULT_BUFFER_SIZE)); | 1335 | new_host = strdup (uri_string (uri.hostText, buf, DEFAULT_BUFFER_SIZE)); |
| 1304 | } | 1336 | } |
| @@ -1380,7 +1412,9 @@ process_arguments (int argc, char **argv) | |||
| 1380 | CA_CERT_OPTION, | 1412 | CA_CERT_OPTION, |
| 1381 | HTTP_VERSION_OPTION, | 1413 | HTTP_VERSION_OPTION, |
| 1382 | AUTOMATIC_DECOMPRESSION, | 1414 | AUTOMATIC_DECOMPRESSION, |
| 1383 | COOKIE_JAR | 1415 | COOKIE_JAR, |
| 1416 | HAPROXY_PROTOCOL, | ||
| 1417 | STATE_REGEX | ||
| 1384 | }; | 1418 | }; |
| 1385 | 1419 | ||
| 1386 | int option = 0; | 1420 | int option = 0; |
| @@ -1419,6 +1453,7 @@ process_arguments (int argc, char **argv) | |||
| 1419 | {"content-type", required_argument, 0, 'T'}, | 1453 | {"content-type", required_argument, 0, 'T'}, |
| 1420 | {"pagesize", required_argument, 0, 'm'}, | 1454 | {"pagesize", required_argument, 0, 'm'}, |
| 1421 | {"invert-regex", no_argument, NULL, INVERT_REGEX}, | 1455 | {"invert-regex", no_argument, NULL, INVERT_REGEX}, |
| 1456 | {"state-regex", required_argument, 0, STATE_REGEX}, | ||
| 1422 | {"use-ipv4", no_argument, 0, '4'}, | 1457 | {"use-ipv4", no_argument, 0, '4'}, |
| 1423 | {"use-ipv6", no_argument, 0, '6'}, | 1458 | {"use-ipv6", no_argument, 0, '6'}, |
| 1424 | {"extended-perfdata", no_argument, 0, 'E'}, | 1459 | {"extended-perfdata", no_argument, 0, 'E'}, |
| @@ -1427,6 +1462,7 @@ process_arguments (int argc, char **argv) | |||
| 1427 | {"http-version", required_argument, 0, HTTP_VERSION_OPTION}, | 1462 | {"http-version", required_argument, 0, HTTP_VERSION_OPTION}, |
| 1428 | {"enable-automatic-decompression", no_argument, 0, AUTOMATIC_DECOMPRESSION}, | 1463 | {"enable-automatic-decompression", no_argument, 0, AUTOMATIC_DECOMPRESSION}, |
| 1429 | {"cookie-jar", required_argument, 0, COOKIE_JAR}, | 1464 | {"cookie-jar", required_argument, 0, COOKIE_JAR}, |
| 1465 | {"haproxy-protocol", no_argument, 0, HAPROXY_PROTOCOL}, | ||
| 1430 | {0, 0, 0, 0} | 1466 | {0, 0, 0, 0} |
| 1431 | }; | 1467 | }; |
| 1432 | 1468 | ||
| @@ -1694,7 +1730,7 @@ process_arguments (int argc, char **argv) | |||
| 1694 | else { | 1730 | else { |
| 1695 | max_depth = atoi (optarg); | 1731 | max_depth = atoi (optarg); |
| 1696 | } | 1732 | } |
| 1697 | break; | 1733 | break; |
| 1698 | case 'f': /* onredirect */ | 1734 | case 'f': /* onredirect */ |
| 1699 | if (!strcmp (optarg, "ok")) | 1735 | if (!strcmp (optarg, "ok")) |
| 1700 | onredirect = STATE_OK; | 1736 | onredirect = STATE_OK; |
| @@ -1753,6 +1789,13 @@ process_arguments (int argc, char **argv) | |||
| 1753 | case INVERT_REGEX: | 1789 | case INVERT_REGEX: |
| 1754 | invert_regex = true; | 1790 | invert_regex = true; |
| 1755 | break; | 1791 | break; |
| 1792 | case STATE_REGEX: | ||
| 1793 | if (!strcasecmp (optarg, "critical")) | ||
| 1794 | state_regex = STATE_CRITICAL; | ||
| 1795 | else if (!strcasecmp (optarg, "warning")) | ||
| 1796 | state_regex = STATE_WARNING; | ||
| 1797 | else usage2 (_("Invalid state-regex option"), optarg); | ||
| 1798 | break; | ||
| 1756 | case '4': | 1799 | case '4': |
| 1757 | address_family = AF_INET; | 1800 | address_family = AF_INET; |
| 1758 | break; | 1801 | break; |
| @@ -1837,6 +1880,9 @@ process_arguments (int argc, char **argv) | |||
| 1837 | case COOKIE_JAR: | 1880 | case COOKIE_JAR: |
| 1838 | cookie_jar_file = optarg; | 1881 | cookie_jar_file = optarg; |
| 1839 | break; | 1882 | break; |
| 1883 | case HAPROXY_PROTOCOL: | ||
| 1884 | haproxy_protocol = true; | ||
| 1885 | break; | ||
| 1840 | case '?': | 1886 | case '?': |
| 1841 | /* print short usage statement if args not parsable */ | 1887 | /* print short usage statement if args not parsable */ |
| 1842 | usage5 (); | 1888 | usage5 (); |
| @@ -1977,8 +2023,11 @@ print_help (void) | |||
| 1977 | printf (" %s\n", _("Note: SNI is not supported in libcurl before 7.18.1")); | 2023 | printf (" %s\n", _("Note: SNI is not supported in libcurl before 7.18.1")); |
| 1978 | #endif | 2024 | #endif |
| 1979 | printf (" %s\n", "-C, --certificate=INTEGER[,INTEGER]"); | 2025 | printf (" %s\n", "-C, --certificate=INTEGER[,INTEGER]"); |
| 1980 | printf (" %s\n", _("Minimum number of days a certificate has to be valid. Port defaults to 443")); | 2026 | printf (" %s\n", _("Minimum number of days a certificate has to be valid. Port defaults to 443.")); |
| 1981 | printf (" %s\n", _("(when this option is used the URL is not checked by default. You can use")); | 2027 | printf (" %s\n", _("A STATE_WARNING is returned if the certificate has a validity less than the")); |
| 2028 | printf (" %s\n", _("first agument's value. If there is a second argument and the certificate's")); | ||
| 2029 | printf (" %s\n", _("validity is less than its value, a STATE_CRITICAL is returned.")); | ||
| 2030 | printf (" %s\n", _("(When this option is used the URL is not checked by default. You can use")); | ||
| 1982 | printf (" %s\n", _(" --continue-after-certificate to override this behavior)")); | 2031 | printf (" %s\n", _(" --continue-after-certificate to override this behavior)")); |
| 1983 | printf (" %s\n", "--continue-after-certificate"); | 2032 | printf (" %s\n", "--continue-after-certificate"); |
| 1984 | printf (" %s\n", _("Allows the HTTP check to continue after performing the certificate check.")); | 2033 | printf (" %s\n", _("Allows the HTTP check to continue after performing the certificate check.")); |
| @@ -2007,7 +2056,7 @@ print_help (void) | |||
| 2007 | printf (" %s\n", "-u, --url=PATH"); | 2056 | printf (" %s\n", "-u, --url=PATH"); |
| 2008 | printf (" %s\n", _("URL to GET or POST (default: /)")); | 2057 | printf (" %s\n", _("URL to GET or POST (default: /)")); |
| 2009 | printf (" %s\n", "-P, --post=STRING"); | 2058 | printf (" %s\n", "-P, --post=STRING"); |
| 2010 | printf (" %s\n", _("URL encoded http POST data")); | 2059 | printf (" %s\n", _("URL decoded http POST data")); |
| 2011 | printf (" %s\n", "-j, --method=STRING (for example: HEAD, OPTIONS, TRACE, PUT, DELETE, CONNECT)"); | 2060 | printf (" %s\n", "-j, --method=STRING (for example: HEAD, OPTIONS, TRACE, PUT, DELETE, CONNECT)"); |
| 2012 | printf (" %s\n", _("Set HTTP method.")); | 2061 | printf (" %s\n", _("Set HTTP method.")); |
| 2013 | printf (" %s\n", "-N, --no-body"); | 2062 | printf (" %s\n", "-N, --no-body"); |
| @@ -2025,7 +2074,10 @@ print_help (void) | |||
| 2025 | printf (" %s\n", "-R, --eregi=STRING"); | 2074 | printf (" %s\n", "-R, --eregi=STRING"); |
| 2026 | printf (" %s\n", _("Search page for case-insensitive regex STRING")); | 2075 | printf (" %s\n", _("Search page for case-insensitive regex STRING")); |
| 2027 | printf (" %s\n", "--invert-regex"); | 2076 | printf (" %s\n", "--invert-regex"); |
| 2028 | printf (" %s\n", _("Return CRITICAL if found, OK if not\n")); | 2077 | printf (" %s\n", _("Return STATE if found, OK if not (STATE is CRITICAL, per default)")); |
| 2078 | printf (" %s\n", _("can be changed with --state--regex)")); | ||
| 2079 | printf (" %s\n", "--state-regex=STATE"); | ||
| 2080 | printf (" %s\n", _("Return STATE if regex is found, OK if not. STATE can be one of \"critical\",\"warning\"")); | ||
| 2029 | printf (" %s\n", "-a, --authorization=AUTH_PAIR"); | 2081 | printf (" %s\n", "-a, --authorization=AUTH_PAIR"); |
| 2030 | printf (" %s\n", _("Username:password on sites with basic authentication")); | 2082 | printf (" %s\n", _("Username:password on sites with basic authentication")); |
| 2031 | printf (" %s\n", "-b, --proxy-authorization=AUTH_PAIR"); | 2083 | printf (" %s\n", "-b, --proxy-authorization=AUTH_PAIR"); |
| @@ -2056,7 +2108,9 @@ print_help (void) | |||
| 2056 | printf (" %s\n", _("1.0 = HTTP/1.0, 1.1 = HTTP/1.1, 2.0 = HTTP/2 (HTTP/2 will fail without -S)")); | 2108 | printf (" %s\n", _("1.0 = HTTP/1.0, 1.1 = HTTP/1.1, 2.0 = HTTP/2 (HTTP/2 will fail without -S)")); |
| 2057 | printf (" %s\n", "--enable-automatic-decompression"); | 2109 | printf (" %s\n", "--enable-automatic-decompression"); |
| 2058 | printf (" %s\n", _("Enable automatic decompression of body (CURLOPT_ACCEPT_ENCODING).")); | 2110 | printf (" %s\n", _("Enable automatic decompression of body (CURLOPT_ACCEPT_ENCODING).")); |
| 2059 | printf (" %s\n", "---cookie-jar=FILE"); | 2111 | printf(" %s\n", "--haproxy-protocol"); |
| 2112 | printf(" %s\n", _("Send HAProxy proxy protocol v1 header (CURLOPT_HAPROXYPROTOCOL).")); | ||
| 2113 | printf (" %s\n", "--cookie-jar=FILE"); | ||
| 2060 | printf (" %s\n", _("Store cookies in the cookie jar and send them out when requested.")); | 2114 | printf (" %s\n", _("Store cookies in the cookie jar and send them out when requested.")); |
| 2061 | printf ("\n"); | 2115 | printf ("\n"); |
| 2062 | 2116 | ||
| @@ -2140,7 +2194,7 @@ print_usage (void) | |||
| 2140 | printf (" [-b proxy_auth] [-f <ok|warning|critical|follow|sticky|stickyport|curl>]\n"); | 2194 | printf (" [-b proxy_auth] [-f <ok|warning|critical|follow|sticky|stickyport|curl>]\n"); |
| 2141 | printf (" [-e <expect>] [-d string] [-s string] [-l] [-r <regex> | -R <case-insensitive regex>]\n"); | 2195 | printf (" [-e <expect>] [-d string] [-s string] [-l] [-r <regex> | -R <case-insensitive regex>]\n"); |
| 2142 | printf (" [-P string] [-m <min_pg_size>:<max_pg_size>] [-4|-6] [-N] [-M <age>]\n"); | 2196 | printf (" [-P string] [-m <min_pg_size>:<max_pg_size>] [-4|-6] [-N] [-M <age>]\n"); |
| 2143 | printf (" [-A string] [-k string] [-S <version>] [--sni]\n"); | 2197 | printf (" [-A string] [-k string] [-S <version>] [--sni] [--haproxy-protocol]\n"); |
| 2144 | printf (" [-T <content-type>] [-j method]\n"); | 2198 | printf (" [-T <content-type>] [-j method]\n"); |
| 2145 | printf (" [--http-version=<version>] [--enable-automatic-decompression]\n"); | 2199 | printf (" [--http-version=<version>] [--enable-automatic-decompression]\n"); |
| 2146 | printf (" [--cookie-jar=<cookie jar file>\n"); | 2200 | printf (" [--cookie-jar=<cookie jar file>\n"); |
| @@ -2151,8 +2205,6 @@ print_usage (void) | |||
| 2151 | printf ("%s\n", _("In the first form, make an HTTP request.")); | 2205 | printf ("%s\n", _("In the first form, make an HTTP request.")); |
| 2152 | printf ("%s\n\n", _("In the second form, connect to the server and check the TLS certificate.")); | 2206 | printf ("%s\n\n", _("In the second form, connect to the server and check the TLS certificate.")); |
| 2153 | #endif | 2207 | #endif |
| 2154 | printf ("%s\n", _("WARNING: check_curl is experimental. Please use")); | ||
| 2155 | printf ("%s\n\n", _("check_http if you need a stable version.")); | ||
| 2156 | } | 2208 | } |
| 2157 | 2209 | ||
| 2158 | void | 2210 | void |
| @@ -2171,8 +2223,7 @@ curlhelp_initwritebuffer (curlhelp_write_curlbuf *buf) | |||
| 2171 | return 0; | 2223 | return 0; |
| 2172 | } | 2224 | } |
| 2173 | 2225 | ||
| 2174 | int | 2226 | size_t curlhelp_buffer_write_callback (void *buffer, size_t size, size_t nmemb, void *stream) |
| 2175 | curlhelp_buffer_write_callback (void *buffer, size_t size, size_t nmemb, void *stream) | ||
| 2176 | { | 2227 | { |
| 2177 | curlhelp_write_curlbuf *buf = (curlhelp_write_curlbuf *)stream; | 2228 | curlhelp_write_curlbuf *buf = (curlhelp_write_curlbuf *)stream; |
| 2178 | 2229 | ||
| @@ -2192,8 +2243,7 @@ curlhelp_buffer_write_callback (void *buffer, size_t size, size_t nmemb, void *s | |||
| 2192 | return (int)(size * nmemb); | 2243 | return (int)(size * nmemb); |
| 2193 | } | 2244 | } |
| 2194 | 2245 | ||
| 2195 | int | 2246 | size_t curlhelp_buffer_read_callback(void *buffer, size_t size, size_t nmemb, void *stream) |
| 2196 | curlhelp_buffer_read_callback (void *buffer, size_t size, size_t nmemb, void *stream) | ||
| 2197 | { | 2247 | { |
| 2198 | curlhelp_read_curlbuf *buf = (curlhelp_read_curlbuf *)stream; | 2248 | curlhelp_read_curlbuf *buf = (curlhelp_read_curlbuf *)stream; |
| 2199 | 2249 | ||
| @@ -2366,8 +2416,7 @@ remove_newlines (char *s) | |||
| 2366 | char * | 2416 | char * |
| 2367 | get_header_value (const struct phr_header* headers, const size_t nof_headers, const char* header) | 2417 | get_header_value (const struct phr_header* headers, const size_t nof_headers, const char* header) |
| 2368 | { | 2418 | { |
| 2369 | int i; | 2419 | for(size_t i = 0; i < nof_headers; i++ ) { |
| 2370 | for( i = 0; i < nof_headers; i++ ) { | ||
| 2371 | if(headers[i].name != NULL && strncasecmp( header, headers[i].name, max( headers[i].name_len, 4 ) ) == 0 ) { | 2420 | if(headers[i].name != NULL && strncasecmp( header, headers[i].name, max( headers[i].name_len, 4 ) ) == 0 ) { |
| 2372 | return strndup( headers[i].value, headers[i].value_len ); | 2421 | return strndup( headers[i].value, headers[i].value_len ); |
| 2373 | } | 2422 | } |
| @@ -2390,6 +2439,10 @@ check_document_dates (const curlhelp_write_curlbuf *header_buf, char (*msg)[DEFA | |||
| 2390 | &status_line.http_major, &status_line.http_minor, &status_line.http_code, &status_line.msg, &msglen, | 2439 | &status_line.http_major, &status_line.http_minor, &status_line.http_code, &status_line.msg, &msglen, |
| 2391 | headers, &nof_headers, 0); | 2440 | headers, &nof_headers, 0); |
| 2392 | 2441 | ||
| 2442 | if (res == -1) { | ||
| 2443 | die (STATE_UNKNOWN, _("HTTP UNKNOWN - Failed to parse Response\n")); | ||
| 2444 | } | ||
| 2445 | |||
| 2393 | server_date = get_header_value (headers, nof_headers, "date"); | 2446 | server_date = get_header_value (headers, nof_headers, "date"); |
| 2394 | document_date = get_header_value (headers, nof_headers, "last-modified"); | 2447 | document_date = get_header_value (headers, nof_headers, "last-modified"); |
| 2395 | 2448 | ||
| @@ -2465,9 +2518,7 @@ check_document_dates (const curlhelp_write_curlbuf *header_buf, char (*msg)[DEFA | |||
| 2465 | int | 2518 | int |
| 2466 | get_content_length (const curlhelp_write_curlbuf* header_buf, const curlhelp_write_curlbuf* body_buf) | 2519 | get_content_length (const curlhelp_write_curlbuf* header_buf, const curlhelp_write_curlbuf* body_buf) |
| 2467 | { | 2520 | { |
| 2468 | const char *s; | 2521 | size_t content_length = 0; |
| 2469 | int content_length = 0; | ||
| 2470 | char *copy; | ||
| 2471 | struct phr_header headers[255]; | 2522 | struct phr_header headers[255]; |
| 2472 | size_t nof_headers = 255; | 2523 | size_t nof_headers = 255; |
| 2473 | size_t msglen; | 2524 | size_t msglen; |
| @@ -2478,6 +2529,10 @@ get_content_length (const curlhelp_write_curlbuf* header_buf, const curlhelp_wri | |||
| 2478 | &status_line.http_major, &status_line.http_minor, &status_line.http_code, &status_line.msg, &msglen, | 2529 | &status_line.http_major, &status_line.http_minor, &status_line.http_code, &status_line.msg, &msglen, |
| 2479 | headers, &nof_headers, 0); | 2530 | headers, &nof_headers, 0); |
| 2480 | 2531 | ||
| 2532 | if (res == -1) { | ||
| 2533 | die (STATE_UNKNOWN, _("HTTP UNKNOWN - Failed to parse Response\n")); | ||
| 2534 | } | ||
| 2535 | |||
| 2481 | content_length_s = get_header_value (headers, nof_headers, "content-length"); | 2536 | content_length_s = get_header_value (headers, nof_headers, "content-length"); |
| 2482 | if (!content_length_s) { | 2537 | if (!content_length_s) { |
| 2483 | return header_buf->buflen + body_buf->buflen; | 2538 | return header_buf->buflen + body_buf->buflen; |
diff --git a/plugins/check_dbi.c b/plugins/check_dbi.c index c24ca248..29c85206 100644 --- a/plugins/check_dbi.c +++ b/plugins/check_dbi.c | |||
| @@ -141,7 +141,7 @@ main (int argc, char **argv) | |||
| 141 | if (verbose > 2) | 141 | if (verbose > 2) |
| 142 | printf ("Initializing DBI\n"); | 142 | printf ("Initializing DBI\n"); |
| 143 | 143 | ||
| 144 | dbi_inst *instance_p; | 144 | dbi_inst *instance_p = { 0 }; |
| 145 | 145 | ||
| 146 | if (dbi_initialize_r(NULL, instance_p) < 0) { | 146 | if (dbi_initialize_r(NULL, instance_p) < 0) { |
| 147 | printf ("UNKNOWN - failed to initialize DBI; possibly you don't have any drivers installed.\n"); | 147 | printf ("UNKNOWN - failed to initialize DBI; possibly you don't have any drivers installed.\n"); |
diff --git a/plugins/check_dig.c b/plugins/check_dig.c index 5d85ae26..be7a6101 100644 --- a/plugins/check_dig.c +++ b/plugins/check_dig.c | |||
| @@ -56,7 +56,7 @@ char *expected_address = NULL; | |||
| 56 | char *dns_server = NULL; | 56 | char *dns_server = NULL; |
| 57 | char *dig_args = ""; | 57 | char *dig_args = ""; |
| 58 | char *query_transport = ""; | 58 | char *query_transport = ""; |
| 59 | int verbose = FALSE; | 59 | bool verbose = false; |
| 60 | int server_port = DEFAULT_PORT; | 60 | int server_port = DEFAULT_PORT; |
| 61 | int number_tries = DEFAULT_TRIES; | 61 | int number_tries = DEFAULT_TRIES; |
| 62 | double warning_interval = UNDEFINED; | 62 | double warning_interval = UNDEFINED; |
| @@ -176,11 +176,11 @@ main (int argc, char **argv) | |||
| 176 | state_text (result), elapsed_time, | 176 | state_text (result), elapsed_time, |
| 177 | msg ? msg : _("Probably a non-existent host/domain"), | 177 | msg ? msg : _("Probably a non-existent host/domain"), |
| 178 | fperfdata("time", elapsed_time, "s", | 178 | fperfdata("time", elapsed_time, "s", |
| 179 | (warning_interval>UNDEFINED?TRUE:FALSE), | 179 | (warning_interval>UNDEFINED ? true:false), |
| 180 | warning_interval, | 180 | warning_interval, |
| 181 | (critical_interval>UNDEFINED?TRUE:FALSE), | 181 | (critical_interval>UNDEFINED ? true:false), |
| 182 | critical_interval, | 182 | critical_interval, |
| 183 | TRUE, 0, FALSE, 0)); | 183 | true, 0, false, 0)); |
| 184 | return result; | 184 | return result; |
| 185 | } | 185 | } |
| 186 | 186 | ||
| @@ -270,7 +270,7 @@ process_arguments (int argc, char **argv) | |||
| 270 | dig_args = strdup(optarg); | 270 | dig_args = strdup(optarg); |
| 271 | break; | 271 | break; |
| 272 | case 'v': /* verbose */ | 272 | case 'v': /* verbose */ |
| 273 | verbose = TRUE; | 273 | verbose = true; |
| 274 | break; | 274 | break; |
| 275 | case 'T': | 275 | case 'T': |
| 276 | record_type = optarg; | 276 | record_type = optarg; |
diff --git a/plugins/check_disk.c b/plugins/check_disk.c index 05e55022..b3dd301c 100644 --- a/plugins/check_disk.c +++ b/plugins/check_disk.c | |||
| @@ -46,7 +46,7 @@ const char *email = "devel@monitoring-plugins.org"; | |||
| 46 | #include <stdarg.h> | 46 | #include <stdarg.h> |
| 47 | #include "fsusage.h" | 47 | #include "fsusage.h" |
| 48 | #include "mountlist.h" | 48 | #include "mountlist.h" |
| 49 | #include "intprops.h" /* necessary for TYPE_MAXIMUM */ | 49 | #include <float.h> |
| 50 | #if HAVE_LIMITS_H | 50 | #if HAVE_LIMITS_H |
| 51 | # include <limits.h> | 51 | # include <limits.h> |
| 52 | #endif | 52 | #endif |
| @@ -93,11 +93,11 @@ static int stat_remote_fs = 0; | |||
| 93 | 93 | ||
| 94 | /* Linked list of filesystem types to omit. | 94 | /* Linked list of filesystem types to omit. |
| 95 | If the list is empty, don't exclude any types. */ | 95 | If the list is empty, don't exclude any types. */ |
| 96 | static struct name_list *fs_exclude_list; | 96 | static struct regex_list *fs_exclude_list = NULL; |
| 97 | 97 | ||
| 98 | /* Linked list of filesystem types to check. | 98 | /* Linked list of filesystem types to check. |
| 99 | If the list is empty, include all types. */ | 99 | If the list is empty, include all types. */ |
| 100 | static struct name_list *fs_include_list; | 100 | static struct regex_list *fs_include_list; |
| 101 | 101 | ||
| 102 | static struct name_list *dp_exclude_list; | 102 | static struct name_list *dp_exclude_list; |
| 103 | 103 | ||
| @@ -112,52 +112,48 @@ enum | |||
| 112 | { | 112 | { |
| 113 | SYNC_OPTION = CHAR_MAX + 1, | 113 | SYNC_OPTION = CHAR_MAX + 1, |
| 114 | NO_SYNC_OPTION, | 114 | NO_SYNC_OPTION, |
| 115 | BLOCK_SIZE_OPTION, | 115 | BLOCK_SIZE_OPTION |
| 116 | IGNORE_MISSING | ||
| 117 | }; | 116 | }; |
| 118 | 117 | ||
| 119 | #ifdef _AIX | 118 | #ifdef _AIX |
| 120 | #pragma alloca | 119 | #pragma alloca |
| 121 | #endif | 120 | #endif |
| 122 | 121 | ||
| 123 | int process_arguments (int, char **); | 122 | static int process_arguments (int, char **); |
| 124 | void print_path (const char *mypath); | 123 | static void set_all_thresholds (struct parameter_list *path); |
| 125 | void set_all_thresholds (struct parameter_list *path); | 124 | static void print_help (void); |
| 126 | int validate_arguments (uintmax_t, uintmax_t, double, double, double, double, char *); | ||
| 127 | void print_help (void); | ||
| 128 | void print_usage (void); | 125 | void print_usage (void); |
| 129 | double calculate_percent(uintmax_t, uintmax_t); | 126 | static double calculate_percent(uintmax_t, uintmax_t); |
| 130 | bool stat_path (struct parameter_list *p); | 127 | static bool stat_path (struct parameter_list *p); |
| 131 | void get_stats (struct parameter_list *p, struct fs_usage *fsp); | 128 | static void get_stats (struct parameter_list *p, struct fs_usage *fsp); |
| 132 | void get_path_stats (struct parameter_list *p, struct fs_usage *fsp); | 129 | static void get_path_stats (struct parameter_list *p, struct fs_usage *fsp); |
| 133 | 130 | ||
| 134 | char *exclude_device; | 131 | static char *units; |
| 135 | char *units; | 132 | static uintmax_t mult = 1024 * 1024; |
| 136 | uintmax_t mult = 1024 * 1024; | 133 | static int verbose = 0; |
| 137 | int verbose = 0; | 134 | static bool erronly = false; |
| 138 | int erronly = FALSE; | 135 | static bool display_mntp = false; |
| 139 | int display_mntp = FALSE; | 136 | static bool exact_match = false; |
| 140 | int exact_match = FALSE; | 137 | static bool ignore_missing = false; |
| 141 | bool ignore_missing = false; | 138 | static bool freespace_ignore_reserved = false; |
| 142 | int freespace_ignore_reserved = FALSE; | 139 | static bool display_inodes_perfdata = false; |
| 143 | int display_inodes_perfdata = FALSE; | 140 | static char *warn_freespace_units = NULL; |
| 144 | char *warn_freespace_units = NULL; | 141 | static char *crit_freespace_units = NULL; |
| 145 | char *crit_freespace_units = NULL; | 142 | static char *warn_freespace_percent = NULL; |
| 146 | char *warn_freespace_percent = NULL; | 143 | static char *crit_freespace_percent = NULL; |
| 147 | char *crit_freespace_percent = NULL; | 144 | static char *warn_usedspace_units = NULL; |
| 148 | char *warn_usedspace_units = NULL; | 145 | static char *crit_usedspace_units = NULL; |
| 149 | char *crit_usedspace_units = NULL; | 146 | static char *warn_usedspace_percent = NULL; |
| 150 | char *warn_usedspace_percent = NULL; | 147 | static char *crit_usedspace_percent = NULL; |
| 151 | char *crit_usedspace_percent = NULL; | 148 | static char *warn_usedinodes_percent = NULL; |
| 152 | char *warn_usedinodes_percent = NULL; | 149 | static char *crit_usedinodes_percent = NULL; |
| 153 | char *crit_usedinodes_percent = NULL; | 150 | static char *warn_freeinodes_percent = NULL; |
| 154 | char *warn_freeinodes_percent = NULL; | 151 | static char *crit_freeinodes_percent = NULL; |
| 155 | char *crit_freeinodes_percent = NULL; | 152 | static bool path_selected = false; |
| 156 | int path_selected = FALSE; | 153 | static bool path_ignored = false; |
| 157 | bool path_ignored = false; | 154 | static char *group = NULL; |
| 158 | char *group = NULL; | 155 | static struct stat *stat_buf; |
| 159 | struct stat *stat_buf; | 156 | static struct name_list *seen = NULL; |
| 160 | struct name_list *seen = NULL; | ||
| 161 | 157 | ||
| 162 | 158 | ||
| 163 | int | 159 | int |
| @@ -205,7 +201,7 @@ main (int argc, char **argv) | |||
| 205 | /* If a list of paths has not been selected, find entire | 201 | /* If a list of paths has not been selected, find entire |
| 206 | mount list and create list of paths | 202 | mount list and create list of paths |
| 207 | */ | 203 | */ |
| 208 | if (path_selected == FALSE && path_ignored == false) { | 204 | if (path_selected == false && path_ignored == false) { |
| 209 | for (me = mount_list; me; me = me->me_next) { | 205 | for (me = mount_list; me; me = me->me_next) { |
| 210 | if (! (path = np_find_parameter(path_select_list, me->me_mountdir))) { | 206 | if (! (path = np_find_parameter(path_select_list, me->me_mountdir))) { |
| 211 | path = np_add_parameter(&path_select_list, me->me_mountdir); | 207 | path = np_add_parameter(&path_select_list, me->me_mountdir); |
| @@ -300,7 +296,7 @@ main (int argc, char **argv) | |||
| 300 | } else if (me->me_dummy && !show_all_fs) { | 296 | } else if (me->me_dummy && !show_all_fs) { |
| 301 | continue; | 297 | continue; |
| 302 | /* Skip excluded fstypes */ | 298 | /* Skip excluded fstypes */ |
| 303 | } else if (fs_exclude_list && np_find_name (fs_exclude_list, me->me_type)) { | 299 | } else if (fs_exclude_list && np_find_regmatch (fs_exclude_list, me->me_type)) { |
| 304 | continue; | 300 | continue; |
| 305 | /* Skip excluded fs's */ | 301 | /* Skip excluded fs's */ |
| 306 | } else if (dp_exclude_list && | 302 | } else if (dp_exclude_list && |
| @@ -308,7 +304,7 @@ main (int argc, char **argv) | |||
| 308 | np_find_name (dp_exclude_list, me->me_mountdir))) { | 304 | np_find_name (dp_exclude_list, me->me_mountdir))) { |
| 309 | continue; | 305 | continue; |
| 310 | /* Skip not included fstypes */ | 306 | /* Skip not included fstypes */ |
| 311 | } else if (fs_include_list && !np_find_name (fs_include_list, me->me_type)) { | 307 | } else if (fs_include_list && !np_find_regmatch(fs_include_list, me->me_type)) { |
| 312 | continue; | 308 | continue; |
| 313 | } | 309 | } |
| 314 | } | 310 | } |
| @@ -326,7 +322,7 @@ main (int argc, char **argv) | |||
| 326 | get_stats (path, &fsp); | 322 | get_stats (path, &fsp); |
| 327 | 323 | ||
| 328 | if (verbose >= 3) { | 324 | if (verbose >= 3) { |
| 329 | 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", | 325 | printf ("For %s, used_pct=%f free_pct=%f used_units=%lu free_units=%lu total_units=%lu used_inodes_pct=%f free_inodes_pct=%f fsp.fsu_blocksize=%lu mult=%lu\n", |
| 330 | me->me_mountdir, | 326 | me->me_mountdir, |
| 331 | path->dused_pct, | 327 | path->dused_pct, |
| 332 | path->dfree_pct, | 328 | path->dfree_pct, |
| @@ -396,10 +392,10 @@ main (int argc, char **argv) | |||
| 396 | perfdata_uint64 ( | 392 | perfdata_uint64 ( |
| 397 | (!strcmp(me->me_mountdir, "none") || display_mntp) ? me->me_devname : me->me_mountdir, | 393 | (!strcmp(me->me_mountdir, "none") || display_mntp) ? me->me_devname : me->me_mountdir, |
| 398 | path->dused_units * mult, "B", | 394 | path->dused_units * mult, "B", |
| 399 | (warning_high_tide == UINT64_MAX ? FALSE : TRUE), warning_high_tide, | 395 | (warning_high_tide == UINT64_MAX ? false : true), warning_high_tide, |
| 400 | (critical_high_tide == UINT64_MAX ? FALSE : TRUE), critical_high_tide, | 396 | (critical_high_tide == UINT64_MAX ? false : true), critical_high_tide, |
| 401 | TRUE, 0, | 397 | true, 0, |
| 402 | TRUE, path->dtotal_units * mult)); | 398 | true, path->dtotal_units * mult)); |
| 403 | 399 | ||
| 404 | if (display_inodes_perfdata) { | 400 | if (display_inodes_perfdata) { |
| 405 | /* *_high_tide must be reinitialized at each run */ | 401 | /* *_high_tide must be reinitialized at each run */ |
| @@ -418,10 +414,10 @@ main (int argc, char **argv) | |||
| 418 | xasprintf (&perf, "%s %s", perf, | 414 | xasprintf (&perf, "%s %s", perf, |
| 419 | perfdata_uint64 (perf_ilabel, | 415 | perfdata_uint64 (perf_ilabel, |
| 420 | path->inodes_used, "", | 416 | path->inodes_used, "", |
| 421 | (warning_high_tide != UINT64_MAX ? TRUE : FALSE), warning_high_tide, | 417 | (warning_high_tide != UINT64_MAX ? true : false), warning_high_tide, |
| 422 | (critical_high_tide != UINT64_MAX ? TRUE : FALSE), critical_high_tide, | 418 | (critical_high_tide != UINT64_MAX ? true : false), critical_high_tide, |
| 423 | TRUE, 0, | 419 | true, 0, |
| 424 | TRUE, path->inodes_total)); | 420 | true, path->inodes_total)); |
| 425 | } | 421 | } |
| 426 | 422 | ||
| 427 | if (disk_result==STATE_OK && erronly && !verbose) | 423 | if (disk_result==STATE_OK && erronly && !verbose) |
| @@ -432,7 +428,7 @@ main (int argc, char **argv) | |||
| 432 | } else { | 428 | } else { |
| 433 | xasprintf(&flag_header, ""); | 429 | xasprintf(&flag_header, ""); |
| 434 | } | 430 | } |
| 435 | xasprintf (&output, "%s%s %s %llu%s (%.0f%%", | 431 | xasprintf (&output, "%s%s %s %llu%s (%.1f%%", |
| 436 | output, flag_header, | 432 | output, flag_header, |
| 437 | (!strcmp(me->me_mountdir, "none") || display_mntp) ? me->me_devname : me->me_mountdir, | 433 | (!strcmp(me->me_mountdir, "none") || display_mntp) ? me->me_devname : me->me_mountdir, |
| 438 | path->dfree_units, | 434 | path->dfree_units, |
| @@ -452,7 +448,7 @@ main (int argc, char **argv) | |||
| 452 | 448 | ||
| 453 | if (strcmp(output, "") == 0 && ! erronly) { | 449 | if (strcmp(output, "") == 0 && ! erronly) { |
| 454 | preamble = ""; | 450 | preamble = ""; |
| 455 | xasprintf (&output, " - No disks were found for provided parameters;"); | 451 | xasprintf (&output, " - No disks were found for provided parameters"); |
| 456 | } | 452 | } |
| 457 | 453 | ||
| 458 | printf ("DISK %s%s%s%s%s|%s\n", state_text (result), ((erronly && result==STATE_OK)) ? "" : preamble, output, (strcmp(ignored, "") == 0) ? "" : ignored_preamble, ignored, perf); | 454 | printf ("DISK %s%s%s%s%s|%s\n", state_text (result), ((erronly && result==STATE_OK)) ? "" : preamble, output, (strcmp(ignored, "") == 0) ? "" : ignored_preamble, ignored, perf); |
| @@ -462,24 +458,8 @@ main (int argc, char **argv) | |||
| 462 | 458 | ||
| 463 | double calculate_percent(uintmax_t value, uintmax_t total) { | 459 | double calculate_percent(uintmax_t value, uintmax_t total) { |
| 464 | double pct = -1; | 460 | double pct = -1; |
| 465 | /* I don't understand the below, but it is taken from coreutils' df */ | 461 | if(value <= DBL_MAX && total != 0) { |
| 466 | /* Seems to be calculating pct, in the best possible way */ | 462 | pct = (double)value / total * 100.0; |
| 467 | if (value <= TYPE_MAXIMUM(uintmax_t) / 100 | ||
| 468 | && total != 0) { | ||
| 469 | uintmax_t u100 = value * 100; | ||
| 470 | pct = u100 / total + (u100 % total != 0); | ||
| 471 | } else { | ||
| 472 | /* Possible rounding errors - see coreutils' df for more explanation */ | ||
| 473 | double u = value; | ||
| 474 | double t = total; | ||
| 475 | if (t) { | ||
| 476 | long int lipct = pct = u * 100 / t; | ||
| 477 | double ipct = lipct; | ||
| 478 | |||
| 479 | /* Like 'pct = ceil (dpct);', but without ceil - from coreutils again */ | ||
| 480 | if (ipct - 1 < pct && pct <= ipct + 1) | ||
| 481 | pct = ipct + (ipct < pct); | ||
| 482 | } | ||
| 483 | } | 463 | } |
| 484 | return pct; | 464 | return pct; |
| 485 | } | 465 | } |
| @@ -524,7 +504,7 @@ process_arguments (int argc, char **argv) | |||
| 524 | {"ignore-ereg-partition", required_argument, 0, 'i'}, | 504 | {"ignore-ereg-partition", required_argument, 0, 'i'}, |
| 525 | {"ignore-eregi-path", required_argument, 0, 'I'}, | 505 | {"ignore-eregi-path", required_argument, 0, 'I'}, |
| 526 | {"ignore-eregi-partition", required_argument, 0, 'I'}, | 506 | {"ignore-eregi-partition", required_argument, 0, 'I'}, |
| 527 | {"ignore-missing", no_argument, 0, IGNORE_MISSING}, | 507 | {"ignore-missing", no_argument, 0, 'n'}, |
| 528 | {"local", no_argument, 0, 'l'}, | 508 | {"local", no_argument, 0, 'l'}, |
| 529 | {"stat-remote-fs", no_argument, 0, 'L'}, | 509 | {"stat-remote-fs", no_argument, 0, 'L'}, |
| 530 | {"iperfdata", no_argument, 0, 'P'}, | 510 | {"iperfdata", no_argument, 0, 'P'}, |
| @@ -543,14 +523,14 @@ process_arguments (int argc, char **argv) | |||
| 543 | if (argc < 2) | 523 | if (argc < 2) |
| 544 | return ERROR; | 524 | return ERROR; |
| 545 | 525 | ||
| 546 | np_add_name(&fs_exclude_list, "iso9660"); | 526 | np_add_regex(&fs_exclude_list, "iso9660", REG_EXTENDED); |
| 547 | 527 | ||
| 548 | for (c = 1; c < argc; c++) | 528 | for (c = 1; c < argc; c++) |
| 549 | if (strcmp ("-to", argv[c]) == 0) | 529 | if (strcmp ("-to", argv[c]) == 0) |
| 550 | strcpy (argv[c], "-t"); | 530 | strcpy (argv[c], "-t"); |
| 551 | 531 | ||
| 552 | while (1) { | 532 | while (1) { |
| 553 | c = getopt_long (argc, argv, "+?VqhvefCt:c:w:K:W:u:p:x:X:N:mklLPg:R:r:i:I:MEA", longopts, &option); | 533 | c = getopt_long (argc, argv, "+?VqhvefCt:c:w:K:W:u:p:x:X:N:mklLPg:R:r:i:I:MEAn", longopts, &option); |
| 554 | 534 | ||
| 555 | if (c == -1 || c == EOF) | 535 | if (c == -1 || c == EOF) |
| 556 | break; | 536 | break; |
| @@ -567,6 +547,10 @@ process_arguments (int argc, char **argv) | |||
| 567 | 547 | ||
| 568 | /* See comments for 'c' */ | 548 | /* See comments for 'c' */ |
| 569 | case 'w': /* warning threshold */ | 549 | case 'w': /* warning threshold */ |
| 550 | if (!is_percentage_expression(optarg) && !is_numeric(optarg)) { | ||
| 551 | die(STATE_UNKNOWN, "Argument for --warning invalid or missing: %s\n", optarg); | ||
| 552 | } | ||
| 553 | |||
| 570 | if (strstr(optarg, "%")) { | 554 | if (strstr(optarg, "%")) { |
| 571 | if (*optarg == '@') { | 555 | if (*optarg == '@') { |
| 572 | warn_freespace_percent = optarg; | 556 | warn_freespace_percent = optarg; |
| @@ -588,6 +572,10 @@ process_arguments (int argc, char **argv) | |||
| 588 | force @ at the beginning of the range, so that it is backwards compatible | 572 | force @ at the beginning of the range, so that it is backwards compatible |
| 589 | */ | 573 | */ |
| 590 | case 'c': /* critical threshold */ | 574 | case 'c': /* critical threshold */ |
| 575 | if (!is_percentage_expression(optarg) && !is_numeric(optarg)) { | ||
| 576 | die(STATE_UNKNOWN, "Argument for --critical invalid or missing: %s\n", optarg); | ||
| 577 | } | ||
| 578 | |||
| 591 | if (strstr(optarg, "%")) { | 579 | if (strstr(optarg, "%")) { |
| 592 | if (*optarg == '@') { | 580 | if (*optarg == '@') { |
| 593 | crit_freespace_percent = optarg; | 581 | crit_freespace_percent = optarg; |
| @@ -710,34 +698,42 @@ process_arguments (int argc, char **argv) | |||
| 710 | mount_list = read_file_system_list (0); | 698 | mount_list = read_file_system_list (0); |
| 711 | np_set_best_match(se, mount_list, exact_match); | 699 | np_set_best_match(se, mount_list, exact_match); |
| 712 | 700 | ||
| 713 | path_selected = TRUE; | 701 | path_selected = true; |
| 714 | break; | 702 | break; |
| 715 | case 'x': /* exclude path or partition */ | 703 | case 'x': /* exclude path or partition */ |
| 716 | np_add_name(&dp_exclude_list, optarg); | 704 | np_add_name(&dp_exclude_list, optarg); |
| 717 | break; | 705 | break; |
| 718 | case 'X': /* exclude file system type */ | 706 | case 'X': /* exclude file system type */ |
| 719 | np_add_name(&fs_exclude_list, optarg); | 707 | err = np_add_regex(&fs_exclude_list, optarg, REG_EXTENDED); |
| 708 | if (err != 0) { | ||
| 709 | regerror (err, &fs_exclude_list->regex, errbuf, MAX_INPUT_BUFFER); | ||
| 710 | die (STATE_UNKNOWN, "DISK %s: %s - %s\n",_("UNKNOWN"), _("Could not compile regular expression"), errbuf); | ||
| 711 | } | ||
| 720 | break; | 712 | break; |
| 721 | case 'N': /* include file system type */ | 713 | case 'N': /* include file system type */ |
| 722 | np_add_name(&fs_include_list, optarg); | 714 | err = np_add_regex(&fs_include_list, optarg, REG_EXTENDED); |
| 715 | if (err != 0) { | ||
| 716 | regerror (err, &fs_exclude_list->regex, errbuf, MAX_INPUT_BUFFER); | ||
| 717 | die (STATE_UNKNOWN, "DISK %s: %s - %s\n",_("UNKNOWN"), _("Could not compile regular expression"), errbuf); | ||
| 718 | } | ||
| 723 | break; | 719 | break; |
| 724 | case 'v': /* verbose */ | 720 | case 'v': /* verbose */ |
| 725 | verbose++; | 721 | verbose++; |
| 726 | break; | 722 | break; |
| 727 | case 'q': /* TODO: this function should eventually go away (removed 2007-09-20) */ | 723 | case 'q': /* TODO: this function should eventually go away (removed 2007-09-20) */ |
| 728 | /* verbose--; **replaced by line below**. -q was only a broken way of implementing -e */ | 724 | /* verbose--; **replaced by line below**. -q was only a broken way of implementing -e */ |
| 729 | erronly = TRUE; | 725 | erronly = true; |
| 730 | break; | 726 | break; |
| 731 | case 'e': | 727 | case 'e': |
| 732 | erronly = TRUE; | 728 | erronly = true; |
| 733 | break; | 729 | break; |
| 734 | case 'E': | 730 | case 'E': |
| 735 | if (path_selected) | 731 | if (path_selected) |
| 736 | die (STATE_UNKNOWN, "DISK %s: %s", _("UNKNOWN"), _("Must set -E before selecting paths\n")); | 732 | die (STATE_UNKNOWN, "DISK %s: %s", _("UNKNOWN"), _("Must set -E before selecting paths\n")); |
| 737 | exact_match = TRUE; | 733 | exact_match = true; |
| 738 | break; | 734 | break; |
| 739 | case 'f': | 735 | case 'f': |
| 740 | freespace_ignore_reserved = TRUE; | 736 | freespace_ignore_reserved = true; |
| 741 | break; | 737 | break; |
| 742 | case 'g': | 738 | case 'g': |
| 743 | if (path_selected) | 739 | if (path_selected) |
| @@ -784,7 +780,7 @@ process_arguments (int argc, char **argv) | |||
| 784 | cflags = default_cflags; | 780 | cflags = default_cflags; |
| 785 | break; | 781 | break; |
| 786 | 782 | ||
| 787 | case IGNORE_MISSING: | 783 | case 'n': |
| 788 | ignore_missing = true; | 784 | ignore_missing = true; |
| 789 | break; | 785 | break; |
| 790 | case 'A': | 786 | case 'A': |
| @@ -798,7 +794,7 @@ process_arguments (int argc, char **argv) | |||
| 798 | crit_freespace_percent || warn_usedspace_units || crit_usedspace_units || | 794 | crit_freespace_percent || warn_usedspace_units || crit_usedspace_units || |
| 799 | warn_usedspace_percent || crit_usedspace_percent || warn_usedinodes_percent || | 795 | warn_usedspace_percent || crit_usedspace_percent || warn_usedinodes_percent || |
| 800 | crit_usedinodes_percent || warn_freeinodes_percent || crit_freeinodes_percent )) { | 796 | crit_usedinodes_percent || warn_freeinodes_percent || crit_freeinodes_percent )) { |
| 801 | die (STATE_UNKNOWN, "DISK %s: %s", _("UNKNOWN"), _("Must set a threshold value before using -r/-R\n")); | 797 | die (STATE_UNKNOWN, "DISK %s: %s", _("UNKNOWN"), _("Must set a threshold value before using -r/-R/-A (--ereg-path/--eregi-path/--all)\n")); |
| 802 | } | 798 | } |
| 803 | 799 | ||
| 804 | err = regcomp(&re, optarg, cflags); | 800 | err = regcomp(&re, optarg, cflags); |
| @@ -809,7 +805,7 @@ process_arguments (int argc, char **argv) | |||
| 809 | 805 | ||
| 810 | for (me = mount_list; me; me = me->me_next) { | 806 | for (me = mount_list; me; me = me->me_next) { |
| 811 | if (np_regex_match_mount_entry(me, &re)) { | 807 | if (np_regex_match_mount_entry(me, &re)) { |
| 812 | fnd = TRUE; | 808 | fnd = true; |
| 813 | if (verbose >= 3) | 809 | if (verbose >= 3) |
| 814 | printf("%s %s matching expression %s\n", me->me_devname, me->me_mountdir, optarg); | 810 | printf("%s %s matching expression %s\n", me->me_devname, me->me_mountdir, optarg); |
| 815 | 811 | ||
| @@ -824,24 +820,24 @@ process_arguments (int argc, char **argv) | |||
| 824 | 820 | ||
| 825 | if (!fnd && ignore_missing == true) { | 821 | if (!fnd && ignore_missing == true) { |
| 826 | path_ignored = true; | 822 | path_ignored = true; |
| 827 | /* path_selected = TRUE;*/ | 823 | path_selected = true; |
| 828 | break; | 824 | break; |
| 829 | } else if (!fnd) | 825 | } else if (!fnd) |
| 830 | die (STATE_UNKNOWN, "DISK %s: %s - %s\n",_("UNKNOWN"), | 826 | die (STATE_UNKNOWN, "DISK %s: %s - %s\n",_("UNKNOWN"), |
| 831 | _("Regular expression did not match any path or disk"), optarg); | 827 | _("Regular expression did not match any path or disk"), optarg); |
| 832 | 828 | ||
| 833 | fnd = FALSE; | 829 | fnd = false; |
| 834 | path_selected = TRUE; | 830 | path_selected = true; |
| 835 | np_set_best_match(path_select_list, mount_list, exact_match); | 831 | np_set_best_match(path_select_list, mount_list, exact_match); |
| 836 | cflags = default_cflags; | 832 | cflags = default_cflags; |
| 837 | 833 | ||
| 838 | break; | 834 | break; |
| 839 | case 'M': /* display mountpoint */ | 835 | case 'M': /* display mountpoint */ |
| 840 | display_mntp = TRUE; | 836 | display_mntp = true; |
| 841 | break; | 837 | break; |
| 842 | case 'C': | 838 | case 'C': |
| 843 | /* add all mount entries to path_select list if no partitions have been explicitly defined using -p */ | 839 | /* add all mount entries to path_select list if no partitions have been explicitly defined using -p */ |
| 844 | if (path_selected == FALSE) { | 840 | if (path_selected == false) { |
| 845 | struct parameter_list *path; | 841 | struct parameter_list *path; |
| 846 | for (me = mount_list; me; me = me->me_next) { | 842 | for (me = mount_list; me; me = me->me_next) { |
| 847 | if (! (path = np_find_parameter(path_select_list, me->me_mountdir))) | 843 | if (! (path = np_find_parameter(path_select_list, me->me_mountdir))) |
| @@ -864,7 +860,7 @@ process_arguments (int argc, char **argv) | |||
| 864 | warn_freeinodes_percent = NULL; | 860 | warn_freeinodes_percent = NULL; |
| 865 | crit_freeinodes_percent = NULL; | 861 | crit_freeinodes_percent = NULL; |
| 866 | 862 | ||
| 867 | path_selected = FALSE; | 863 | path_selected = false; |
| 868 | group = NULL; | 864 | group = NULL; |
| 869 | break; | 865 | break; |
| 870 | case 'V': /* version */ | 866 | case 'V': /* version */ |
| @@ -888,7 +884,7 @@ process_arguments (int argc, char **argv) | |||
| 888 | 884 | ||
| 889 | if (argc > c) { | 885 | if (argc > c) { |
| 890 | se = np_add_parameter(&path_select_list, strdup(argv[c++])); | 886 | se = np_add_parameter(&path_select_list, strdup(argv[c++])); |
| 891 | path_selected = TRUE; | 887 | path_selected = true; |
| 892 | set_all_thresholds(se); | 888 | set_all_thresholds(se); |
| 893 | } | 889 | } |
| 894 | 890 | ||
| @@ -897,21 +893,9 @@ process_arguments (int argc, char **argv) | |||
| 897 | mult = (uintmax_t)1024 * 1024; | 893 | mult = (uintmax_t)1024 * 1024; |
| 898 | } | 894 | } |
| 899 | 895 | ||
| 900 | return TRUE; | 896 | return true; |
| 901 | } | ||
| 902 | |||
| 903 | |||
| 904 | |||
| 905 | void | ||
| 906 | print_path (const char *mypath) | ||
| 907 | { | ||
| 908 | if (mypath == NULL) | ||
| 909 | printf ("\n"); | ||
| 910 | else | ||
| 911 | printf (_(" for %s\n"), mypath); | ||
| 912 | } | 897 | } |
| 913 | 898 | ||
| 914 | |||
| 915 | void | 899 | void |
| 916 | set_all_thresholds (struct parameter_list *path) | 900 | set_all_thresholds (struct parameter_list *path) |
| 917 | { | 901 | { |
| @@ -996,25 +980,33 @@ print_help (void) | |||
| 996 | printf (" %s\n", _("Regular expression to ignore selected path/partition (case insensitive) (may be repeated)")); | 980 | printf (" %s\n", _("Regular expression to ignore selected path/partition (case insensitive) (may be repeated)")); |
| 997 | printf (" %s\n", "-i, --ignore-ereg-path=PATH, --ignore-ereg-partition=PARTITION"); | 981 | printf (" %s\n", "-i, --ignore-ereg-path=PATH, --ignore-ereg-partition=PARTITION"); |
| 998 | printf (" %s\n", _("Regular expression to ignore selected path or partition (may be repeated)")); | 982 | printf (" %s\n", _("Regular expression to ignore selected path or partition (may be repeated)")); |
| 999 | printf (" %s\n", "--ignore-missing"); | 983 | printf (" %s\n", "-n, --ignore-missing"); |
| 1000 | printf (" %s\n", _("Return OK if no filesystem matches, filesystem does not exist or is inaccessible.")); | 984 | printf (" %s\n", _("Return OK if no filesystem matches, filesystem does not exist or is inaccessible.")); |
| 1001 | printf (" %s\n", _("(Provide this option before -p / -r / --ereg-path if used)")); | 985 | printf (" %s\n", _("(Provide this option before -p / -r / --ereg-path if used)")); |
| 1002 | printf (UT_PLUG_TIMEOUT, DEFAULT_SOCKET_TIMEOUT); | 986 | printf (UT_PLUG_TIMEOUT, DEFAULT_SOCKET_TIMEOUT); |
| 1003 | printf (" %s\n", "-u, --units=STRING"); | 987 | printf (" %s\n", "-u, --units=STRING"); |
| 1004 | printf (" %s\n", _("Choose bytes, kB, MB, GB, TB (default: MB)")); | 988 | printf (" %s\n", _("Choose bytes, kB, MB, GB, TB (default: MB)")); |
| 1005 | printf (UT_VERBOSE); | 989 | printf (UT_VERBOSE); |
| 1006 | printf (" %s\n", "-X, --exclude-type=TYPE"); | 990 | printf (" %s\n", "-X, --exclude-type=TYPE_REGEX"); |
| 1007 | printf (" %s\n", _("Ignore all filesystems of indicated type (may be repeated)")); | 991 | printf (" %s\n", _("Ignore all filesystems of types matching given regex(7) (may be repeated)")); |
| 1008 | printf (" %s\n", "-N, --include-type=TYPE"); | 992 | printf (" %s\n", "-N, --include-type=TYPE_REGEX"); |
| 1009 | printf (" %s\n", _("Check only filesystems of indicated type (may be repeated)")); | 993 | printf (" %s\n", _("Check only filesystems where the type matches this given regex(7) (may be repeated)")); |
| 994 | |||
| 995 | printf ("\n"); | ||
| 996 | printf ("%s\n", _("General usage hints:")); | ||
| 997 | printf (" %s\n", _("- Arguments are positional! \"-w 5 -c 1 -p /foo -w6 -c2 -p /bar\" is not the same as")); | ||
| 998 | printf (" %s\n", _("\"-w 5 -c 1 -p /bar w6 -c2 -p /foo\".")); | ||
| 999 | printf (" %s\n", _("- The syntax is broadly: \"{thresholds a} {paths a} -C {thresholds b} {thresholds b} ...\"")); | ||
| 1000 | |||
| 1001 | |||
| 1010 | 1002 | ||
| 1011 | printf ("\n"); | 1003 | printf ("\n"); |
| 1012 | printf ("%s\n", _("Examples:")); | 1004 | printf ("%s\n", _("Examples:")); |
| 1013 | printf (" %s\n", "check_disk -w 10% -c 5% -p /tmp -p /var -C -w 100000 -c 50000 -p /"); | 1005 | printf (" %s\n", "check_disk -w 10% -c 5% -p /tmp -p /var -C -w 100000 -c 50000 -p /"); |
| 1014 | printf (" %s\n", _("Checks /tmp and /var at 10% and 5%, and / at 100MB and 50MB")); | 1006 | printf (" %s\n\n", _("Checks /tmp and /var at 10% and 5%, and / at 100MB and 50MB")); |
| 1015 | printf (" %s\n", "check_disk -w 100 -c 50 -C -w 1000 -c 500 -g sidDATA -r '^/oracle/SID/data.*$'"); | 1007 | printf (" %s\n", "check_disk -w 100 -c 50 -C -w 1000 -c 500 -g sidDATA -r '^/oracle/SID/data.*$'"); |
| 1016 | printf (" %s\n", _("Checks all filesystems not matching -r at 100M and 50M. The fs matching the -r regex")); | 1008 | printf (" %s\n", _("Checks all filesystems not matching -r at 100M and 50M. The fs matching the -r regex")); |
| 1017 | printf (" %s\n", _("are grouped which means the freespace thresholds are applied to all disks together")); | 1009 | printf (" %s\n\n", _("are grouped which means the freespace thresholds are applied to all disks together")); |
| 1018 | printf (" %s\n", "check_disk -w 100 -c 50 -C -w 1000 -c 500 -p /foo -C -w 5% -c 3% -p /bar"); | 1010 | printf (" %s\n", "check_disk -w 100 -c 50 -C -w 1000 -c 500 -p /foo -C -w 5% -c 3% -p /bar"); |
| 1019 | printf (" %s\n", _("Checks /foo for 1000M/500M and /bar for 5/3%. All remaining volumes use 100M/50M")); | 1011 | printf (" %s\n", _("Checks /foo for 1000M/500M and /bar for 5/3%. All remaining volumes use 100M/50M")); |
| 1020 | 1012 | ||
| @@ -1027,9 +1019,9 @@ void | |||
| 1027 | print_usage (void) | 1019 | print_usage (void) |
| 1028 | { | 1020 | { |
| 1029 | printf ("%s\n", _("Usage:")); | 1021 | printf ("%s\n", _("Usage:")); |
| 1030 | printf (" %s {-w absolute_limit |-w percentage_limit% | -W inode_percentage_limit } {-c absolute_limit|-c percentage_limit% | -K inode_percentage_limit } {-p path | -x device}\n", progname); | 1022 | printf (" %s {-w absolute_limit |-w percentage_limit%% | -W inode_percentage_limit } {-c absolute_limit|-c percentage_limit%% | -K inode_percentage_limit } {-p path | -x device}\n", progname); |
| 1031 | printf ("[-C] [-E] [-e] [-f] [-g group ] [-k] [-l] [-M] [-m] [-R path ] [-r path ]\n"); | 1023 | printf ("[-C] [-E] [-e] [-f] [-g group ] [-k] [-l] [-M] [-m] [-R path ] [-r path ]\n"); |
| 1032 | printf ("[-t timeout] [-u unit] [-v] [-X type] [-N type]\n"); | 1024 | printf ("[-t timeout] [-u unit] [-v] [-X type_regex] [-N type]\n"); |
| 1033 | } | 1025 | } |
| 1034 | 1026 | ||
| 1035 | bool | 1027 | bool |
| @@ -1115,7 +1107,7 @@ get_stats (struct parameter_list *p, struct fs_usage *fsp) { | |||
| 1115 | } | 1107 | } |
| 1116 | /* finally calculate percentages for either plain FS or summed up group */ | 1108 | /* finally calculate percentages for either plain FS or summed up group */ |
| 1117 | p->dused_pct = calculate_percent( p->used, p->used + p->available ); /* used + available can never be > uintmax */ | 1109 | p->dused_pct = calculate_percent( p->used, p->used + p->available ); /* used + available can never be > uintmax */ |
| 1118 | p->dfree_pct = 100 - p->dused_pct; | 1110 | p->dfree_pct = 100.0 - p->dused_pct; |
| 1119 | p->dused_inodes_percent = calculate_percent(p->inodes_total - p->inodes_free, p->inodes_total); | 1111 | p->dused_inodes_percent = calculate_percent(p->inodes_total - p->inodes_free, p->inodes_total); |
| 1120 | p->dfree_inodes_percent = 100 - p->dused_inodes_percent; | 1112 | p->dfree_inodes_percent = 100 - p->dused_inodes_percent; |
| 1121 | 1113 | ||
diff --git a/plugins/check_dns.c b/plugins/check_dns.c index 7ffce98b..468bc958 100644 --- a/plugins/check_dns.c +++ b/plugins/check_dns.c | |||
| @@ -41,8 +41,8 @@ const char *email = "devel@monitoring-plugins.org"; | |||
| 41 | 41 | ||
| 42 | int process_arguments (int, char **); | 42 | int process_arguments (int, char **); |
| 43 | int validate_arguments (void); | 43 | int validate_arguments (void); |
| 44 | int error_scan (char *, int *); | 44 | int error_scan (char *, bool *); |
| 45 | int ip_match_cidr(const char *, const char *); | 45 | bool ip_match_cidr(const char *, const char *); |
| 46 | unsigned long ip2long(const char *); | 46 | unsigned long ip2long(const char *); |
| 47 | void print_help (void); | 47 | void print_help (void); |
| 48 | void print_usage (void); | 48 | void print_usage (void); |
| @@ -51,13 +51,13 @@ void print_usage (void); | |||
| 51 | char query_address[ADDRESS_LENGTH] = ""; | 51 | char query_address[ADDRESS_LENGTH] = ""; |
| 52 | char dns_server[ADDRESS_LENGTH] = ""; | 52 | char dns_server[ADDRESS_LENGTH] = ""; |
| 53 | char ptr_server[ADDRESS_LENGTH] = ""; | 53 | char ptr_server[ADDRESS_LENGTH] = ""; |
| 54 | int verbose = FALSE; | 54 | bool verbose = false; |
| 55 | char **expected_address = NULL; | 55 | char **expected_address = NULL; |
| 56 | int expected_address_cnt = 0; | 56 | int expected_address_cnt = 0; |
| 57 | int expect_nxdomain = FALSE; | 57 | bool expect_nxdomain = false; |
| 58 | 58 | ||
| 59 | int expect_authority = FALSE; | 59 | bool expect_authority = false; |
| 60 | int all_match = FALSE; | 60 | bool all_match = false; |
| 61 | thresholds *time_thresholds = NULL; | 61 | thresholds *time_thresholds = NULL; |
| 62 | 62 | ||
| 63 | static int | 63 | static int |
| @@ -80,15 +80,14 @@ main (int argc, char **argv) | |||
| 80 | int n_addresses = 0; | 80 | int n_addresses = 0; |
| 81 | char *msg = NULL; | 81 | char *msg = NULL; |
| 82 | char *temp_buffer = NULL; | 82 | char *temp_buffer = NULL; |
| 83 | int non_authoritative = FALSE; | 83 | bool non_authoritative = false; |
| 84 | int result = STATE_UNKNOWN; | 84 | int result = STATE_UNKNOWN; |
| 85 | double elapsed_time; | 85 | double elapsed_time; |
| 86 | long microsec; | 86 | long microsec; |
| 87 | struct timeval tv; | 87 | struct timeval tv; |
| 88 | int parse_address = FALSE; /* This flag scans for Address: but only after Name: */ | 88 | bool parse_address = false; /* This flag scans for Address: but only after Name: */ |
| 89 | output chld_out, chld_err; | 89 | output chld_out, chld_err; |
| 90 | size_t i; | 90 | bool is_nxdomain = false; |
| 91 | int is_nxdomain = FALSE; | ||
| 92 | 91 | ||
| 93 | setlocale (LC_ALL, ""); | 92 | setlocale (LC_ALL, ""); |
| 94 | bindtextdomain (PACKAGE, LOCALEDIR); | 93 | bindtextdomain (PACKAGE, LOCALEDIR); |
| @@ -122,7 +121,7 @@ main (int argc, char **argv) | |||
| 122 | } | 121 | } |
| 123 | 122 | ||
| 124 | /* scan stdout */ | 123 | /* scan stdout */ |
| 125 | for(i = 0; i < chld_out.lines; i++) { | 124 | for(size_t i = 0; i < chld_out.lines; i++) { |
| 126 | if (addresses == NULL) | 125 | if (addresses == NULL) |
| 127 | addresses = malloc(sizeof(*addresses)*10); | 126 | addresses = malloc(sizeof(*addresses)*10); |
| 128 | else if (!(n_addresses % 10)) | 127 | else if (!(n_addresses % 10)) |
| @@ -164,8 +163,8 @@ main (int argc, char **argv) | |||
| 164 | 163 | ||
| 165 | /* the server is responding, we just got the host name... */ | 164 | /* the server is responding, we just got the host name... */ |
| 166 | if (strstr (chld_out.line[i], "Name:")) | 165 | if (strstr (chld_out.line[i], "Name:")) |
| 167 | parse_address = TRUE; | 166 | parse_address = true; |
| 168 | else if (parse_address == TRUE && (strstr (chld_out.line[i], "Address:") || | 167 | else if (parse_address && (strstr (chld_out.line[i], "Address:") || |
| 169 | strstr (chld_out.line[i], "Addresses:"))) { | 168 | strstr (chld_out.line[i], "Addresses:"))) { |
| 170 | temp_buffer = index (chld_out.line[i], ':'); | 169 | temp_buffer = index (chld_out.line[i], ':'); |
| 171 | temp_buffer++; | 170 | temp_buffer++; |
| @@ -184,7 +183,7 @@ main (int argc, char **argv) | |||
| 184 | addresses[n_addresses++] = strdup(temp_buffer); | 183 | addresses[n_addresses++] = strdup(temp_buffer); |
| 185 | } | 184 | } |
| 186 | else if (strstr (chld_out.line[i], _("Non-authoritative answer:"))) { | 185 | else if (strstr (chld_out.line[i], _("Non-authoritative answer:"))) { |
| 187 | non_authoritative = TRUE; | 186 | non_authoritative = true; |
| 188 | } | 187 | } |
| 189 | 188 | ||
| 190 | 189 | ||
| @@ -197,7 +196,7 @@ main (int argc, char **argv) | |||
| 197 | } | 196 | } |
| 198 | 197 | ||
| 199 | /* scan stderr */ | 198 | /* scan stderr */ |
| 200 | for(i = 0; i < chld_err.lines; i++) { | 199 | for(size_t i = 0; i < chld_err.lines; i++) { |
| 201 | if (verbose) | 200 | if (verbose) |
| 202 | puts(chld_err.line[i]); | 201 | puts(chld_err.line[i]); |
| 203 | 202 | ||
| @@ -241,7 +240,7 @@ main (int argc, char **argv) | |||
| 241 | unsigned long expect_match = (1 << expected_address_cnt) - 1; | 240 | unsigned long expect_match = (1 << expected_address_cnt) - 1; |
| 242 | unsigned long addr_match = (1 << n_addresses) - 1; | 241 | unsigned long addr_match = (1 << n_addresses) - 1; |
| 243 | 242 | ||
| 244 | for (i=0; i<expected_address_cnt; i++) { | 243 | for (int i=0; i<expected_address_cnt; i++) { |
| 245 | int j; | 244 | int j; |
| 246 | /* check if we get a match on 'raw' ip or cidr */ | 245 | /* check if we get a match on 'raw' ip or cidr */ |
| 247 | for (j=0; j<n_addresses; j++) { | 246 | for (j=0; j<n_addresses; j++) { |
| @@ -298,21 +297,21 @@ main (int argc, char **argv) | |||
| 298 | printf (_(". %s returns %s"), query_address, address); | 297 | printf (_(". %s returns %s"), query_address, address); |
| 299 | if ((time_thresholds->warning != NULL) && (time_thresholds->critical != NULL)) { | 298 | if ((time_thresholds->warning != NULL) && (time_thresholds->critical != NULL)) { |
| 300 | printf ("|%s\n", fperfdata ("time", elapsed_time, "s", | 299 | printf ("|%s\n", fperfdata ("time", elapsed_time, "s", |
| 301 | TRUE, time_thresholds->warning->end, | 300 | true, time_thresholds->warning->end, |
| 302 | TRUE, time_thresholds->critical->end, | 301 | true, time_thresholds->critical->end, |
| 303 | TRUE, 0, FALSE, 0)); | 302 | true, 0, false, 0)); |
| 304 | } else if ((time_thresholds->warning == NULL) && (time_thresholds->critical != NULL)) { | 303 | } else if ((time_thresholds->warning == NULL) && (time_thresholds->critical != NULL)) { |
| 305 | printf ("|%s\n", fperfdata ("time", elapsed_time, "s", | 304 | printf ("|%s\n", fperfdata ("time", elapsed_time, "s", |
| 306 | FALSE, 0, | 305 | false, 0, |
| 307 | TRUE, time_thresholds->critical->end, | 306 | true, time_thresholds->critical->end, |
| 308 | TRUE, 0, FALSE, 0)); | 307 | true, 0, false, 0)); |
| 309 | } else if ((time_thresholds->warning != NULL) && (time_thresholds->critical == NULL)) { | 308 | } else if ((time_thresholds->warning != NULL) && (time_thresholds->critical == NULL)) { |
| 310 | printf ("|%s\n", fperfdata ("time", elapsed_time, "s", | 309 | printf ("|%s\n", fperfdata ("time", elapsed_time, "s", |
| 311 | TRUE, time_thresholds->warning->end, | 310 | true, time_thresholds->warning->end, |
| 312 | FALSE, 0, | 311 | false, 0, |
| 313 | TRUE, 0, FALSE, 0)); | 312 | true, 0, false, 0)); |
| 314 | } else | 313 | } else |
| 315 | printf ("|%s\n", fperfdata ("time", elapsed_time, "s", FALSE, 0, FALSE, 0, TRUE, 0, FALSE, 0)); | 314 | printf ("|%s\n", fperfdata ("time", elapsed_time, "s", false, 0, false, 0, true, 0, false, 0)); |
| 316 | } | 315 | } |
| 317 | else if (result == STATE_WARNING) | 316 | else if (result == STATE_WARNING) |
| 318 | printf (_("DNS WARNING - %s\n"), | 317 | printf (_("DNS WARNING - %s\n"), |
| @@ -327,15 +326,14 @@ main (int argc, char **argv) | |||
| 327 | return result; | 326 | return result; |
| 328 | } | 327 | } |
| 329 | 328 | ||
| 330 | int | 329 | bool ip_match_cidr(const char *addr, const char *cidr_ro) { |
| 331 | ip_match_cidr(const char *addr, const char *cidr_ro) | ||
| 332 | { | ||
| 333 | char *subnet, *mask_c, *cidr = strdup(cidr_ro); | 330 | char *subnet, *mask_c, *cidr = strdup(cidr_ro); |
| 334 | int mask; | 331 | int mask; |
| 335 | subnet = strtok(cidr, "/"); | 332 | subnet = strtok(cidr, "/"); |
| 336 | mask_c = strtok(NULL, "\0"); | 333 | mask_c = strtok(NULL, "\0"); |
| 337 | if (!subnet || !mask_c) | 334 | if (!subnet || !mask_c) { |
| 338 | return FALSE; | 335 | return false; |
| 336 | } | ||
| 339 | mask = atoi(mask_c); | 337 | mask = atoi(mask_c); |
| 340 | 338 | ||
| 341 | /* https://www.cryptobells.com/verifying-ips-in-a-subnet-in-php/ */ | 339 | /* https://www.cryptobells.com/verifying-ips-in-a-subnet-in-php/ */ |
| @@ -355,14 +353,14 @@ ip2long(const char* src) { | |||
| 355 | } | 353 | } |
| 356 | 354 | ||
| 357 | int | 355 | int |
| 358 | error_scan (char *input_buffer, int *is_nxdomain) | 356 | error_scan (char *input_buffer, bool *is_nxdomain) |
| 359 | { | 357 | { |
| 360 | 358 | ||
| 361 | const int nxdomain = strstr (input_buffer, "Non-existent") || | 359 | const int nxdomain = strstr (input_buffer, "Non-existent") || |
| 362 | strstr (input_buffer, "** server can't find") || | 360 | strstr (input_buffer, "** server can't find") || |
| 363 | strstr (input_buffer, "** Can't find") || | 361 | strstr (input_buffer, "** Can't find") || |
| 364 | strstr (input_buffer, "NXDOMAIN"); | 362 | strstr (input_buffer, "NXDOMAIN"); |
| 365 | if (nxdomain) *is_nxdomain = TRUE; | 363 | if (nxdomain) *is_nxdomain = true; |
| 366 | 364 | ||
| 367 | /* the DNS lookup timed out */ | 365 | /* the DNS lookup timed out */ |
| 368 | if (strstr (input_buffer, _("Note: nslookup is deprecated and may be removed from future releases.")) || | 366 | if (strstr (input_buffer, _("Note: nslookup is deprecated and may be removed from future releases.")) || |
| @@ -461,7 +459,7 @@ process_arguments (int argc, char **argv) | |||
| 461 | print_revision (progname, NP_VERSION); | 459 | print_revision (progname, NP_VERSION); |
| 462 | exit (STATE_UNKNOWN); | 460 | exit (STATE_UNKNOWN); |
| 463 | case 'v': /* version */ | 461 | case 'v': /* version */ |
| 464 | verbose = TRUE; | 462 | verbose = true; |
| 465 | break; | 463 | break; |
| 466 | case 't': /* timeout period */ | 464 | case 't': /* timeout period */ |
| 467 | timeout_interval = atoi (optarg); | 465 | timeout_interval = atoi (optarg); |
| @@ -508,13 +506,13 @@ process_arguments (int argc, char **argv) | |||
| 508 | } | 506 | } |
| 509 | break; | 507 | break; |
| 510 | case 'n': /* expect NXDOMAIN */ | 508 | case 'n': /* expect NXDOMAIN */ |
| 511 | expect_nxdomain = TRUE; | 509 | expect_nxdomain = true; |
| 512 | break; | 510 | break; |
| 513 | case 'A': /* expect authority */ | 511 | case 'A': /* expect authority */ |
| 514 | expect_authority = TRUE; | 512 | expect_authority = true; |
| 515 | break; | 513 | break; |
| 516 | case 'L': /* all must match */ | 514 | case 'L': /* all must match */ |
| 517 | all_match = TRUE; | 515 | all_match = true; |
| 518 | break; | 516 | break; |
| 519 | case 'w': | 517 | case 'w': |
| 520 | warning = optarg; | 518 | warning = optarg; |
diff --git a/plugins/check_fping.c b/plugins/check_fping.c index 23a9e990..70d6f9fc 100644 --- a/plugins/check_fping.c +++ b/plugins/check_fping.c | |||
| @@ -59,16 +59,16 @@ int packet_size = PACKET_SIZE; | |||
| 59 | int packet_count = PACKET_COUNT; | 59 | int packet_count = PACKET_COUNT; |
| 60 | int target_timeout = 0; | 60 | int target_timeout = 0; |
| 61 | int packet_interval = 0; | 61 | int packet_interval = 0; |
| 62 | int verbose = FALSE; | 62 | bool verbose = false; |
| 63 | int cpl; | 63 | int cpl; |
| 64 | int wpl; | 64 | int wpl; |
| 65 | double crta; | 65 | double crta; |
| 66 | double wrta; | 66 | double wrta; |
| 67 | int cpl_p = FALSE; | 67 | bool cpl_p = false; |
| 68 | int wpl_p = FALSE; | 68 | bool wpl_p = false; |
| 69 | bool alive_p = FALSE; | 69 | bool alive_p = false; |
| 70 | int crta_p = FALSE; | 70 | bool crta_p = false; |
| 71 | int wrta_p = FALSE; | 71 | bool wrta_p = false; |
| 72 | 72 | ||
| 73 | int | 73 | int |
| 74 | main (int argc, char **argv) | 74 | main (int argc, char **argv) |
| @@ -194,8 +194,8 @@ int textscan (char *buf) { | |||
| 194 | _("FPING %s - %s (rta=%f ms)|%s\n"), | 194 | _("FPING %s - %s (rta=%f ms)|%s\n"), |
| 195 | state_text (STATE_OK), server_name,rta, | 195 | state_text (STATE_OK), server_name,rta, |
| 196 | /* No loss since we only waited for the first reply | 196 | /* No loss since we only waited for the first reply |
| 197 | perfdata ("loss", (long int)loss, "%", wpl_p, wpl, cpl_p, cpl, TRUE, 0, TRUE, 100), */ | 197 | perfdata ("loss", (long int)loss, "%", wpl_p, wpl, cpl_p, cpl, true, 0, true, 100), */ |
| 198 | fperfdata ("rta", rta/1.0e3, "s", wrta_p, wrta/1.0e3, crta_p, crta/1.0e3, TRUE, 0, FALSE, 0)); | 198 | fperfdata ("rta", rta/1.0e3, "s", wrta_p, wrta/1.0e3, crta_p, crta/1.0e3, true, 0, false, 0)); |
| 199 | } | 199 | } |
| 200 | 200 | ||
| 201 | if (strstr (buf, "not found")) { | 201 | if (strstr (buf, "not found")) { |
| @@ -228,21 +228,21 @@ int textscan (char *buf) { | |||
| 228 | rtastr = 1 + index (rtastr, '/'); | 228 | rtastr = 1 + index (rtastr, '/'); |
| 229 | loss = strtod (losstr, NULL); | 229 | loss = strtod (losstr, NULL); |
| 230 | rta = strtod (rtastr, NULL); | 230 | rta = strtod (rtastr, NULL); |
| 231 | if (cpl_p == TRUE && loss > cpl) | 231 | if (cpl_p && loss > cpl) |
| 232 | status = STATE_CRITICAL; | 232 | status = STATE_CRITICAL; |
| 233 | else if (crta_p == TRUE && rta > crta) | 233 | else if (crta_p && rta > crta) |
| 234 | status = STATE_CRITICAL; | 234 | status = STATE_CRITICAL; |
| 235 | else if (wpl_p == TRUE && loss > wpl) | 235 | else if (wpl_p && loss > wpl) |
| 236 | status = STATE_WARNING; | 236 | status = STATE_WARNING; |
| 237 | else if (wrta_p == TRUE && rta > wrta) | 237 | else if (wrta_p && rta > wrta) |
| 238 | status = STATE_WARNING; | 238 | status = STATE_WARNING; |
| 239 | else | 239 | else |
| 240 | status = STATE_OK; | 240 | status = STATE_OK; |
| 241 | die (status, | 241 | die (status, |
| 242 | _("FPING %s - %s (loss=%.0f%%, rta=%f ms)|%s %s\n"), | 242 | _("FPING %s - %s (loss=%.0f%%, rta=%f ms)|%s %s\n"), |
| 243 | state_text (status), server_name, loss, rta, | 243 | state_text (status), server_name, loss, rta, |
| 244 | perfdata ("loss", (long int)loss, "%", wpl_p, wpl, cpl_p, cpl, TRUE, 0, TRUE, 100), | 244 | perfdata ("loss", (long int)loss, "%", wpl_p, wpl, cpl_p, cpl, true, 0, true, 100), |
| 245 | fperfdata ("rta", rta/1.0e3, "s", wrta_p, wrta/1.0e3, crta_p, crta/1.0e3, TRUE, 0, FALSE, 0)); | 245 | fperfdata ("rta", rta/1.0e3, "s", wrta_p, wrta/1.0e3, crta_p, crta/1.0e3, true, 0, false, 0)); |
| 246 | 246 | ||
| 247 | } | 247 | } |
| 248 | else if(strstr (buf, "xmt/rcv/%loss") ) { | 248 | else if(strstr (buf, "xmt/rcv/%loss") ) { |
| @@ -258,16 +258,16 @@ int textscan (char *buf) { | |||
| 258 | loss = strtod (losstr, NULL); | 258 | loss = strtod (losstr, NULL); |
| 259 | if (atoi(losstr) == 100) | 259 | if (atoi(losstr) == 100) |
| 260 | status = STATE_CRITICAL; | 260 | status = STATE_CRITICAL; |
| 261 | else if (cpl_p == TRUE && loss > cpl) | 261 | else if (cpl_p && loss > cpl) |
| 262 | status = STATE_CRITICAL; | 262 | status = STATE_CRITICAL; |
| 263 | else if (wpl_p == TRUE && loss > wpl) | 263 | else if (wpl_p && loss > wpl) |
| 264 | status = STATE_WARNING; | 264 | status = STATE_WARNING; |
| 265 | else | 265 | else |
| 266 | status = STATE_OK; | 266 | status = STATE_OK; |
| 267 | /* loss=%.0f%%;%d;%d;0;100 */ | 267 | /* loss=%.0f%%;%d;%d;0;100 */ |
| 268 | die (status, _("FPING %s - %s (loss=%.0f%% )|%s\n"), | 268 | die (status, _("FPING %s - %s (loss=%.0f%% )|%s\n"), |
| 269 | state_text (status), server_name, loss , | 269 | state_text (status), server_name, loss , |
| 270 | perfdata ("loss", (long int)loss, "%", wpl_p, wpl, cpl_p, cpl, TRUE, 0, TRUE, 100)); | 270 | perfdata ("loss", (long int)loss, "%", wpl_p, wpl, cpl_p, cpl, true, 0, true, 100)); |
| 271 | 271 | ||
| 272 | } | 272 | } |
| 273 | else { | 273 | else { |
| @@ -329,7 +329,7 @@ process_arguments (int argc, char **argv) | |||
| 329 | case '?': /* print short usage statement if args not parsable */ | 329 | case '?': /* print short usage statement if args not parsable */ |
| 330 | usage5 (); | 330 | usage5 (); |
| 331 | case 'a': /* host alive mode */ | 331 | case 'a': /* host alive mode */ |
| 332 | alive_p = TRUE; | 332 | alive_p = true; |
| 333 | break; | 333 | break; |
| 334 | case 'h': /* help */ | 334 | case 'h': /* help */ |
| 335 | print_help (); | 335 | print_help (); |
| @@ -338,16 +338,16 @@ process_arguments (int argc, char **argv) | |||
| 338 | print_revision (progname, NP_VERSION); | 338 | print_revision (progname, NP_VERSION); |
| 339 | exit (STATE_UNKNOWN); | 339 | exit (STATE_UNKNOWN); |
| 340 | case 'v': /* verbose mode */ | 340 | case 'v': /* verbose mode */ |
| 341 | verbose = TRUE; | 341 | verbose = true; |
| 342 | break; | 342 | break; |
| 343 | case 'H': /* hostname */ | 343 | case 'H': /* hostname */ |
| 344 | if (is_host (optarg) == FALSE) { | 344 | if (is_host (optarg) == false) { |
| 345 | usage2 (_("Invalid hostname/address"), optarg); | 345 | usage2 (_("Invalid hostname/address"), optarg); |
| 346 | } | 346 | } |
| 347 | server_name = strscpy (server_name, optarg); | 347 | server_name = strscpy (server_name, optarg); |
| 348 | break; | 348 | break; |
| 349 | case 'S': /* sourceip */ | 349 | case 'S': /* sourceip */ |
| 350 | if (is_host (optarg) == FALSE) { | 350 | if (is_host (optarg) == false) { |
| 351 | usage2 (_("Invalid hostname/address"), optarg); | 351 | usage2 (_("Invalid hostname/address"), optarg); |
| 352 | } | 352 | } |
| 353 | sourceip = strscpy (sourceip, optarg); | 353 | sourceip = strscpy (sourceip, optarg); |
| @@ -369,12 +369,12 @@ process_arguments (int argc, char **argv) | |||
| 369 | get_threshold (optarg, rv); | 369 | get_threshold (optarg, rv); |
| 370 | if (rv[RTA]) { | 370 | if (rv[RTA]) { |
| 371 | crta = strtod (rv[RTA], NULL); | 371 | crta = strtod (rv[RTA], NULL); |
| 372 | crta_p = TRUE; | 372 | crta_p = true; |
| 373 | rv[RTA] = NULL; | 373 | rv[RTA] = NULL; |
| 374 | } | 374 | } |
| 375 | if (rv[PL]) { | 375 | if (rv[PL]) { |
| 376 | cpl = atoi (rv[PL]); | 376 | cpl = atoi (rv[PL]); |
| 377 | cpl_p = TRUE; | 377 | cpl_p = true; |
| 378 | rv[PL] = NULL; | 378 | rv[PL] = NULL; |
| 379 | } | 379 | } |
| 380 | break; | 380 | break; |
| @@ -382,12 +382,12 @@ process_arguments (int argc, char **argv) | |||
| 382 | get_threshold (optarg, rv); | 382 | get_threshold (optarg, rv); |
| 383 | if (rv[RTA]) { | 383 | if (rv[RTA]) { |
| 384 | wrta = strtod (rv[RTA], NULL); | 384 | wrta = strtod (rv[RTA], NULL); |
| 385 | wrta_p = TRUE; | 385 | wrta_p = true; |
| 386 | rv[RTA] = NULL; | 386 | rv[RTA] = NULL; |
| 387 | } | 387 | } |
| 388 | if (rv[PL]) { | 388 | if (rv[PL]) { |
| 389 | wpl = atoi (rv[PL]); | 389 | wpl = atoi (rv[PL]); |
| 390 | wpl_p = TRUE; | 390 | wpl_p = true; |
| 391 | rv[PL] = NULL; | 391 | rv[PL] = NULL; |
| 392 | } | 392 | } |
| 393 | break; | 393 | break; |
diff --git a/plugins/check_game.c b/plugins/check_game.c index a534b69b..ca126973 100644 --- a/plugins/check_game.c +++ b/plugins/check_game.c | |||
| @@ -53,7 +53,7 @@ char *server_ip; | |||
| 53 | char *game_type; | 53 | char *game_type; |
| 54 | int port = 0; | 54 | int port = 0; |
| 55 | 55 | ||
| 56 | int verbose; | 56 | bool verbose = false; |
| 57 | 57 | ||
| 58 | int qstat_game_players_max = -1; | 58 | int qstat_game_players_max = -1; |
| 59 | int qstat_game_players = -1; | 59 | int qstat_game_players = -1; |
| @@ -90,7 +90,7 @@ main (int argc, char **argv) | |||
| 90 | if (port) | 90 | if (port) |
| 91 | xasprintf (&command_line, "%s:%-d", command_line, port); | 91 | xasprintf (&command_line, "%s:%-d", command_line, port); |
| 92 | 92 | ||
| 93 | if (verbose > 0) | 93 | if (verbose) |
| 94 | printf ("%s\n", command_line); | 94 | printf ("%s\n", command_line); |
| 95 | 95 | ||
| 96 | /* run the command. historically, this plugin ignores output on stderr, | 96 | /* run the command. historically, this plugin ignores output on stderr, |
| @@ -142,11 +142,11 @@ main (int argc, char **argv) | |||
| 142 | ret[qstat_map_field], | 142 | ret[qstat_map_field], |
| 143 | ret[qstat_ping_field], | 143 | ret[qstat_ping_field], |
| 144 | perfdata ("players", atol(ret[qstat_game_players]), "", | 144 | perfdata ("players", atol(ret[qstat_game_players]), "", |
| 145 | FALSE, 0, FALSE, 0, | 145 | false, 0, false, 0, |
| 146 | TRUE, 0, TRUE, atol(ret[qstat_game_players_max])), | 146 | true, 0, true, atol(ret[qstat_game_players_max])), |
| 147 | fperfdata ("ping", strtod(ret[qstat_ping_field], NULL), "", | 147 | fperfdata ("ping", strtod(ret[qstat_ping_field], NULL), "", |
| 148 | FALSE, 0, FALSE, 0, | 148 | false, 0, false, 0, |
| 149 | TRUE, 0, FALSE, 0)); | 149 | true, 0, false, 0)); |
| 150 | } | 150 | } |
| 151 | 151 | ||
| 152 | return result; | 152 | return result; |
| @@ -201,7 +201,7 @@ process_arguments (int argc, char **argv) | |||
| 201 | print_revision (progname, NP_VERSION); | 201 | print_revision (progname, NP_VERSION); |
| 202 | exit (STATE_UNKNOWN); | 202 | exit (STATE_UNKNOWN); |
| 203 | case 'v': /* version */ | 203 | case 'v': /* version */ |
| 204 | verbose = TRUE; | 204 | verbose = true; |
| 205 | break; | 205 | break; |
| 206 | case 't': /* timeout period */ | 206 | case 't': /* timeout period */ |
| 207 | timeout_interval = atoi (optarg); | 207 | timeout_interval = atoi (optarg); |
diff --git a/plugins/check_http.c b/plugins/check_http.c index 718c8ee7..cdf768c9 100644 --- a/plugins/check_http.c +++ b/plugins/check_http.c | |||
| @@ -85,6 +85,7 @@ char errbuf[MAX_INPUT_BUFFER]; | |||
| 85 | int cflags = REG_NOSUB | REG_EXTENDED | REG_NEWLINE; | 85 | int cflags = REG_NOSUB | REG_EXTENDED | REG_NEWLINE; |
| 86 | int errcode; | 86 | int errcode; |
| 87 | int invert_regex = 0; | 87 | int invert_regex = 0; |
| 88 | int state_regex = STATE_CRITICAL; | ||
| 88 | 89 | ||
| 89 | struct timeval tv; | 90 | struct timeval tv; |
| 90 | struct timeval tv_temp; | 91 | struct timeval tv_temp; |
| @@ -210,7 +211,8 @@ bool process_arguments (int argc, char **argv) | |||
| 210 | INVERT_REGEX = CHAR_MAX + 1, | 211 | INVERT_REGEX = CHAR_MAX + 1, |
| 211 | SNI_OPTION, | 212 | SNI_OPTION, |
| 212 | MAX_REDIRS_OPTION, | 213 | MAX_REDIRS_OPTION, |
| 213 | CONTINUE_AFTER_CHECK_CERT | 214 | CONTINUE_AFTER_CHECK_CERT, |
| 215 | STATE_REGEX | ||
| 214 | }; | 216 | }; |
| 215 | 217 | ||
| 216 | int option = 0; | 218 | int option = 0; |
| @@ -246,6 +248,7 @@ bool process_arguments (int argc, char **argv) | |||
| 246 | {"content-type", required_argument, 0, 'T'}, | 248 | {"content-type", required_argument, 0, 'T'}, |
| 247 | {"pagesize", required_argument, 0, 'm'}, | 249 | {"pagesize", required_argument, 0, 'm'}, |
| 248 | {"invert-regex", no_argument, NULL, INVERT_REGEX}, | 250 | {"invert-regex", no_argument, NULL, INVERT_REGEX}, |
| 251 | {"state-regex", required_argument, 0, STATE_REGEX}, | ||
| 249 | {"use-ipv4", no_argument, 0, '4'}, | 252 | {"use-ipv4", no_argument, 0, '4'}, |
| 250 | {"use-ipv6", no_argument, 0, '6'}, | 253 | {"use-ipv6", no_argument, 0, '6'}, |
| 251 | {"extended-perfdata", no_argument, 0, 'E'}, | 254 | {"extended-perfdata", no_argument, 0, 'E'}, |
| @@ -471,10 +474,9 @@ bool process_arguments (int argc, char **argv) | |||
| 471 | free(http_method); | 474 | free(http_method); |
| 472 | http_method = strdup (optarg); | 475 | http_method = strdup (optarg); |
| 473 | char *tmp; | 476 | char *tmp; |
| 474 | if ((tmp = strstr(http_method, ":")) > 0) { | 477 | if ((tmp = strstr(http_method, ":")) != NULL) { |
| 475 | tmp[0] = '\0'; | 478 | tmp[0] = '\0'; // set the ":" in the middle to 0 |
| 476 | http_method = http_method; | 479 | http_method_proxy = ++tmp; // this points to the second part |
| 477 | http_method_proxy = ++tmp; | ||
| 478 | } | 480 | } |
| 479 | break; | 481 | break; |
| 480 | case 'd': /* string or substring */ | 482 | case 'd': /* string or substring */ |
| @@ -512,6 +514,13 @@ bool process_arguments (int argc, char **argv) | |||
| 512 | case INVERT_REGEX: | 514 | case INVERT_REGEX: |
| 513 | invert_regex = 1; | 515 | invert_regex = 1; |
| 514 | break; | 516 | break; |
| 517 | case STATE_REGEX: | ||
| 518 | if (!strcmp (optarg, "critical")) | ||
| 519 | state_regex = STATE_CRITICAL; | ||
| 520 | else if (!strcmp (optarg, "warning")) | ||
| 521 | state_regex = STATE_WARNING; | ||
| 522 | else usage2 (_("Invalid state-regex option"), optarg); | ||
| 523 | break; | ||
| 515 | case '4': | 524 | case '4': |
| 516 | address_family = AF_INET; | 525 | address_family = AF_INET; |
| 517 | break; | 526 | break; |
| @@ -1094,7 +1103,7 @@ check_http (void) | |||
| 1094 | microsec_firstbyte = deltime (tv_temp); | 1103 | microsec_firstbyte = deltime (tv_temp); |
| 1095 | elapsed_time_firstbyte = (double)microsec_firstbyte / 1.0e6; | 1104 | elapsed_time_firstbyte = (double)microsec_firstbyte / 1.0e6; |
| 1096 | } | 1105 | } |
| 1097 | while (pos = memchr(buffer, '\0', i)) { | 1106 | while ((pos = memchr(buffer, '\0', i))) { |
| 1098 | /* replace nul character with a blank */ | 1107 | /* replace nul character with a blank */ |
| 1099 | *pos = ' '; | 1108 | *pos = ' '; |
| 1100 | } | 1109 | } |
| @@ -1318,7 +1327,7 @@ check_http (void) | |||
| 1318 | xasprintf (&msg, _("%spattern not found, "), msg); | 1327 | xasprintf (&msg, _("%spattern not found, "), msg); |
| 1319 | else | 1328 | else |
| 1320 | xasprintf (&msg, _("%spattern found, "), msg); | 1329 | xasprintf (&msg, _("%spattern found, "), msg); |
| 1321 | result = STATE_CRITICAL; | 1330 | result = state_regex; |
| 1322 | } | 1331 | } |
| 1323 | else { | 1332 | else { |
| 1324 | /* FIXME: Shouldn't that be UNKNOWN? */ | 1333 | /* FIXME: Shouldn't that be UNKNOWN? */ |
| @@ -1775,7 +1784,7 @@ print_help (void) | |||
| 1775 | printf (" %s\n", "-u, --url=PATH"); | 1784 | printf (" %s\n", "-u, --url=PATH"); |
| 1776 | printf (" %s\n", _("URL to GET or POST (default: /)")); | 1785 | printf (" %s\n", _("URL to GET or POST (default: /)")); |
| 1777 | printf (" %s\n", "-P, --post=STRING"); | 1786 | printf (" %s\n", "-P, --post=STRING"); |
| 1778 | printf (" %s\n", _("URL encoded http POST data")); | 1787 | printf (" %s\n", _("URL decoded http POST data")); |
| 1779 | printf (" %s\n", "-j, --method=STRING (for example: HEAD, OPTIONS, TRACE, PUT, DELETE, CONNECT, CONNECT:POST)"); | 1788 | printf (" %s\n", "-j, --method=STRING (for example: HEAD, OPTIONS, TRACE, PUT, DELETE, CONNECT, CONNECT:POST)"); |
| 1780 | printf (" %s\n", _("Set HTTP method.")); | 1789 | printf (" %s\n", _("Set HTTP method.")); |
| 1781 | printf (" %s\n", "-N, --no-body"); | 1790 | printf (" %s\n", "-N, --no-body"); |
| @@ -1794,7 +1803,10 @@ print_help (void) | |||
| 1794 | printf (" %s\n", "-R, --eregi=STRING"); | 1803 | printf (" %s\n", "-R, --eregi=STRING"); |
| 1795 | printf (" %s\n", _("Search page for case-insensitive regex STRING")); | 1804 | printf (" %s\n", _("Search page for case-insensitive regex STRING")); |
| 1796 | printf (" %s\n", "--invert-regex"); | 1805 | printf (" %s\n", "--invert-regex"); |
| 1797 | printf (" %s\n", _("Return CRITICAL if found, OK if not\n")); | 1806 | printf (" %s\n", _("Return STATE if found, OK if not (STATE is CRITICAL, per default)")); |
| 1807 | printf (" %s\n", _("can be changed with --state--regex)")); | ||
| 1808 | printf (" %s\n", "--regex-state=STATE"); | ||
| 1809 | printf (" %s\n", _("Return STATE if regex is found, OK if not\n")); | ||
| 1798 | 1810 | ||
| 1799 | printf (" %s\n", "-a, --authorization=AUTH_PAIR"); | 1811 | printf (" %s\n", "-a, --authorization=AUTH_PAIR"); |
| 1800 | printf (" %s\n", _("Username:password on sites with basic authentication")); | 1812 | printf (" %s\n", _("Username:password on sites with basic authentication")); |
diff --git a/plugins/check_ide_smart.c b/plugins/check_ide_smart.c index 0160d98b..3872e341 100644 --- a/plugins/check_ide_smart.c +++ b/plugins/check_ide_smart.c | |||
| @@ -73,10 +73,6 @@ void print_usage (void); | |||
| 73 | 73 | ||
| 74 | #define NR_ATTRIBUTES 30 | 74 | #define NR_ATTRIBUTES 30 |
| 75 | 75 | ||
| 76 | #ifndef TRUE | ||
| 77 | #define TRUE 1 | ||
| 78 | #endif /* */ | ||
| 79 | |||
| 80 | #define PREFAILURE 2 | 76 | #define PREFAILURE 2 |
| 81 | #define ADVISORY 1 | 77 | #define ADVISORY 1 |
| 82 | #define OPERATIONAL 0 | 78 | #define OPERATIONAL 0 |
| @@ -169,9 +165,9 @@ int smart_read_values (int, values_t *); | |||
| 169 | int nagios (values_t *, thresholds_t *); | 165 | int nagios (values_t *, thresholds_t *); |
| 170 | void print_value (value_t *, threshold_t *); | 166 | void print_value (value_t *, threshold_t *); |
| 171 | void print_values (values_t *, thresholds_t *); | 167 | void print_values (values_t *, thresholds_t *); |
| 172 | int smart_cmd_simple (int, enum SmartCommand, __u8, char); | 168 | int smart_cmd_simple (int, enum SmartCommand, __u8, bool); |
| 173 | int smart_read_thresholds (int, thresholds_t *); | 169 | int smart_read_thresholds (int, thresholds_t *); |
| 174 | int verbose = FALSE; | 170 | bool verbose = false; |
| 175 | 171 | ||
| 176 | int | 172 | int |
| 177 | main (int argc, char *argv[]) | 173 | main (int argc, char *argv[]) |
| @@ -203,7 +199,7 @@ main (int argc, char *argv[]) | |||
| 203 | bindtextdomain (PACKAGE, LOCALEDIR); | 199 | bindtextdomain (PACKAGE, LOCALEDIR); |
| 204 | textdomain (PACKAGE); | 200 | textdomain (PACKAGE); |
| 205 | 201 | ||
| 206 | while (1) { | 202 | while (true) { |
| 207 | 203 | ||
| 208 | o = getopt_long (argc, argv, "+d:iq10nhVv", longopts, &longindex); | 204 | o = getopt_long (argc, argv, "+d:iq10nhVv", longopts, &longindex); |
| 209 | 205 | ||
| @@ -229,7 +225,7 @@ main (int argc, char *argv[]) | |||
| 229 | fprintf (stderr, "%s\n", _("default and will be removed from future releases.")); | 225 | fprintf (stderr, "%s\n", _("default and will be removed from future releases.")); |
| 230 | break; | 226 | break; |
| 231 | case 'v': /* verbose */ | 227 | case 'v': /* verbose */ |
| 232 | verbose = TRUE; | 228 | verbose = true; |
| 233 | break; | 229 | break; |
| 234 | case 'h': | 230 | case 'h': |
| 235 | print_help (); | 231 | print_help (); |
| @@ -258,7 +254,7 @@ main (int argc, char *argv[]) | |||
| 258 | return STATE_CRITICAL; | 254 | return STATE_CRITICAL; |
| 259 | } | 255 | } |
| 260 | 256 | ||
| 261 | if (smart_cmd_simple (fd, SMART_CMD_ENABLE, 0, FALSE)) { | 257 | if (smart_cmd_simple (fd, SMART_CMD_ENABLE, 0, false)) { |
| 262 | printf (_("CRITICAL - SMART_CMD_ENABLE\n")); | 258 | printf (_("CRITICAL - SMART_CMD_ENABLE\n")); |
| 263 | return STATE_CRITICAL; | 259 | return STATE_CRITICAL; |
| 264 | } | 260 | } |
| @@ -447,9 +443,7 @@ print_values (values_t * p, thresholds_t * t) | |||
| 447 | } | 443 | } |
| 448 | 444 | ||
| 449 | 445 | ||
| 450 | int | 446 | int smart_cmd_simple (int fd, enum SmartCommand command, __u8 val0, bool show_error) { |
| 451 | smart_cmd_simple (int fd, enum SmartCommand command, __u8 val0, char show_error) | ||
| 452 | { | ||
| 453 | int e = STATE_UNKNOWN; | 447 | int e = STATE_UNKNOWN; |
| 454 | #ifdef __linux__ | 448 | #ifdef __linux__ |
| 455 | __u8 args[4]; | 449 | __u8 args[4]; |
diff --git a/plugins/check_ldap.c b/plugins/check_ldap.c index a1bfe1be..868ffc1e 100644 --- a/plugins/check_ldap.c +++ b/plugins/check_ldap.c | |||
| @@ -71,9 +71,9 @@ thresholds *entries_thresholds = NULL; | |||
| 71 | struct timeval tv; | 71 | struct timeval tv; |
| 72 | char* warn_entries = NULL; | 72 | char* warn_entries = NULL; |
| 73 | char* crit_entries = NULL; | 73 | char* crit_entries = NULL; |
| 74 | int starttls = FALSE; | 74 | bool starttls = false; |
| 75 | int ssl_on_connect = FALSE; | 75 | bool ssl_on_connect = false; |
| 76 | int verbose = 0; | 76 | bool verbose = false; |
| 77 | 77 | ||
| 78 | /* for ldap tls */ | 78 | /* for ldap tls */ |
| 79 | 79 | ||
| @@ -97,9 +97,6 @@ main (int argc, char *argv[]) | |||
| 97 | int tls; | 97 | int tls; |
| 98 | int version=3; | 98 | int version=3; |
| 99 | 99 | ||
| 100 | /* for entry counting */ | ||
| 101 | |||
| 102 | LDAPMessage *next_entry; | ||
| 103 | int status_entries = STATE_OK; | 100 | int status_entries = STATE_OK; |
| 104 | int num_entries = 0; | 101 | int num_entries = 0; |
| 105 | 102 | ||
| @@ -118,7 +115,7 @@ main (int argc, char *argv[]) | |||
| 118 | usage4 (_("Could not parse arguments")); | 115 | usage4 (_("Could not parse arguments")); |
| 119 | 116 | ||
| 120 | if (strstr(argv[0],"check_ldaps") && ! starttls && ! ssl_on_connect) | 117 | if (strstr(argv[0],"check_ldaps") && ! starttls && ! ssl_on_connect) |
| 121 | starttls = TRUE; | 118 | starttls = true; |
| 122 | 119 | ||
| 123 | /* initialize alarm signal handling */ | 120 | /* initialize alarm signal handling */ |
| 124 | signal (SIGALRM, socket_timeout_alarm_handler); | 121 | signal (SIGALRM, socket_timeout_alarm_handler); |
| @@ -256,11 +253,11 @@ main (int argc, char *argv[]) | |||
| 256 | fperfdata ("time", elapsed_time, "s", | 253 | fperfdata ("time", elapsed_time, "s", |
| 257 | (int)warn_time, warn_time, | 254 | (int)warn_time, warn_time, |
| 258 | (int)crit_time, crit_time, | 255 | (int)crit_time, crit_time, |
| 259 | TRUE, 0, FALSE, 0), | 256 | true, 0, false, 0), |
| 260 | sperfdata ("entries", (double)num_entries, "", | 257 | sperfdata ("entries", (double)num_entries, "", |
| 261 | warn_entries, | 258 | warn_entries, |
| 262 | crit_entries, | 259 | crit_entries, |
| 263 | TRUE, 0.0, FALSE, 0.0)); | 260 | true, 0.0, false, 0.0)); |
| 264 | } else { | 261 | } else { |
| 265 | printf (_("LDAP %s - %.3f seconds response time|%s\n"), | 262 | printf (_("LDAP %s - %.3f seconds response time|%s\n"), |
| 266 | state_text (status), | 263 | state_text (status), |
| @@ -268,7 +265,7 @@ main (int argc, char *argv[]) | |||
| 268 | fperfdata ("time", elapsed_time, "s", | 265 | fperfdata ("time", elapsed_time, "s", |
| 269 | (int)warn_time, warn_time, | 266 | (int)warn_time, warn_time, |
| 270 | (int)crit_time, crit_time, | 267 | (int)crit_time, crit_time, |
| 271 | TRUE, 0, FALSE, 0)); | 268 | true, 0, false, 0)); |
| 272 | } | 269 | } |
| 273 | 270 | ||
| 274 | return status; | 271 | return status; |
| @@ -316,7 +313,7 @@ process_arguments (int argc, char **argv) | |||
| 316 | strcpy (argv[c], "-t"); | 313 | strcpy (argv[c], "-t"); |
| 317 | } | 314 | } |
| 318 | 315 | ||
| 319 | while (1) { | 316 | while (true) { |
| 320 | c = getopt_long (argc, argv, "hvV234TS6t:c:w:H:b:p:a:D:P:C:W:", longopts, &option); | 317 | c = getopt_long (argc, argv, "hvV234TS6t:c:w:H:b:p:a:D:P:C:W:", longopts, &option); |
| 321 | 318 | ||
| 322 | if (c == -1 || c == EOF) | 319 | if (c == -1 || c == EOF) |
| @@ -377,17 +374,17 @@ process_arguments (int argc, char **argv) | |||
| 377 | address_family = AF_INET; | 374 | address_family = AF_INET; |
| 378 | break; | 375 | break; |
| 379 | case 'v': | 376 | case 'v': |
| 380 | verbose++; | 377 | verbose = true; |
| 381 | break; | 378 | break; |
| 382 | case 'T': | 379 | case 'T': |
| 383 | if (! ssl_on_connect) | 380 | if (! ssl_on_connect) |
| 384 | starttls = TRUE; | 381 | starttls = true; |
| 385 | else | 382 | else |
| 386 | usage_va(_("%s cannot be combined with %s"), "-T/--starttls", "-S/--ssl"); | 383 | usage_va(_("%s cannot be combined with %s"), "-T/--starttls", "-S/--ssl"); |
| 387 | break; | 384 | break; |
| 388 | case 'S': | 385 | case 'S': |
| 389 | if (! starttls) { | 386 | if (! starttls) { |
| 390 | ssl_on_connect = TRUE; | 387 | ssl_on_connect = true; |
| 391 | if (ld_port == -1) | 388 | if (ld_port == -1) |
| 392 | ld_port = LDAPS_PORT; | 389 | ld_port = LDAPS_PORT; |
| 393 | } else | 390 | } else |
diff --git a/plugins/check_load.c b/plugins/check_load.c index 313df8ad..1431d130 100644 --- a/plugins/check_load.c +++ b/plugins/check_load.c | |||
| @@ -110,10 +110,6 @@ main (int argc, char **argv) | |||
| 110 | double la[3] = { 0.0, 0.0, 0.0 }; /* NetBSD complains about uninitialized arrays */ | 110 | double la[3] = { 0.0, 0.0, 0.0 }; /* NetBSD complains about uninitialized arrays */ |
| 111 | #ifndef HAVE_GETLOADAVG | 111 | #ifndef HAVE_GETLOADAVG |
| 112 | char input_buffer[MAX_INPUT_BUFFER]; | 112 | char input_buffer[MAX_INPUT_BUFFER]; |
| 113 | # ifdef HAVE_PROC_LOADAVG | ||
| 114 | FILE *fp; | ||
| 115 | char *str, *next; | ||
| 116 | # endif | ||
| 117 | #endif | 113 | #endif |
| 118 | 114 | ||
| 119 | setlocale (LC_ALL, ""); | 115 | setlocale (LC_ALL, ""); |
| @@ -132,23 +128,6 @@ main (int argc, char **argv) | |||
| 132 | if (result != 3) | 128 | if (result != 3) |
| 133 | return STATE_UNKNOWN; | 129 | return STATE_UNKNOWN; |
| 134 | #else | 130 | #else |
| 135 | # ifdef HAVE_PROC_LOADAVG | ||
| 136 | fp = fopen (PROC_LOADAVG, "r"); | ||
| 137 | if (fp == NULL) { | ||
| 138 | printf (_("Error opening %s\n"), PROC_LOADAVG); | ||
| 139 | return STATE_UNKNOWN; | ||
| 140 | } | ||
| 141 | |||
| 142 | while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, fp)) { | ||
| 143 | str = (char *)input_buffer; | ||
| 144 | for(i = 0; i < 3; i++) { | ||
| 145 | la[i] = strtod(str, &next); | ||
| 146 | str = next; | ||
| 147 | } | ||
| 148 | } | ||
| 149 | |||
| 150 | fclose (fp); | ||
| 151 | # else | ||
| 152 | child_process = spopen (PATH_TO_UPTIME); | 131 | child_process = spopen (PATH_TO_UPTIME); |
| 153 | if (child_process == NULL) { | 132 | if (child_process == NULL) { |
| 154 | printf (_("Error opening %s\n"), PATH_TO_UPTIME); | 133 | printf (_("Error opening %s\n"), PATH_TO_UPTIME); |
| @@ -175,18 +154,13 @@ main (int argc, char **argv) | |||
| 175 | printf (_("Error code %d returned in %s\n"), result, PATH_TO_UPTIME); | 154 | printf (_("Error code %d returned in %s\n"), result, PATH_TO_UPTIME); |
| 176 | return STATE_UNKNOWN; | 155 | return STATE_UNKNOWN; |
| 177 | } | 156 | } |
| 178 | # endif | ||
| 179 | #endif | 157 | #endif |
| 180 | 158 | ||
| 181 | if ((la[0] < 0.0) || (la[1] < 0.0) || (la[2] < 0.0)) { | 159 | if ((la[0] < 0.0) || (la[1] < 0.0) || (la[2] < 0.0)) { |
| 182 | #ifdef HAVE_GETLOADAVG | 160 | #ifdef HAVE_GETLOADAVG |
| 183 | printf (_("Error in getloadavg()\n")); | 161 | printf (_("Error in getloadavg()\n")); |
| 184 | #else | 162 | #else |
| 185 | # ifdef HAVE_PROC_LOADAVG | ||
| 186 | printf (_("Error processing %s\n"), PROC_LOADAVG); | ||
| 187 | # else | ||
| 188 | printf (_("Error processing %s\n"), PATH_TO_UPTIME); | 163 | printf (_("Error processing %s\n"), PATH_TO_UPTIME); |
| 189 | # endif | ||
| 190 | #endif | 164 | #endif |
| 191 | return STATE_UNKNOWN; | 165 | return STATE_UNKNOWN; |
| 192 | } | 166 | } |
diff --git a/plugins/check_mrtg.c b/plugins/check_mrtg.c index 1fda5492..826b77e9 100644 --- a/plugins/check_mrtg.c +++ b/plugins/check_mrtg.c | |||
| @@ -43,7 +43,7 @@ void print_usage (void); | |||
| 43 | 43 | ||
| 44 | char *log_file = NULL; | 44 | char *log_file = NULL; |
| 45 | int expire_minutes = 0; | 45 | int expire_minutes = 0; |
| 46 | int use_average = TRUE; | 46 | bool use_average = true; |
| 47 | int variable_number = -1; | 47 | int variable_number = -1; |
| 48 | unsigned long value_warning_threshold = 0L; | 48 | unsigned long value_warning_threshold = 0L; |
| 49 | unsigned long value_critical_threshold = 0L; | 49 | unsigned long value_critical_threshold = 0L; |
| @@ -138,7 +138,7 @@ main (int argc, char **argv) | |||
| 138 | } | 138 | } |
| 139 | 139 | ||
| 140 | /* else check the incoming/outgoing rates */ | 140 | /* else check the incoming/outgoing rates */ |
| 141 | if (use_average == TRUE) | 141 | if (use_average) |
| 142 | rate = average_value_rate; | 142 | rate = average_value_rate; |
| 143 | else | 143 | else |
| 144 | rate = maximum_value_rate; | 144 | rate = maximum_value_rate; |
| @@ -149,7 +149,7 @@ main (int argc, char **argv) | |||
| 149 | result = STATE_WARNING; | 149 | result = STATE_WARNING; |
| 150 | 150 | ||
| 151 | printf("%s. %s = %lu %s|%s\n", | 151 | printf("%s. %s = %lu %s|%s\n", |
| 152 | (use_average == TRUE) ? _("Avg") : _("Max"), | 152 | (use_average) ? _("Avg") : _("Max"), |
| 153 | label, rate, units, | 153 | label, rate, units, |
| 154 | perfdata(label, (long) rate, units, | 154 | perfdata(label, (long) rate, units, |
| 155 | (int) value_warning_threshold, (long) value_warning_threshold, | 155 | (int) value_warning_threshold, (long) value_warning_threshold, |
| @@ -211,9 +211,9 @@ process_arguments (int argc, char **argv) | |||
| 211 | break; | 211 | break; |
| 212 | case 'a': /* port */ | 212 | case 'a': /* port */ |
| 213 | if (!strcmp (optarg, "MAX")) | 213 | if (!strcmp (optarg, "MAX")) |
| 214 | use_average = FALSE; | 214 | use_average = false; |
| 215 | else | 215 | else |
| 216 | use_average = TRUE; | 216 | use_average = true; |
| 217 | break; | 217 | break; |
| 218 | case 'v': | 218 | case 'v': |
| 219 | variable_number = atoi (optarg); | 219 | variable_number = atoi (optarg); |
| @@ -258,11 +258,11 @@ process_arguments (int argc, char **argv) | |||
| 258 | } | 258 | } |
| 259 | 259 | ||
| 260 | if (argc > c && strcmp (argv[c], "MAX") == 0) { | 260 | if (argc > c && strcmp (argv[c], "MAX") == 0) { |
| 261 | use_average = FALSE; | 261 | use_average = false; |
| 262 | c++; | 262 | c++; |
| 263 | } | 263 | } |
| 264 | else if (argc > c && strcmp (argv[c], "AVG") == 0) { | 264 | else if (argc > c && strcmp (argv[c], "AVG") == 0) { |
| 265 | use_average = TRUE; | 265 | use_average = true; |
| 266 | c++; | 266 | c++; |
| 267 | } | 267 | } |
| 268 | 268 | ||
diff --git a/plugins/check_mrtgtraf.c b/plugins/check_mrtgtraf.c index eb66f622..bd25d47d 100644 --- a/plugins/check_mrtgtraf.c +++ b/plugins/check_mrtgtraf.c | |||
| @@ -43,7 +43,7 @@ void print_usage(void); | |||
| 43 | 43 | ||
| 44 | char *log_file = NULL; | 44 | char *log_file = NULL; |
| 45 | int expire_minutes = -1; | 45 | int expire_minutes = -1; |
| 46 | int use_average = TRUE; | 46 | bool use_average = true; |
| 47 | unsigned long incoming_warning_threshold = 0L; | 47 | unsigned long incoming_warning_threshold = 0L; |
| 48 | unsigned long incoming_critical_threshold = 0L; | 48 | unsigned long incoming_critical_threshold = 0L; |
| 49 | unsigned long outgoing_warning_threshold = 0L; | 49 | unsigned long outgoing_warning_threshold = 0L; |
| @@ -137,7 +137,7 @@ main (int argc, char **argv) | |||
| 137 | (int) ((current_time - timestamp) / 60)); | 137 | (int) ((current_time - timestamp) / 60)); |
| 138 | 138 | ||
| 139 | /* else check the incoming/outgoing rates */ | 139 | /* else check the incoming/outgoing rates */ |
| 140 | if (use_average == TRUE) { | 140 | if (use_average) { |
| 141 | incoming_rate = average_incoming_rate; | 141 | incoming_rate = average_incoming_rate; |
| 142 | outgoing_rate = average_outgoing_rate; | 142 | outgoing_rate = average_outgoing_rate; |
| 143 | } | 143 | } |
| @@ -192,17 +192,17 @@ main (int argc, char **argv) | |||
| 192 | } | 192 | } |
| 193 | 193 | ||
| 194 | xasprintf (&error_message, _("%s. In = %0.1f %s/s, %s. Out = %0.1f %s/s|%s %s\n"), | 194 | xasprintf (&error_message, _("%s. In = %0.1f %s/s, %s. Out = %0.1f %s/s|%s %s\n"), |
| 195 | (use_average == TRUE) ? _("Avg") : _("Max"), adjusted_incoming_rate, | 195 | (use_average) ? _("Avg") : _("Max"), adjusted_incoming_rate, |
| 196 | incoming_speed_rating, (use_average == TRUE) ? _("Avg") : _("Max"), | 196 | incoming_speed_rating, (use_average) ? _("Avg") : _("Max"), |
| 197 | adjusted_outgoing_rate, outgoing_speed_rating, | 197 | adjusted_outgoing_rate, outgoing_speed_rating, |
| 198 | fperfdata("in", adjusted_incoming_rate, incoming_speed_rating, | 198 | fperfdata("in", adjusted_incoming_rate, incoming_speed_rating, |
| 199 | (int)incoming_warning_threshold, incoming_warning_threshold, | 199 | (int)incoming_warning_threshold, incoming_warning_threshold, |
| 200 | (int)incoming_critical_threshold, incoming_critical_threshold, | 200 | (int)incoming_critical_threshold, incoming_critical_threshold, |
| 201 | TRUE, 0, FALSE, 0), | 201 | true, 0, false, 0), |
| 202 | fperfdata("out", adjusted_outgoing_rate, outgoing_speed_rating, | 202 | fperfdata("out", adjusted_outgoing_rate, outgoing_speed_rating, |
| 203 | (int)outgoing_warning_threshold, outgoing_warning_threshold, | 203 | (int)outgoing_warning_threshold, outgoing_warning_threshold, |
| 204 | (int)outgoing_critical_threshold, outgoing_critical_threshold, | 204 | (int)outgoing_critical_threshold, outgoing_critical_threshold, |
| 205 | TRUE, 0, FALSE, 0)); | 205 | true, 0, false, 0)); |
| 206 | 206 | ||
| 207 | printf (_("Traffic %s - %s\n"), state_text(result), error_message); | 207 | printf (_("Traffic %s - %s\n"), state_text(result), error_message); |
| 208 | 208 | ||
| @@ -256,9 +256,9 @@ process_arguments (int argc, char **argv) | |||
| 256 | break; | 256 | break; |
| 257 | case 'a': /* aggregation (AVE or MAX) */ | 257 | case 'a': /* aggregation (AVE or MAX) */ |
| 258 | if (!strcmp (optarg, "MAX")) | 258 | if (!strcmp (optarg, "MAX")) |
| 259 | use_average = FALSE; | 259 | use_average = false; |
| 260 | else | 260 | else |
| 261 | use_average = TRUE; | 261 | use_average = true; |
| 262 | break; | 262 | break; |
| 263 | case 'c': /* warning threshold */ | 263 | case 'c': /* warning threshold */ |
| 264 | sscanf (optarg, "%lu,%lu", &incoming_critical_threshold, | 264 | sscanf (optarg, "%lu,%lu", &incoming_critical_threshold, |
| @@ -289,11 +289,11 @@ process_arguments (int argc, char **argv) | |||
| 289 | } | 289 | } |
| 290 | 290 | ||
| 291 | if (argc > c && strcmp (argv[c], "MAX") == 0) { | 291 | if (argc > c && strcmp (argv[c], "MAX") == 0) { |
| 292 | use_average = FALSE; | 292 | use_average = false; |
| 293 | c++; | 293 | c++; |
| 294 | } | 294 | } |
| 295 | else if (argc > c && strcmp (argv[c], "AVG") == 0) { | 295 | else if (argc > c && strcmp (argv[c], "AVG") == 0) { |
| 296 | use_average = TRUE; | 296 | use_average = true; |
| 297 | c++; | 297 | c++; |
| 298 | } | 298 | } |
| 299 | 299 | ||
diff --git a/plugins/check_mysql.c b/plugins/check_mysql.c index 7d855544..15ec04c0 100644 --- a/plugins/check_mysql.c +++ b/plugins/check_mysql.c | |||
| @@ -59,8 +59,8 @@ bool ssl = false; | |||
| 59 | char *opt_file = NULL; | 59 | char *opt_file = NULL; |
| 60 | char *opt_group = NULL; | 60 | char *opt_group = NULL; |
| 61 | unsigned int db_port = MYSQL_PORT; | 61 | unsigned int db_port = MYSQL_PORT; |
| 62 | int check_slave = 0, warn_sec = 0, crit_sec = 0; | 62 | bool check_slave = false; |
| 63 | int ignore_auth = 0; | 63 | bool ignore_auth = false; |
| 64 | int verbose = 0; | 64 | int verbose = 0; |
| 65 | 65 | ||
| 66 | static double warning_time = 0; | 66 | static double warning_time = 0; |
| @@ -113,7 +113,7 @@ main (int argc, char **argv) | |||
| 113 | char slaveresult[SLAVERESULTSIZE] = { 0 }; | 113 | char slaveresult[SLAVERESULTSIZE] = { 0 }; |
| 114 | char* perf; | 114 | char* perf; |
| 115 | 115 | ||
| 116 | perf = strdup (""); | 116 | perf = strdup (""); |
| 117 | 117 | ||
| 118 | setlocale (LC_ALL, ""); | 118 | setlocale (LC_ALL, ""); |
| 119 | bindtextdomain (PACKAGE, LOCALEDIR); | 119 | bindtextdomain (PACKAGE, LOCALEDIR); |
| @@ -193,14 +193,14 @@ main (int argc, char **argv) | |||
| 193 | for(i = 0; i < LENGTH_METRIC_UNIT; i++) { | 193 | for(i = 0; i < LENGTH_METRIC_UNIT; i++) { |
| 194 | if (strcmp(row[0], metric_unit[i]) == 0) { | 194 | if (strcmp(row[0], metric_unit[i]) == 0) { |
| 195 | xasprintf(&perf, "%s%s ", perf, perfdata(metric_unit[i], | 195 | xasprintf(&perf, "%s%s ", perf, perfdata(metric_unit[i], |
| 196 | atol(row[1]), "", FALSE, 0, FALSE, 0, FALSE, 0, FALSE, 0)); | 196 | atol(row[1]), "", false, 0, false, 0, false, 0, false, 0)); |
| 197 | continue; | 197 | continue; |
| 198 | } | 198 | } |
| 199 | } | 199 | } |
| 200 | for(i = 0; i < LENGTH_METRIC_COUNTER; i++) { | 200 | for(i = 0; i < LENGTH_METRIC_COUNTER; i++) { |
| 201 | if (strcmp(row[0], metric_counter[i]) == 0) { | 201 | if (strcmp(row[0], metric_counter[i]) == 0) { |
| 202 | xasprintf(&perf, "%s%s ", perf, perfdata(metric_counter[i], | 202 | xasprintf(&perf, "%s%s ", perf, perfdata(metric_counter[i], |
| 203 | atol(row[1]), "c", FALSE, 0, FALSE, 0, FALSE, 0, FALSE, 0)); | 203 | atol(row[1]), "c", false, 0, false, 0, false, 0, false, 0)); |
| 204 | continue; | 204 | continue; |
| 205 | } | 205 | } |
| 206 | } | 206 | } |
| @@ -322,10 +322,10 @@ main (int argc, char **argv) | |||
| 322 | status = get_status(value, my_threshold); | 322 | status = get_status(value, my_threshold); |
| 323 | 323 | ||
| 324 | xasprintf (&perf, "%s %s", perf, fperfdata ("seconds behind master", value, "s", | 324 | xasprintf (&perf, "%s %s", perf, fperfdata ("seconds behind master", value, "s", |
| 325 | TRUE, (double) warning_time, | 325 | true, (double) warning_time, |
| 326 | TRUE, (double) critical_time, | 326 | true, (double) critical_time, |
| 327 | FALSE, 0, | 327 | false, 0, |
| 328 | FALSE, 0)); | 328 | false, 0)); |
| 329 | 329 | ||
| 330 | if (status == STATE_WARNING) { | 330 | if (status == STATE_WARNING) { |
| 331 | printf("SLOW_SLAVE %s: %s|%s\n", _("WARNING"), slaveresult, perf); | 331 | printf("SLOW_SLAVE %s: %s|%s\n", _("WARNING"), slaveresult, perf); |
| @@ -456,10 +456,10 @@ process_arguments (int argc, char **argv) | |||
| 456 | db_port = atoi (optarg); | 456 | db_port = atoi (optarg); |
| 457 | break; | 457 | break; |
| 458 | case 'S': | 458 | case 'S': |
| 459 | check_slave = 1; /* check-slave */ | 459 | check_slave = true; /* check-slave */ |
| 460 | break; | 460 | break; |
| 461 | case 'n': | 461 | case 'n': |
| 462 | ignore_auth = 1; /* ignore-auth */ | 462 | ignore_auth = true; /* ignore-auth */ |
| 463 | break; | 463 | break; |
| 464 | case 'w': | 464 | case 'w': |
| 465 | warning = optarg; | 465 | warning = optarg; |
diff --git a/plugins/check_mysql_query.c b/plugins/check_mysql_query.c index ac2fb15d..842b7a2f 100644 --- a/plugins/check_mysql_query.c +++ b/plugins/check_mysql_query.c | |||
| @@ -162,10 +162,10 @@ main (int argc, char **argv) | |||
| 162 | } | 162 | } |
| 163 | printf(_("'%s' returned %f | %s"), sql_query, value, | 163 | printf(_("'%s' returned %f | %s"), sql_query, value, |
| 164 | fperfdata("result", value, "", | 164 | fperfdata("result", value, "", |
| 165 | my_thresholds->warning?TRUE:FALSE, my_thresholds->warning?my_thresholds->warning->end:0, | 165 | my_thresholds->warning?true:false, my_thresholds->warning?my_thresholds->warning->end:0, |
| 166 | my_thresholds->critical?TRUE:FALSE, my_thresholds->critical?my_thresholds->critical->end:0, | 166 | my_thresholds->critical?true:false, my_thresholds->critical?my_thresholds->critical->end:0, |
| 167 | FALSE, 0, | 167 | false, 0, |
| 168 | FALSE, 0) | 168 | false, 0) |
| 169 | ); | 169 | ); |
| 170 | printf("\n"); | 170 | printf("\n"); |
| 171 | 171 | ||
diff --git a/plugins/check_nt.c b/plugins/check_nt.c index d73d83ce..19c050de 100644 --- a/plugins/check_nt.c +++ b/plugins/check_nt.c | |||
| @@ -67,17 +67,17 @@ char *req_password=NULL; | |||
| 67 | unsigned long lvalue_list[MAX_VALUE_LIST]; | 67 | unsigned long lvalue_list[MAX_VALUE_LIST]; |
| 68 | unsigned long warning_value=0L; | 68 | unsigned long warning_value=0L; |
| 69 | unsigned long critical_value=0L; | 69 | unsigned long critical_value=0L; |
| 70 | int check_warning_value=FALSE; | 70 | bool check_warning_value=false; |
| 71 | int check_critical_value=FALSE; | 71 | bool check_critical_value=false; |
| 72 | enum checkvars vars_to_check = CHECK_NONE; | 72 | enum checkvars vars_to_check = CHECK_NONE; |
| 73 | int show_all=FALSE; | 73 | bool show_all = false; |
| 74 | 74 | ||
| 75 | char recv_buffer[MAX_INPUT_BUFFER]; | 75 | char recv_buffer[MAX_INPUT_BUFFER]; |
| 76 | 76 | ||
| 77 | void fetch_data (const char* address, int port, const char* sendb); | 77 | void fetch_data (const char* address, int port, const char* sendb); |
| 78 | int process_arguments(int, char **); | 78 | int process_arguments(int, char **); |
| 79 | void preparelist(char *string); | 79 | void preparelist(char *string); |
| 80 | int strtoularray(unsigned long *array, char *string, const char *delim); | 80 | bool strtoularray(unsigned long *array, char *string, const char *delim); |
| 81 | void print_help(void); | 81 | void print_help(void); |
| 82 | void print_usage(void); | 82 | void print_usage(void); |
| 83 | 83 | ||
| @@ -113,8 +113,8 @@ int main(int argc, char **argv){ | |||
| 113 | int uphours=0; | 113 | int uphours=0; |
| 114 | int upminutes=0; | 114 | int upminutes=0; |
| 115 | 115 | ||
| 116 | int isPercent = FALSE; | 116 | bool isPercent = false; |
| 117 | int allRight = FALSE; | 117 | bool allRight = false; |
| 118 | 118 | ||
| 119 | setlocale (LC_ALL, ""); | 119 | setlocale (LC_ALL, ""); |
| 120 | bindtextdomain (PACKAGE, LOCALEDIR); | 120 | bindtextdomain (PACKAGE, LOCALEDIR); |
| @@ -151,7 +151,7 @@ int main(int argc, char **argv){ | |||
| 151 | 151 | ||
| 152 | if (value_list==NULL) | 152 | if (value_list==NULL) |
| 153 | output_message = strdup (_("missing -l parameters")); | 153 | output_message = strdup (_("missing -l parameters")); |
| 154 | else if (strtoularray(lvalue_list,value_list,",")==FALSE) | 154 | else if (! strtoularray(lvalue_list,value_list,",")) |
| 155 | output_message = strdup (_("wrong -l parameter.")); | 155 | output_message = strdup (_("wrong -l parameter.")); |
| 156 | else { | 156 | else { |
| 157 | /* -l parameters is present with only integers */ | 157 | /* -l parameters is present with only integers */ |
| @@ -224,9 +224,9 @@ int main(int argc, char **argv){ | |||
| 224 | 224 | ||
| 225 | xasprintf(&output_message,_("System Uptime - %u day(s) %u hour(s) %u minute(s) |uptime=%lu"),updays, uphours, upminutes, uptime); | 225 | xasprintf(&output_message,_("System Uptime - %u day(s) %u hour(s) %u minute(s) |uptime=%lu"),updays, uphours, upminutes, uptime); |
| 226 | 226 | ||
| 227 | if (check_critical_value==TRUE && uptime <= critical_value) | 227 | if (check_critical_value && uptime <= critical_value) |
| 228 | return_code=STATE_CRITICAL; | 228 | return_code=STATE_CRITICAL; |
| 229 | else if (check_warning_value==TRUE && uptime <= warning_value) | 229 | else if (check_warning_value && uptime <= warning_value) |
| 230 | return_code=STATE_WARNING; | 230 | return_code=STATE_WARNING; |
| 231 | else | 231 | else |
| 232 | return_code=STATE_OK; | 232 | return_code=STATE_OK; |
| @@ -261,9 +261,9 @@ int main(int argc, char **argv){ | |||
| 261 | (total_disk_space - free_disk_space) / 1073741824, warning_used_space / 1073741824, | 261 | (total_disk_space - free_disk_space) / 1073741824, warning_used_space / 1073741824, |
| 262 | critical_used_space / 1073741824, total_disk_space / 1073741824); | 262 | critical_used_space / 1073741824, total_disk_space / 1073741824); |
| 263 | 263 | ||
| 264 | if(check_critical_value==TRUE && percent_used_space >= critical_value) | 264 | if(check_critical_value && percent_used_space >= critical_value) |
| 265 | return_code=STATE_CRITICAL; | 265 | return_code=STATE_CRITICAL; |
| 266 | else if (check_warning_value==TRUE && percent_used_space >= warning_value) | 266 | else if (check_warning_value && percent_used_space >= warning_value) |
| 267 | return_code=STATE_WARNING; | 267 | return_code=STATE_WARNING; |
| 268 | else | 268 | else |
| 269 | return_code=STATE_OK; | 269 | return_code=STATE_OK; |
| @@ -285,7 +285,7 @@ int main(int argc, char **argv){ | |||
| 285 | else { | 285 | else { |
| 286 | preparelist(value_list); /* replace , between services with & to send the request */ | 286 | preparelist(value_list); /* replace , between services with & to send the request */ |
| 287 | xasprintf(&send_buffer,"%s&%u&%s&%s", req_password,(vars_to_check==CHECK_SERVICESTATE)?5:6, | 287 | xasprintf(&send_buffer,"%s&%u&%s&%s", req_password,(vars_to_check==CHECK_SERVICESTATE)?5:6, |
| 288 | (show_all==TRUE) ? "ShowAll" : "ShowFail",value_list); | 288 | (show_all) ? "ShowAll" : "ShowFail",value_list); |
| 289 | fetch_data (server_address, server_port, send_buffer); | 289 | fetch_data (server_address, server_port, send_buffer); |
| 290 | numstr = strtok(recv_buffer,"&"); | 290 | numstr = strtok(recv_buffer,"&"); |
| 291 | if (numstr == NULL) | 291 | if (numstr == NULL) |
| @@ -321,9 +321,9 @@ int main(int argc, char **argv){ | |||
| 321 | warning_used_space / 1048567, critical_used_space / 1048567, mem_commitLimit / 1048567); | 321 | warning_used_space / 1048567, critical_used_space / 1048567, mem_commitLimit / 1048567); |
| 322 | 322 | ||
| 323 | return_code=STATE_OK; | 323 | return_code=STATE_OK; |
| 324 | if(check_critical_value==TRUE && percent_used_space >= critical_value) | 324 | if(check_critical_value && percent_used_space >= critical_value) |
| 325 | return_code=STATE_CRITICAL; | 325 | return_code=STATE_CRITICAL; |
| 326 | else if (check_warning_value==TRUE && percent_used_space >= warning_value) | 326 | else if (check_warning_value && percent_used_space >= warning_value) |
| 327 | return_code=STATE_WARNING; | 327 | return_code=STATE_WARNING; |
| 328 | 328 | ||
| 329 | break; | 329 | break; |
| @@ -371,7 +371,7 @@ int main(int argc, char **argv){ | |||
| 371 | else if (isPercent) | 371 | else if (isPercent) |
| 372 | { | 372 | { |
| 373 | counter_unit = strdup ("%"); | 373 | counter_unit = strdup ("%"); |
| 374 | allRight = TRUE; | 374 | allRight = true; |
| 375 | } | 375 | } |
| 376 | 376 | ||
| 377 | if ((counter_unit != NULL) && (!allRight)) | 377 | if ((counter_unit != NULL) && (!allRight)) |
| @@ -391,7 +391,7 @@ int main(int argc, char **argv){ | |||
| 391 | if ((fmaxval == 0) && (maxval == errcvt)) | 391 | if ((fmaxval == 0) && (maxval == errcvt)) |
| 392 | output_message = strdup (_("Maximum value contains non-numbers")); | 392 | output_message = strdup (_("Maximum value contains non-numbers")); |
| 393 | else | 393 | else |
| 394 | allRight = TRUE; /* Everything is OK. */ | 394 | allRight = true; /* Everything is OK. */ |
| 395 | 395 | ||
| 396 | } | 396 | } |
| 397 | } | 397 | } |
| @@ -418,9 +418,9 @@ int main(int argc, char **argv){ | |||
| 418 | 418 | ||
| 419 | if (critical_value > warning_value) | 419 | if (critical_value > warning_value) |
| 420 | { /* Normal thresholds */ | 420 | { /* Normal thresholds */ |
| 421 | if (check_critical_value == TRUE && counter_value >= critical_value) | 421 | if (check_critical_value && counter_value >= critical_value) |
| 422 | return_code = STATE_CRITICAL; | 422 | return_code = STATE_CRITICAL; |
| 423 | else if (check_warning_value == TRUE && counter_value >= warning_value) | 423 | else if (check_warning_value && counter_value >= warning_value) |
| 424 | return_code = STATE_WARNING; | 424 | return_code = STATE_WARNING; |
| 425 | else | 425 | else |
| 426 | return_code = STATE_OK; | 426 | return_code = STATE_OK; |
| @@ -428,9 +428,9 @@ int main(int argc, char **argv){ | |||
| 428 | else | 428 | else |
| 429 | { /* inverse thresholds */ | 429 | { /* inverse thresholds */ |
| 430 | return_code = STATE_OK; | 430 | return_code = STATE_OK; |
| 431 | if (check_critical_value == TRUE && counter_value <= critical_value) | 431 | if (check_critical_value && counter_value <= critical_value) |
| 432 | return_code = STATE_CRITICAL; | 432 | return_code = STATE_CRITICAL; |
| 433 | else if (check_warning_value == TRUE && counter_value <= warning_value) | 433 | else if (check_warning_value && counter_value <= warning_value) |
| 434 | return_code = STATE_WARNING; | 434 | return_code = STATE_WARNING; |
| 435 | } | 435 | } |
| 436 | break; | 436 | break; |
| @@ -448,17 +448,17 @@ int main(int argc, char **argv){ | |||
| 448 | output_message = strdup (description); | 448 | output_message = strdup (description); |
| 449 | 449 | ||
| 450 | if (critical_value > warning_value) { /* Normal thresholds */ | 450 | if (critical_value > warning_value) { /* Normal thresholds */ |
| 451 | if(check_critical_value==TRUE && age_in_minutes >= critical_value) | 451 | if(check_critical_value && age_in_minutes >= critical_value) |
| 452 | return_code=STATE_CRITICAL; | 452 | return_code=STATE_CRITICAL; |
| 453 | else if (check_warning_value==TRUE && age_in_minutes >= warning_value) | 453 | else if (check_warning_value && age_in_minutes >= warning_value) |
| 454 | return_code=STATE_WARNING; | 454 | return_code=STATE_WARNING; |
| 455 | else | 455 | else |
| 456 | return_code=STATE_OK; | 456 | return_code=STATE_OK; |
| 457 | } | 457 | } |
| 458 | else { /* inverse thresholds */ | 458 | else { /* inverse thresholds */ |
| 459 | if(check_critical_value==TRUE && age_in_minutes <= critical_value) | 459 | if(check_critical_value && age_in_minutes <= critical_value) |
| 460 | return_code=STATE_CRITICAL; | 460 | return_code=STATE_CRITICAL; |
| 461 | else if (check_warning_value==TRUE && age_in_minutes <= warning_value) | 461 | else if (check_warning_value && age_in_minutes <= warning_value) |
| 462 | return_code=STATE_WARNING; | 462 | return_code=STATE_WARNING; |
| 463 | else | 463 | else |
| 464 | return_code=STATE_OK; | 464 | return_code=STATE_OK; |
| @@ -600,15 +600,15 @@ int process_arguments(int argc, char **argv){ | |||
| 600 | break; | 600 | break; |
| 601 | case 'w': /* warning threshold */ | 601 | case 'w': /* warning threshold */ |
| 602 | warning_value=strtoul(optarg,NULL,10); | 602 | warning_value=strtoul(optarg,NULL,10); |
| 603 | check_warning_value=TRUE; | 603 | check_warning_value=true; |
| 604 | break; | 604 | break; |
| 605 | case 'c': /* critical threshold */ | 605 | case 'c': /* critical threshold */ |
| 606 | critical_value=strtoul(optarg,NULL,10); | 606 | critical_value=strtoul(optarg,NULL,10); |
| 607 | check_critical_value=TRUE; | 607 | check_critical_value=true; |
| 608 | break; | 608 | break; |
| 609 | case 'd': /* Display select for services */ | 609 | case 'd': /* Display select for services */ |
| 610 | if (!strcmp(optarg,"SHOWALL")) | 610 | if (!strcmp(optarg,"SHOWALL")) |
| 611 | show_all = TRUE; | 611 | show_all = true; |
| 612 | break; | 612 | break; |
| 613 | case 'u': | 613 | case 'u': |
| 614 | socket_timeout_state=STATE_UNKNOWN; | 614 | socket_timeout_state=STATE_UNKNOWN; |
| @@ -646,7 +646,7 @@ void fetch_data (const char *address, int port, const char *sendb) { | |||
| 646 | die (STATE_UNKNOWN, "NSClient - %s\n",recv_buffer); | 646 | die (STATE_UNKNOWN, "NSClient - %s\n",recv_buffer); |
| 647 | } | 647 | } |
| 648 | 648 | ||
| 649 | int strtoularray(unsigned long *array, char *string, const char *delim) { | 649 | bool strtoularray(unsigned long *array, char *string, const char *delim) { |
| 650 | /* split a <delim> delimited string into a long array */ | 650 | /* split a <delim> delimited string into a long array */ |
| 651 | int idx=0; | 651 | int idx=0; |
| 652 | char *t1; | 652 | char *t1; |
| @@ -660,9 +660,9 @@ int strtoularray(unsigned long *array, char *string, const char *delim) { | |||
| 660 | array[idx]=strtoul(t1,NULL,10); | 660 | array[idx]=strtoul(t1,NULL,10); |
| 661 | idx++; | 661 | idx++; |
| 662 | } else | 662 | } else |
| 663 | return FALSE; | 663 | return false; |
| 664 | } | 664 | } |
| 665 | return TRUE; | 665 | return true; |
| 666 | } | 666 | } |
| 667 | 667 | ||
| 668 | void preparelist(char *string) { | 668 | void preparelist(char *string) { |
diff --git a/plugins/check_ntp.c b/plugins/check_ntp.c index 36146505..61b2d699 100644 --- a/plugins/check_ntp.c +++ b/plugins/check_ntp.c | |||
| @@ -40,10 +40,10 @@ const char *email = "devel@monitoring-plugins.org"; | |||
| 40 | 40 | ||
| 41 | static char *server_address=NULL; | 41 | static char *server_address=NULL; |
| 42 | static int verbose=0; | 42 | static int verbose=0; |
| 43 | static short do_offset=0; | 43 | static bool do_offset = false; |
| 44 | static char *owarn="60"; | 44 | static char *owarn="60"; |
| 45 | static char *ocrit="120"; | 45 | static char *ocrit="120"; |
| 46 | static short do_jitter=0; | 46 | static bool do_jitter = false; |
| 47 | static char *jwarn="5000"; | 47 | static char *jwarn="5000"; |
| 48 | static char *jcrit="10000"; | 48 | static char *jcrit="10000"; |
| 49 | 49 | ||
| @@ -486,7 +486,7 @@ double offset_request(const char *host, int *status){ | |||
| 486 | } | 486 | } |
| 487 | 487 | ||
| 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 reuse 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 | * packets 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]); } */ |
| @@ -513,7 +513,8 @@ setup_control_request(ntp_control_message *p, uint8_t opcode, uint16_t seq){ | |||
| 513 | 513 | ||
| 514 | /* XXX handle responses with the error bit set */ | 514 | /* XXX handle responses with the error bit set */ |
| 515 | double jitter_request(int *status){ | 515 | double 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; |
| 517 | bool syncsource_found = false; | ||
| 517 | int run=0, min_peer_sel=PEER_INCLUDED, num_selected=0, num_valid=0; | 518 | int run=0, min_peer_sel=PEER_INCLUDED, num_selected=0, num_valid=0; |
| 518 | int peers_size=0, peer_offset=0; | 519 | int peers_size=0, peer_offset=0; |
| 519 | ntp_assoc_status_pair *peers=NULL; | 520 | ntp_assoc_status_pair *peers=NULL; |
| @@ -570,7 +571,7 @@ double jitter_request(int *status){ | |||
| 570 | if (PEER_SEL(peers[i].status) >= PEER_INCLUDED){ | 571 | if (PEER_SEL(peers[i].status) >= PEER_INCLUDED){ |
| 571 | num_candidates++; | 572 | num_candidates++; |
| 572 | if(PEER_SEL(peers[i].status) >= PEER_SYNCSOURCE){ | 573 | if(PEER_SEL(peers[i].status) >= PEER_SYNCSOURCE){ |
| 573 | syncsource_found=1; | 574 | syncsource_found = true; |
| 574 | min_peer_sel=PEER_SYNCSOURCE; | 575 | min_peer_sel=PEER_SYNCSOURCE; |
| 575 | } | 576 | } |
| 576 | } | 577 | } |
| @@ -699,23 +700,23 @@ int process_arguments(int argc, char **argv){ | |||
| 699 | verbose++; | 700 | verbose++; |
| 700 | break; | 701 | break; |
| 701 | case 'w': | 702 | case 'w': |
| 702 | do_offset=1; | 703 | do_offset = true; |
| 703 | owarn = optarg; | 704 | owarn = optarg; |
| 704 | break; | 705 | break; |
| 705 | case 'c': | 706 | case 'c': |
| 706 | do_offset=1; | 707 | do_offset = true; |
| 707 | ocrit = optarg; | 708 | ocrit = optarg; |
| 708 | break; | 709 | break; |
| 709 | case 'j': | 710 | case 'j': |
| 710 | do_jitter=1; | 711 | do_jitter = true; |
| 711 | jwarn = optarg; | 712 | jwarn = optarg; |
| 712 | break; | 713 | break; |
| 713 | case 'k': | 714 | case 'k': |
| 714 | do_jitter=1; | 715 | do_jitter = true; |
| 715 | jcrit = optarg; | 716 | jcrit = optarg; |
| 716 | break; | 717 | break; |
| 717 | case 'H': | 718 | case 'H': |
| 718 | if(is_host(optarg) == FALSE) | 719 | if(!is_host(optarg)) |
| 719 | usage2(_("Invalid hostname/address"), optarg); | 720 | usage2(_("Invalid hostname/address"), optarg); |
| 720 | server_address = strdup(optarg); | 721 | server_address = strdup(optarg); |
| 721 | break; | 722 | break; |
| @@ -749,9 +750,9 @@ int process_arguments(int argc, char **argv){ | |||
| 749 | char *perfd_offset (double offset) | 750 | char *perfd_offset (double offset) |
| 750 | { | 751 | { |
| 751 | return fperfdata ("offset", offset, "s", | 752 | return fperfdata ("offset", offset, "s", |
| 752 | TRUE, offset_thresholds->warning->end, | 753 | true, offset_thresholds->warning->end, |
| 753 | TRUE, offset_thresholds->critical->end, | 754 | true, offset_thresholds->critical->end, |
| 754 | FALSE, 0, FALSE, 0); | 755 | false, 0, false, 0); |
| 755 | } | 756 | } |
| 756 | 757 | ||
| 757 | char *perfd_jitter (double jitter) | 758 | char *perfd_jitter (double jitter) |
| @@ -759,7 +760,7 @@ char *perfd_jitter (double jitter) | |||
| 759 | return fperfdata ("jitter", jitter, "s", | 760 | return fperfdata ("jitter", jitter, "s", |
| 760 | do_jitter, jitter_thresholds->warning->end, | 761 | do_jitter, jitter_thresholds->warning->end, |
| 761 | do_jitter, jitter_thresholds->critical->end, | 762 | do_jitter, jitter_thresholds->critical->end, |
| 762 | TRUE, 0, FALSE, 0); | 763 | true, 0, false, 0); |
| 763 | } | 764 | } |
| 764 | 765 | ||
| 765 | int main(int argc, char *argv[]){ | 766 | int main(int argc, char *argv[]){ |
diff --git a/plugins/check_ntp_peer.c b/plugins/check_ntp_peer.c index 49cb1008..464a9e10 100644 --- a/plugins/check_ntp_peer.c +++ b/plugins/check_ntp_peer.c | |||
| @@ -46,21 +46,20 @@ const char *email = "devel@monitoring-plugins.org"; | |||
| 46 | static char *server_address=NULL; | 46 | static char *server_address=NULL; |
| 47 | static int port=123; | 47 | static int port=123; |
| 48 | static int verbose=0; | 48 | static int verbose=0; |
| 49 | static int quiet=0; | 49 | static bool quiet = false; |
| 50 | static short do_offset=0; | ||
| 51 | static char *owarn="60"; | 50 | static char *owarn="60"; |
| 52 | static char *ocrit="120"; | 51 | static char *ocrit="120"; |
| 53 | static short do_stratum=0; | 52 | static bool do_stratum = false; |
| 54 | static char *swarn="-1:16"; | 53 | static char *swarn="-1:16"; |
| 55 | static char *scrit="-1:16"; | 54 | static char *scrit="-1:16"; |
| 56 | static short do_jitter=0; | 55 | static bool do_jitter = false; |
| 57 | static char *jwarn="-1:5000"; | 56 | static char *jwarn="-1:5000"; |
| 58 | static char *jcrit="-1:10000"; | 57 | static char *jcrit="-1:10000"; |
| 59 | static short do_truechimers=0; | 58 | static bool do_truechimers = false; |
| 60 | static char *twarn="0:"; | 59 | static char *twarn="0:"; |
| 61 | static char *tcrit="0:"; | 60 | static char *tcrit="0:"; |
| 62 | static int syncsource_found=0; | 61 | static bool syncsource_found = false; |
| 63 | static int li_alarm=0; | 62 | static bool li_alarm = false; |
| 64 | 63 | ||
| 65 | int process_arguments (int, char **); | 64 | int process_arguments (int, char **); |
| 66 | thresholds *offset_thresholds = NULL; | 65 | thresholds *offset_thresholds = NULL; |
| @@ -254,7 +253,7 @@ int ntp_request(double *offset, int *offset_result, double *jitter, int *stratum | |||
| 254 | die(STATE_CRITICAL, "NTP CRITICAL: Invalid packet received from NTP server\n"); | 253 | die(STATE_CRITICAL, "NTP CRITICAL: Invalid packet received from NTP server\n"); |
| 255 | } while (!(req.op&OP_READSTAT && ntohs(req.seq) == 1)); | 254 | } while (!(req.op&OP_READSTAT && ntohs(req.seq) == 1)); |
| 256 | 255 | ||
| 257 | if (LI(req.flags) == LI_ALARM) li_alarm = 1; | 256 | if (LI(req.flags) == LI_ALARM) li_alarm = true; |
| 258 | /* Each peer identifier is 4 bytes in the data section, which | 257 | /* Each peer identifier is 4 bytes in the data section, which |
| 259 | * we represent as a ntp_assoc_status_pair datatype. | 258 | * we represent as a ntp_assoc_status_pair datatype. |
| 260 | */ | 259 | */ |
| @@ -276,7 +275,7 @@ int ntp_request(double *offset, int *offset_result, double *jitter, int *stratum | |||
| 276 | if(PEER_SEL(peers[i].status) >= PEER_INCLUDED){ | 275 | if(PEER_SEL(peers[i].status) >= PEER_INCLUDED){ |
| 277 | num_candidates++; | 276 | num_candidates++; |
| 278 | if(PEER_SEL(peers[i].status) >= PEER_SYNCSOURCE){ | 277 | if(PEER_SEL(peers[i].status) >= PEER_SYNCSOURCE){ |
| 279 | syncsource_found=1; | 278 | syncsource_found = true; |
| 280 | min_peer_sel=PEER_SYNCSOURCE; | 279 | min_peer_sel=PEER_SYNCSOURCE; |
| 281 | } | 280 | } |
| 282 | } | 281 | } |
| @@ -440,7 +439,7 @@ int process_arguments(int argc, char **argv){ | |||
| 440 | if (argc < 2) | 439 | if (argc < 2) |
| 441 | usage ("\n"); | 440 | usage ("\n"); |
| 442 | 441 | ||
| 443 | while (1) { | 442 | while (true) { |
| 444 | c = getopt_long (argc, argv, "Vhv46qw:c:W:C:j:k:m:n:t:H:p:", longopts, &option); | 443 | c = getopt_long (argc, argv, "Vhv46qw:c:W:C:j:k:m:n:t:H:p:", longopts, &option); |
| 445 | if (c == -1 || c == EOF || c == 1) | 444 | if (c == -1 || c == EOF || c == 1) |
| 446 | break; | 445 | break; |
| @@ -458,42 +457,40 @@ int process_arguments(int argc, char **argv){ | |||
| 458 | verbose++; | 457 | verbose++; |
| 459 | break; | 458 | break; |
| 460 | case 'q': | 459 | case 'q': |
| 461 | quiet = 1; | 460 | quiet = true; |
| 462 | break; | 461 | break; |
| 463 | case 'w': | 462 | case 'w': |
| 464 | do_offset=1; | ||
| 465 | owarn = optarg; | 463 | owarn = optarg; |
| 466 | break; | 464 | break; |
| 467 | case 'c': | 465 | case 'c': |
| 468 | do_offset=1; | ||
| 469 | ocrit = optarg; | 466 | ocrit = optarg; |
| 470 | break; | 467 | break; |
| 471 | case 'W': | 468 | case 'W': |
| 472 | do_stratum=1; | 469 | do_stratum = true; |
| 473 | swarn = optarg; | 470 | swarn = optarg; |
| 474 | break; | 471 | break; |
| 475 | case 'C': | 472 | case 'C': |
| 476 | do_stratum=1; | 473 | do_stratum = true; |
| 477 | scrit = optarg; | 474 | scrit = optarg; |
| 478 | break; | 475 | break; |
| 479 | case 'j': | 476 | case 'j': |
| 480 | do_jitter=1; | 477 | do_jitter = true; |
| 481 | jwarn = optarg; | 478 | jwarn = optarg; |
| 482 | break; | 479 | break; |
| 483 | case 'k': | 480 | case 'k': |
| 484 | do_jitter=1; | 481 | do_jitter = true; |
| 485 | jcrit = optarg; | 482 | jcrit = optarg; |
| 486 | break; | 483 | break; |
| 487 | case 'm': | 484 | case 'm': |
| 488 | do_truechimers=1; | 485 | do_truechimers = true; |
| 489 | twarn = optarg; | 486 | twarn = optarg; |
| 490 | break; | 487 | break; |
| 491 | case 'n': | 488 | case 'n': |
| 492 | do_truechimers=1; | 489 | do_truechimers = true; |
| 493 | tcrit = optarg; | 490 | tcrit = optarg; |
| 494 | break; | 491 | break; |
| 495 | case 'H': | 492 | case 'H': |
| 496 | if(is_host(optarg) == FALSE) | 493 | if(!is_host(optarg)) |
| 497 | usage2(_("Invalid hostname/address"), optarg); | 494 | usage2(_("Invalid hostname/address"), optarg); |
| 498 | server_address = strdup(optarg); | 495 | server_address = strdup(optarg); |
| 499 | break; | 496 | break; |
| @@ -530,9 +527,9 @@ int process_arguments(int argc, char **argv){ | |||
| 530 | char *perfd_offset (double offset) | 527 | char *perfd_offset (double offset) |
| 531 | { | 528 | { |
| 532 | return fperfdata ("offset", offset, "s", | 529 | return fperfdata ("offset", offset, "s", |
| 533 | TRUE, offset_thresholds->warning->end, | 530 | true, offset_thresholds->warning->end, |
| 534 | TRUE, offset_thresholds->critical->end, | 531 | true, offset_thresholds->critical->end, |
| 535 | FALSE, 0, FALSE, 0); | 532 | false, 0, false, 0); |
| 536 | } | 533 | } |
| 537 | 534 | ||
| 538 | char *perfd_jitter (double jitter) | 535 | char *perfd_jitter (double jitter) |
| @@ -540,7 +537,7 @@ char *perfd_jitter (double jitter) | |||
| 540 | return fperfdata ("jitter", jitter, "", | 537 | return fperfdata ("jitter", jitter, "", |
| 541 | do_jitter, jitter_thresholds->warning->end, | 538 | do_jitter, jitter_thresholds->warning->end, |
| 542 | do_jitter, jitter_thresholds->critical->end, | 539 | do_jitter, jitter_thresholds->critical->end, |
| 543 | TRUE, 0, FALSE, 0); | 540 | true, 0, false, 0); |
| 544 | } | 541 | } |
| 545 | 542 | ||
| 546 | char *perfd_stratum (int stratum) | 543 | char *perfd_stratum (int stratum) |
| @@ -548,7 +545,7 @@ char *perfd_stratum (int stratum) | |||
| 548 | return perfdata ("stratum", stratum, "", | 545 | return perfdata ("stratum", stratum, "", |
| 549 | do_stratum, (int)stratum_thresholds->warning->end, | 546 | do_stratum, (int)stratum_thresholds->warning->end, |
| 550 | do_stratum, (int)stratum_thresholds->critical->end, | 547 | do_stratum, (int)stratum_thresholds->critical->end, |
| 551 | TRUE, 0, TRUE, 16); | 548 | true, 0, true, 16); |
| 552 | } | 549 | } |
| 553 | 550 | ||
| 554 | char *perfd_truechimers (int num_truechimers) | 551 | char *perfd_truechimers (int num_truechimers) |
| @@ -556,11 +553,11 @@ char *perfd_truechimers (int num_truechimers) | |||
| 556 | return perfdata ("truechimers", num_truechimers, "", | 553 | return perfdata ("truechimers", num_truechimers, "", |
| 557 | do_truechimers, (int)truechimer_thresholds->warning->end, | 554 | do_truechimers, (int)truechimer_thresholds->warning->end, |
| 558 | do_truechimers, (int)truechimer_thresholds->critical->end, | 555 | do_truechimers, (int)truechimer_thresholds->critical->end, |
| 559 | TRUE, 0, FALSE, 0); | 556 | true, 0, false, 0); |
| 560 | } | 557 | } |
| 561 | 558 | ||
| 562 | int main(int argc, char *argv[]){ | 559 | int main(int argc, char *argv[]){ |
| 563 | int result, offset_result, stratum, num_truechimers, oresult, jresult, sresult, tresult; | 560 | int result, offset_result, stratum, num_truechimers; |
| 564 | double offset=0, jitter=0; | 561 | double offset=0, jitter=0; |
| 565 | char *result_line, *perfdata_line; | 562 | char *result_line, *perfdata_line; |
| 566 | 563 | ||
| @@ -590,25 +587,35 @@ int main(int argc, char *argv[]){ | |||
| 590 | 587 | ||
| 591 | if(offset_result == STATE_UNKNOWN) { | 588 | if(offset_result == STATE_UNKNOWN) { |
| 592 | /* if there's no sync peer (this overrides ntp_request output): */ | 589 | /* if there's no sync peer (this overrides ntp_request output): */ |
| 593 | result = (quiet == 1 ? STATE_UNKNOWN : STATE_CRITICAL); | 590 | result = (quiet ? STATE_UNKNOWN : STATE_CRITICAL); |
| 594 | } else { | 591 | } else { |
| 595 | /* Be quiet if there's no candidates either */ | 592 | /* Be quiet if there's no candidates either */ |
| 596 | if (quiet == 1 && result == STATE_WARNING) | 593 | if (quiet && result == STATE_WARNING) |
| 597 | result = STATE_UNKNOWN; | 594 | result = STATE_UNKNOWN; |
| 598 | result = max_state_alt(result, get_status(fabs(offset), offset_thresholds)); | 595 | result = max_state_alt(result, get_status(fabs(offset), offset_thresholds)); |
| 599 | } | 596 | } |
| 600 | oresult = result; | 597 | |
| 598 | int oresult = result; | ||
| 599 | |||
| 600 | |||
| 601 | int tresult = STATE_UNKNOWN; | ||
| 601 | 602 | ||
| 602 | if(do_truechimers) { | 603 | if(do_truechimers) { |
| 603 | tresult = get_status(num_truechimers, truechimer_thresholds); | 604 | tresult = get_status(num_truechimers, truechimer_thresholds); |
| 604 | result = max_state_alt(result, tresult); | 605 | result = max_state_alt(result, tresult); |
| 605 | } | 606 | } |
| 606 | 607 | ||
| 608 | |||
| 609 | int sresult = STATE_UNKNOWN; | ||
| 610 | |||
| 607 | if(do_stratum) { | 611 | if(do_stratum) { |
| 608 | sresult = get_status(stratum, stratum_thresholds); | 612 | sresult = get_status(stratum, stratum_thresholds); |
| 609 | result = max_state_alt(result, sresult); | 613 | result = max_state_alt(result, sresult); |
| 610 | } | 614 | } |
| 611 | 615 | ||
| 616 | |||
| 617 | int jresult = STATE_UNKNOWN; | ||
| 618 | |||
| 612 | if(do_jitter) { | 619 | if(do_jitter) { |
| 613 | jresult = get_status(jitter, jitter_thresholds); | 620 | jresult = get_status(jitter, jitter_thresholds); |
| 614 | result = max_state_alt(result, jresult); | 621 | result = max_state_alt(result, jresult); |
diff --git a/plugins/check_ntp_time.c b/plugins/check_ntp_time.c index 46cc604f..b2e16556 100644 --- a/plugins/check_ntp_time.c +++ b/plugins/check_ntp_time.c | |||
| @@ -45,7 +45,7 @@ const char *email = "devel@monitoring-plugins.org"; | |||
| 45 | static char *server_address=NULL; | 45 | static char *server_address=NULL; |
| 46 | static char *port="123"; | 46 | static char *port="123"; |
| 47 | static int verbose=0; | 47 | static int verbose=0; |
| 48 | static int quiet=0; | 48 | static bool quiet = false; |
| 49 | static char *owarn="60"; | 49 | static char *owarn="60"; |
| 50 | static char *ocrit="120"; | 50 | static char *ocrit="120"; |
| 51 | static int time_offset=0; | 51 | static int time_offset=0; |
| @@ -485,7 +485,7 @@ int process_arguments(int argc, char **argv){ | |||
| 485 | verbose++; | 485 | verbose++; |
| 486 | break; | 486 | break; |
| 487 | case 'q': | 487 | case 'q': |
| 488 | quiet = 1; | 488 | quiet = true; |
| 489 | break; | 489 | break; |
| 490 | case 'w': | 490 | case 'w': |
| 491 | owarn = optarg; | 491 | owarn = optarg; |
| @@ -494,7 +494,7 @@ int process_arguments(int argc, char **argv){ | |||
| 494 | ocrit = optarg; | 494 | ocrit = optarg; |
| 495 | break; | 495 | break; |
| 496 | case 'H': | 496 | case 'H': |
| 497 | if(is_host(optarg) == FALSE) | 497 | if(!is_host(optarg)) |
| 498 | usage2(_("Invalid hostname/address"), optarg); | 498 | usage2(_("Invalid hostname/address"), optarg); |
| 499 | server_address = strdup(optarg); | 499 | server_address = strdup(optarg); |
| 500 | break; | 500 | break; |
| @@ -531,12 +531,11 @@ int process_arguments(int argc, char **argv){ | |||
| 531 | return 0; | 531 | return 0; |
| 532 | } | 532 | } |
| 533 | 533 | ||
| 534 | char *perfd_offset (double offset) | 534 | char *perfd_offset (double offset) { |
| 535 | { | ||
| 536 | return fperfdata ("offset", offset, "s", | 535 | return fperfdata ("offset", offset, "s", |
| 537 | TRUE, offset_thresholds->warning->end, | 536 | true, offset_thresholds->warning->end, |
| 538 | TRUE, offset_thresholds->critical->end, | 537 | true, offset_thresholds->critical->end, |
| 539 | FALSE, 0, FALSE, 0); | 538 | false, 0, false, 0); |
| 540 | } | 539 | } |
| 541 | 540 | ||
| 542 | int main(int argc, char *argv[]){ | 541 | int main(int argc, char *argv[]){ |
| @@ -566,7 +565,7 @@ int main(int argc, char *argv[]){ | |||
| 566 | 565 | ||
| 567 | offset = offset_request(server_address, &offset_result); | 566 | offset = offset_request(server_address, &offset_result); |
| 568 | if (offset_result == STATE_UNKNOWN) { | 567 | if (offset_result == STATE_UNKNOWN) { |
| 569 | result = (quiet == 1 ? STATE_UNKNOWN : STATE_CRITICAL); | 568 | result = ( (!quiet) ? STATE_UNKNOWN : STATE_CRITICAL); |
| 570 | } else { | 569 | } else { |
| 571 | result = get_status(fabs(offset), offset_thresholds); | 570 | result = get_status(fabs(offset), offset_thresholds); |
| 572 | } | 571 | } |
diff --git a/plugins/check_nwstat.c b/plugins/check_nwstat.c index 3c9d23e2..10c493b6 100644 --- a/plugins/check_nwstat.c +++ b/plugins/check_nwstat.c | |||
| @@ -46,6 +46,7 @@ enum checkvar { | |||
| 46 | VPF, /* check % free space on volume */ | 46 | VPF, /* check % free space on volume */ |
| 47 | VMF, /* check MB free space on volume */ | 47 | VMF, /* check MB free space on volume */ |
| 48 | VMU, /* check MB used space on volume */ | 48 | VMU, /* check MB used space on volume */ |
| 49 | VPU, /* check % used space on volume */ | ||
| 49 | VMP, /* check MB purgeable space on volume */ | 50 | VMP, /* check MB purgeable space on volume */ |
| 50 | VKF, /* check KB free space on volume */ | 51 | VKF, /* check KB free space on volume */ |
| 51 | LTCH, /* check long-term cache hit percentage */ | 52 | LTCH, /* check long-term cache hit percentage */ |
| @@ -104,9 +105,9 @@ char *nss7_name=NULL; | |||
| 104 | int server_port=PORT; | 105 | int server_port=PORT; |
| 105 | unsigned long warning_value=0L; | 106 | unsigned long warning_value=0L; |
| 106 | unsigned long critical_value=0L; | 107 | unsigned long critical_value=0L; |
| 107 | int check_warning_value=FALSE; | 108 | bool check_warning_value = false; |
| 108 | int check_critical_value=FALSE; | 109 | bool check_critical_value = false; |
| 109 | int check_netware_version=FALSE; | 110 | bool check_netware_version = false; |
| 110 | enum checkvar vars_to_check = NONE; | 111 | enum checkvar vars_to_check = NONE; |
| 111 | int sap_number=-1; | 112 | int sap_number=-1; |
| 112 | 113 | ||
| @@ -146,6 +147,8 @@ main(int argc, char **argv) { | |||
| 146 | unsigned long nss6_value=0L; | 147 | unsigned long nss6_value=0L; |
| 147 | unsigned long nss7_value=0L; | 148 | unsigned long nss7_value=0L; |
| 148 | unsigned long total_disk_space=0L; | 149 | unsigned long total_disk_space=0L; |
| 150 | unsigned long used_disk_space=0L; | ||
| 151 | unsigned long percent_used_disk_space=0L; | ||
| 149 | unsigned long purgeable_disk_space=0L; | 152 | unsigned long purgeable_disk_space=0L; |
| 150 | unsigned long non_purgeable_disk_space=0L; | 153 | unsigned long non_purgeable_disk_space=0L; |
| 151 | unsigned long percent_free_space=0; | 154 | unsigned long percent_free_space=0; |
| @@ -182,7 +185,7 @@ main(int argc, char **argv) { | |||
| 182 | my_tcp_connect (server_address, server_port, &sd); | 185 | my_tcp_connect (server_address, server_port, &sd); |
| 183 | 186 | ||
| 184 | /* get OS version string */ | 187 | /* get OS version string */ |
| 185 | if (check_netware_version==TRUE) { | 188 | if (check_netware_version) { |
| 186 | send_buffer = strdup ("S19\r\n"); | 189 | send_buffer = strdup ("S19\r\n"); |
| 187 | result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer)); | 190 | result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer)); |
| 188 | if (result!=STATE_OK) | 191 | if (result!=STATE_OK) |
| @@ -231,9 +234,9 @@ main(int argc, char **argv) { | |||
| 231 | recv_buffer[strlen(recv_buffer)-1]=0; | 234 | recv_buffer[strlen(recv_buffer)-1]=0; |
| 232 | sprintf(uptime,_("Up %s,"),recv_buffer); | 235 | sprintf(uptime,_("Up %s,"),recv_buffer); |
| 233 | 236 | ||
| 234 | if (check_critical_value==TRUE && utilization >= critical_value) | 237 | if (check_critical_value && utilization >= critical_value) |
| 235 | result=STATE_CRITICAL; | 238 | result=STATE_CRITICAL; |
| 236 | else if (check_warning_value==TRUE && utilization >= warning_value) | 239 | else if (check_warning_value && utilization >= warning_value) |
| 237 | result=STATE_WARNING; | 240 | result=STATE_WARNING; |
| 238 | 241 | ||
| 239 | xasprintf (&output_message, | 242 | xasprintf (&output_message, |
| @@ -259,9 +262,9 @@ main(int argc, char **argv) { | |||
| 259 | return result; | 262 | return result; |
| 260 | current_connections=strtoul(recv_buffer,NULL,10); | 263 | current_connections=strtoul(recv_buffer,NULL,10); |
| 261 | 264 | ||
| 262 | if (check_critical_value==TRUE && current_connections >= critical_value) | 265 | if (check_critical_value && current_connections >= critical_value) |
| 263 | result=STATE_CRITICAL; | 266 | result=STATE_CRITICAL; |
| 264 | else if (check_warning_value==TRUE && current_connections >= warning_value) | 267 | else if (check_warning_value && current_connections >= warning_value) |
| 265 | result=STATE_WARNING; | 268 | result=STATE_WARNING; |
| 266 | 269 | ||
| 267 | xasprintf (&output_message, | 270 | xasprintf (&output_message, |
| @@ -284,9 +287,9 @@ main(int argc, char **argv) { | |||
| 284 | return result; | 287 | return result; |
| 285 | cache_hits=atoi(recv_buffer); | 288 | cache_hits=atoi(recv_buffer); |
| 286 | 289 | ||
| 287 | if (check_critical_value==TRUE && cache_hits <= critical_value) | 290 | if (check_critical_value && cache_hits <= critical_value) |
| 288 | result=STATE_CRITICAL; | 291 | result=STATE_CRITICAL; |
| 289 | else if (check_warning_value==TRUE && cache_hits <= warning_value) | 292 | else if (check_warning_value && cache_hits <= warning_value) |
| 290 | result=STATE_WARNING; | 293 | result=STATE_WARNING; |
| 291 | 294 | ||
| 292 | xasprintf (&output_message, | 295 | xasprintf (&output_message, |
| @@ -306,9 +309,9 @@ main(int argc, char **argv) { | |||
| 306 | return result; | 309 | return result; |
| 307 | cache_buffers=strtoul(recv_buffer,NULL,10); | 310 | cache_buffers=strtoul(recv_buffer,NULL,10); |
| 308 | 311 | ||
| 309 | if (check_critical_value==TRUE && cache_buffers <= critical_value) | 312 | if (check_critical_value && cache_buffers <= critical_value) |
| 310 | result=STATE_CRITICAL; | 313 | result=STATE_CRITICAL; |
| 311 | else if (check_warning_value==TRUE && cache_buffers <= warning_value) | 314 | else if (check_warning_value && cache_buffers <= warning_value) |
| 312 | result=STATE_WARNING; | 315 | result=STATE_WARNING; |
| 313 | 316 | ||
| 314 | xasprintf (&output_message, | 317 | xasprintf (&output_message, |
| @@ -331,9 +334,9 @@ main(int argc, char **argv) { | |||
| 331 | return result; | 334 | return result; |
| 332 | cache_buffers=strtoul(recv_buffer,NULL,10); | 335 | cache_buffers=strtoul(recv_buffer,NULL,10); |
| 333 | 336 | ||
| 334 | if (check_critical_value==TRUE && cache_buffers >= critical_value) | 337 | if (check_critical_value && cache_buffers >= critical_value) |
| 335 | result=STATE_CRITICAL; | 338 | result=STATE_CRITICAL; |
| 336 | else if (check_warning_value==TRUE && cache_buffers >= warning_value) | 339 | else if (check_warning_value && cache_buffers >= warning_value) |
| 337 | result=STATE_WARNING; | 340 | result=STATE_WARNING; |
| 338 | 341 | ||
| 339 | xasprintf (&output_message, | 342 | xasprintf (&output_message, |
| @@ -356,9 +359,9 @@ main(int argc, char **argv) { | |||
| 356 | return result; | 359 | return result; |
| 357 | lru_time=strtoul(recv_buffer,NULL,10); | 360 | lru_time=strtoul(recv_buffer,NULL,10); |
| 358 | 361 | ||
| 359 | if (check_critical_value==TRUE && lru_time <= critical_value) | 362 | if (check_critical_value && lru_time <= critical_value) |
| 360 | result=STATE_CRITICAL; | 363 | result=STATE_CRITICAL; |
| 361 | else if (check_warning_value==TRUE && lru_time <= warning_value) | 364 | else if (check_warning_value && lru_time <= warning_value) |
| 362 | result=STATE_WARNING; | 365 | result=STATE_WARNING; |
| 363 | 366 | ||
| 364 | xasprintf (&output_message, | 367 | xasprintf (&output_message, |
| @@ -383,9 +386,9 @@ main(int argc, char **argv) { | |||
| 383 | result=STATE_CRITICAL; | 386 | result=STATE_CRITICAL; |
| 384 | } else { | 387 | } else { |
| 385 | free_disk_space=strtoul(recv_buffer,NULL,10); | 388 | free_disk_space=strtoul(recv_buffer,NULL,10); |
| 386 | if (check_critical_value==TRUE && free_disk_space <= critical_value) | 389 | if (check_critical_value && free_disk_space <= critical_value) |
| 387 | result=STATE_CRITICAL; | 390 | result=STATE_CRITICAL; |
| 388 | else if (check_warning_value==TRUE && free_disk_space <= warning_value) | 391 | else if (check_warning_value && free_disk_space <= warning_value) |
| 389 | result=STATE_WARNING; | 392 | result=STATE_WARNING; |
| 390 | xasprintf (&output_message, | 393 | xasprintf (&output_message, |
| 391 | _("%s%lu KB free on volume %s|KBFree%s=%lu;%lu;%lu;;"), | 394 | _("%s%lu KB free on volume %s|KBFree%s=%lu;%lu;%lu;;"), |
| @@ -411,9 +414,9 @@ main(int argc, char **argv) { | |||
| 411 | result=STATE_CRITICAL; | 414 | result=STATE_CRITICAL; |
| 412 | } else { | 415 | } else { |
| 413 | free_disk_space=strtoul(recv_buffer,NULL,10); | 416 | free_disk_space=strtoul(recv_buffer,NULL,10); |
| 414 | if (check_critical_value==TRUE && free_disk_space <= critical_value) | 417 | if (check_critical_value && free_disk_space <= critical_value) |
| 415 | result=STATE_CRITICAL; | 418 | result=STATE_CRITICAL; |
| 416 | else if (check_warning_value==TRUE && free_disk_space <= warning_value) | 419 | else if (check_warning_value && free_disk_space <= warning_value) |
| 417 | result=STATE_WARNING; | 420 | result=STATE_WARNING; |
| 418 | xasprintf (&output_message, | 421 | xasprintf (&output_message, |
| 419 | _("%s%lu MB free on volume %s|MBFree%s=%lu;%lu;%lu;;"), | 422 | _("%s%lu MB free on volume %s|MBFree%s=%lu;%lu;%lu;;"), |
| @@ -438,9 +441,9 @@ main(int argc, char **argv) { | |||
| 438 | result=STATE_CRITICAL; | 441 | result=STATE_CRITICAL; |
| 439 | } else { | 442 | } else { |
| 440 | free_disk_space=strtoul(recv_buffer,NULL,10); | 443 | free_disk_space=strtoul(recv_buffer,NULL,10); |
| 441 | if (check_critical_value==TRUE && free_disk_space <= critical_value) | 444 | if (check_critical_value && free_disk_space <= critical_value) |
| 442 | result=STATE_CRITICAL; | 445 | result=STATE_CRITICAL; |
| 443 | else if (check_warning_value==TRUE && free_disk_space <= warning_value) | 446 | else if (check_warning_value && free_disk_space <= warning_value) |
| 444 | result=STATE_WARNING; | 447 | result=STATE_WARNING; |
| 445 | xasprintf (&output_message, | 448 | xasprintf (&output_message, |
| 446 | _("%s%lu MB used on volume %s|MBUsed%s=%lu;%lu;%lu;;"), | 449 | _("%s%lu MB used on volume %s|MBUsed%s=%lu;%lu;%lu;;"), |
| @@ -452,7 +455,50 @@ main(int argc, char **argv) { | |||
| 452 | warning_value, | 455 | warning_value, |
| 453 | critical_value); | 456 | critical_value); |
| 454 | } | 457 | } |
| 458 | /* check % used space on volume */ | ||
| 459 | } else if (vars_to_check==VPU) { | ||
| 460 | close(sd); | ||
| 461 | my_tcp_connect (server_address, server_port, &sd); | ||
| 462 | |||
| 463 | asprintf (&send_buffer,"VMU%s\r\n",volume_name); | ||
| 464 | result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer)); | ||
| 465 | |||
| 466 | if (result!=STATE_OK) | ||
| 467 | return result; | ||
| 468 | |||
| 469 | if (!strcmp(recv_buffer,"-1\n")) { | ||
| 470 | asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name); | ||
| 471 | result=STATE_CRITICAL; | ||
| 472 | |||
| 473 | } else { | ||
| 474 | used_disk_space=strtoul(recv_buffer,NULL,10); | ||
| 475 | close(sd); | ||
| 476 | my_tcp_connect (server_address, server_port, &sd); | ||
| 477 | /* get total volume in MB */ | ||
| 478 | asprintf (&send_buffer,"VMS%s\r\n",volume_name); | ||
| 479 | result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer)); | ||
| 480 | if (result!=STATE_OK) | ||
| 481 | return result; | ||
| 482 | total_disk_space=strtoul(recv_buffer,NULL,10); | ||
| 483 | /* calculate percent used on volume */ | ||
| 484 | percent_used_disk_space=(unsigned long)(((double)used_disk_space/(double)total_disk_space)*100.0); | ||
| 455 | 485 | ||
| 486 | if (check_critical_value && percent_used_disk_space >= critical_value) | ||
| 487 | result=STATE_CRITICAL; | ||
| 488 | else if (check_warning_value && percent_used_disk_space >= warning_value) | ||
| 489 | result=STATE_WARNING; | ||
| 490 | |||
| 491 | asprintf (&output_message,_("%lu MB (%lu%%) used on volume %s - total %lu MB|Used space in percent on %s=%lu;%lu;%lu;0;100"), | ||
| 492 | used_disk_space, | ||
| 493 | percent_used_disk_space, | ||
| 494 | volume_name, | ||
| 495 | total_disk_space, | ||
| 496 | volume_name, | ||
| 497 | percent_used_disk_space, | ||
| 498 | warning_value, | ||
| 499 | critical_value | ||
| 500 | ); | ||
| 501 | } | ||
| 456 | 502 | ||
| 457 | /* check % free space on volume */ | 503 | /* check % free space on volume */ |
| 458 | } else if (vars_to_check==VPF) { | 504 | } else if (vars_to_check==VPF) { |
| @@ -485,9 +531,9 @@ main(int argc, char **argv) { | |||
| 485 | 531 | ||
| 486 | percent_free_space=(unsigned long)(((double)free_disk_space/(double)total_disk_space)*100.0); | 532 | percent_free_space=(unsigned long)(((double)free_disk_space/(double)total_disk_space)*100.0); |
| 487 | 533 | ||
| 488 | if (check_critical_value==TRUE && percent_free_space <= critical_value) | 534 | if (check_critical_value && percent_free_space <= critical_value) |
| 489 | result=STATE_CRITICAL; | 535 | result=STATE_CRITICAL; |
| 490 | else if (check_warning_value==TRUE && percent_free_space <= warning_value) | 536 | else if (check_warning_value && percent_free_space <= warning_value) |
| 491 | result=STATE_WARNING; | 537 | result=STATE_WARNING; |
| 492 | free_disk_space/=1024; | 538 | free_disk_space/=1024; |
| 493 | total_disk_space/=1024; | 539 | total_disk_space/=1024; |
| @@ -596,14 +642,14 @@ main(int argc, char **argv) { | |||
| 596 | percent_used_packet_receive_buffers=(unsigned long)(((double)used_packet_receive_buffers/(double)max_packet_receive_buffers)*100.0); | 642 | percent_used_packet_receive_buffers=(unsigned long)(((double)used_packet_receive_buffers/(double)max_packet_receive_buffers)*100.0); |
| 597 | 643 | ||
| 598 | if (vars_to_check==UPRB) { | 644 | if (vars_to_check==UPRB) { |
| 599 | if (check_critical_value==TRUE && used_packet_receive_buffers >= critical_value) | 645 | if (check_critical_value && used_packet_receive_buffers >= critical_value) |
| 600 | result=STATE_CRITICAL; | 646 | result=STATE_CRITICAL; |
| 601 | else if (check_warning_value==TRUE && used_packet_receive_buffers >= warning_value) | 647 | else if (check_warning_value && used_packet_receive_buffers >= warning_value) |
| 602 | result=STATE_WARNING; | 648 | result=STATE_WARNING; |
| 603 | } else { | 649 | } else { |
| 604 | if (check_critical_value==TRUE && percent_used_packet_receive_buffers >= critical_value) | 650 | if (check_critical_value && percent_used_packet_receive_buffers >= critical_value) |
| 605 | result=STATE_CRITICAL; | 651 | result=STATE_CRITICAL; |
| 606 | else if (check_warning_value==TRUE && percent_used_packet_receive_buffers >= warning_value) | 652 | else if (check_warning_value && percent_used_packet_receive_buffers >= warning_value) |
| 607 | result=STATE_WARNING; | 653 | result=STATE_WARNING; |
| 608 | } | 654 | } |
| 609 | 655 | ||
| @@ -625,9 +671,9 @@ main(int argc, char **argv) { | |||
| 625 | 671 | ||
| 626 | sap_entries=atoi(recv_buffer); | 672 | sap_entries=atoi(recv_buffer); |
| 627 | 673 | ||
| 628 | if (check_critical_value==TRUE && sap_entries >= critical_value) | 674 | if (check_critical_value && sap_entries >= critical_value) |
| 629 | result=STATE_CRITICAL; | 675 | result=STATE_CRITICAL; |
| 630 | else if (check_warning_value==TRUE && sap_entries >= warning_value) | 676 | else if (check_warning_value && sap_entries >= warning_value) |
| 631 | result=STATE_WARNING; | 677 | result=STATE_WARNING; |
| 632 | 678 | ||
| 633 | if (sap_number==-1) | 679 | if (sap_number==-1) |
| @@ -651,9 +697,9 @@ main(int argc, char **argv) { | |||
| 651 | result=STATE_CRITICAL; | 697 | result=STATE_CRITICAL; |
| 652 | } else { | 698 | } else { |
| 653 | purgeable_disk_space=strtoul(recv_buffer,NULL,10); | 699 | purgeable_disk_space=strtoul(recv_buffer,NULL,10); |
| 654 | if (check_critical_value==TRUE && purgeable_disk_space >= critical_value) | 700 | if (check_critical_value && purgeable_disk_space >= critical_value) |
| 655 | result=STATE_CRITICAL; | 701 | result=STATE_CRITICAL; |
| 656 | else if (check_warning_value==TRUE && purgeable_disk_space >= warning_value) | 702 | else if (check_warning_value && purgeable_disk_space >= warning_value) |
| 657 | result=STATE_WARNING; | 703 | result=STATE_WARNING; |
| 658 | xasprintf (&output_message,_("%s%lu KB purgeable on volume %s|Purge%s=%lu;%lu;%lu;;"), | 704 | xasprintf (&output_message,_("%s%lu KB purgeable on volume %s|Purge%s=%lu;%lu;%lu;;"), |
| 659 | (result==STATE_OK)?"":_("Only "), | 705 | (result==STATE_OK)?"":_("Only "), |
| @@ -677,9 +723,9 @@ main(int argc, char **argv) { | |||
| 677 | result=STATE_CRITICAL; | 723 | result=STATE_CRITICAL; |
| 678 | } else { | 724 | } else { |
| 679 | purgeable_disk_space=strtoul(recv_buffer,NULL,10); | 725 | purgeable_disk_space=strtoul(recv_buffer,NULL,10); |
| 680 | if (check_critical_value==TRUE && purgeable_disk_space >= critical_value) | 726 | if (check_critical_value && purgeable_disk_space >= critical_value) |
| 681 | result=STATE_CRITICAL; | 727 | result=STATE_CRITICAL; |
| 682 | else if (check_warning_value==TRUE && purgeable_disk_space >= warning_value) | 728 | else if (check_warning_value && purgeable_disk_space >= warning_value) |
| 683 | result=STATE_WARNING; | 729 | result=STATE_WARNING; |
| 684 | xasprintf (&output_message,_("%s%lu MB purgeable on volume %s|Purge%s=%lu;%lu;%lu;;"), | 730 | xasprintf (&output_message,_("%s%lu MB purgeable on volume %s|Purge%s=%lu;%lu;%lu;;"), |
| 685 | (result==STATE_OK)?"":_("Only "), | 731 | (result==STATE_OK)?"":_("Only "), |
| @@ -722,9 +768,9 @@ main(int argc, char **argv) { | |||
| 722 | 768 | ||
| 723 | percent_purgeable_space=(unsigned long)(((double)purgeable_disk_space/(double)total_disk_space)*100.0); | 769 | percent_purgeable_space=(unsigned long)(((double)purgeable_disk_space/(double)total_disk_space)*100.0); |
| 724 | 770 | ||
| 725 | if (check_critical_value==TRUE && percent_purgeable_space >= critical_value) | 771 | if (check_critical_value && percent_purgeable_space >= critical_value) |
| 726 | result=STATE_CRITICAL; | 772 | result=STATE_CRITICAL; |
| 727 | else if (check_warning_value==TRUE && percent_purgeable_space >= warning_value) | 773 | else if (check_warning_value && percent_purgeable_space >= warning_value) |
| 728 | result=STATE_WARNING; | 774 | result=STATE_WARNING; |
| 729 | purgeable_disk_space/=1024; | 775 | purgeable_disk_space/=1024; |
| 730 | xasprintf (&output_message,_("%lu MB (%lu%%) purgeable on volume %s|Purgeable%s=%lu;%lu;%lu;0;100"), | 776 | xasprintf (&output_message,_("%lu MB (%lu%%) purgeable on volume %s|Purgeable%s=%lu;%lu;%lu;0;100"), |
| @@ -754,9 +800,9 @@ main(int argc, char **argv) { | |||
| 754 | result=STATE_CRITICAL; | 800 | result=STATE_CRITICAL; |
| 755 | } else { | 801 | } else { |
| 756 | non_purgeable_disk_space=strtoul(recv_buffer,NULL,10); | 802 | non_purgeable_disk_space=strtoul(recv_buffer,NULL,10); |
| 757 | if (check_critical_value==TRUE && non_purgeable_disk_space >= critical_value) | 803 | if (check_critical_value && non_purgeable_disk_space >= critical_value) |
| 758 | result=STATE_CRITICAL; | 804 | result=STATE_CRITICAL; |
| 759 | else if (check_warning_value==TRUE && non_purgeable_disk_space >= warning_value) | 805 | else if (check_warning_value && non_purgeable_disk_space >= warning_value) |
| 760 | result=STATE_WARNING; | 806 | result=STATE_WARNING; |
| 761 | xasprintf (&output_message,_("%s%lu KB not yet purgeable on volume %s"),(result==STATE_OK)?"":_("Only "),non_purgeable_disk_space,volume_name); | 807 | xasprintf (&output_message,_("%s%lu KB not yet purgeable on volume %s"),(result==STATE_OK)?"":_("Only "),non_purgeable_disk_space,volume_name); |
| 762 | } | 808 | } |
| @@ -792,9 +838,9 @@ main(int argc, char **argv) { | |||
| 792 | 838 | ||
| 793 | percent_non_purgeable_space=(unsigned long)(((double)non_purgeable_disk_space/(double)total_disk_space)*100.0); | 839 | percent_non_purgeable_space=(unsigned long)(((double)non_purgeable_disk_space/(double)total_disk_space)*100.0); |
| 794 | 840 | ||
| 795 | if (check_critical_value==TRUE && percent_non_purgeable_space >= critical_value) | 841 | if (check_critical_value && percent_non_purgeable_space >= critical_value) |
| 796 | result=STATE_CRITICAL; | 842 | result=STATE_CRITICAL; |
| 797 | else if (check_warning_value==TRUE && percent_non_purgeable_space >= warning_value) | 843 | else if (check_warning_value && percent_non_purgeable_space >= warning_value) |
| 798 | result=STATE_WARNING; | 844 | result=STATE_WARNING; |
| 799 | purgeable_disk_space/=1024; | 845 | purgeable_disk_space/=1024; |
| 800 | xasprintf (&output_message,_("%lu MB (%lu%%) not yet purgeable on volume %s"),non_purgeable_disk_space,percent_non_purgeable_space,volume_name); | 846 | xasprintf (&output_message,_("%lu MB (%lu%%) not yet purgeable on volume %s"),non_purgeable_disk_space,percent_non_purgeable_space,volume_name); |
| @@ -813,9 +859,9 @@ main(int argc, char **argv) { | |||
| 813 | 859 | ||
| 814 | open_files=atoi(recv_buffer); | 860 | open_files=atoi(recv_buffer); |
| 815 | 861 | ||
| 816 | if (check_critical_value==TRUE && open_files >= critical_value) | 862 | if (check_critical_value && open_files >= critical_value) |
| 817 | result=STATE_CRITICAL; | 863 | result=STATE_CRITICAL; |
| 818 | else if (check_warning_value==TRUE && open_files >= warning_value) | 864 | else if (check_warning_value && open_files >= warning_value) |
| 819 | result=STATE_WARNING; | 865 | result=STATE_WARNING; |
| 820 | 866 | ||
| 821 | xasprintf (&output_message,_("%lu open files|Openfiles=%lu;%lu;%lu;0,0"), | 867 | xasprintf (&output_message,_("%lu open files|Openfiles=%lu;%lu;%lu;0,0"), |
| @@ -838,9 +884,9 @@ main(int argc, char **argv) { | |||
| 838 | 884 | ||
| 839 | abended_threads=atoi(recv_buffer); | 885 | abended_threads=atoi(recv_buffer); |
| 840 | 886 | ||
| 841 | if (check_critical_value==TRUE && abended_threads >= critical_value) | 887 | if (check_critical_value && abended_threads >= critical_value) |
| 842 | result=STATE_CRITICAL; | 888 | result=STATE_CRITICAL; |
| 843 | else if (check_warning_value==TRUE && abended_threads >= warning_value) | 889 | else if (check_warning_value && abended_threads >= warning_value) |
| 844 | result=STATE_WARNING; | 890 | result=STATE_WARNING; |
| 845 | 891 | ||
| 846 | xasprintf (&output_message,_("%lu abended threads|Abends=%lu;%lu;%lu;;"), | 892 | xasprintf (&output_message,_("%lu abended threads|Abends=%lu;%lu;%lu;;"), |
| @@ -872,9 +918,9 @@ main(int argc, char **argv) { | |||
| 872 | 918 | ||
| 873 | current_service_processes=atoi(recv_buffer); | 919 | current_service_processes=atoi(recv_buffer); |
| 874 | 920 | ||
| 875 | if (check_critical_value==TRUE && current_service_processes >= critical_value) | 921 | if (check_critical_value && current_service_processes >= critical_value) |
| 876 | result=STATE_CRITICAL; | 922 | result=STATE_CRITICAL; |
| 877 | else if (check_warning_value==TRUE && current_service_processes >= warning_value) | 923 | else if (check_warning_value && current_service_processes >= warning_value) |
| 878 | result=STATE_WARNING; | 924 | result=STATE_WARNING; |
| 879 | 925 | ||
| 880 | xasprintf (&output_message, | 926 | xasprintf (&output_message, |
| @@ -923,9 +969,9 @@ main(int argc, char **argv) { | |||
| 923 | return result; | 969 | return result; |
| 924 | lru_time=strtoul(recv_buffer,NULL,10); | 970 | lru_time=strtoul(recv_buffer,NULL,10); |
| 925 | 971 | ||
| 926 | if (check_critical_value==TRUE && lru_time <= critical_value) | 972 | if (check_critical_value && lru_time <= critical_value) |
| 927 | result=STATE_CRITICAL; | 973 | result=STATE_CRITICAL; |
| 928 | else if (check_warning_value==TRUE && lru_time <= warning_value) | 974 | else if (check_warning_value && lru_time <= warning_value) |
| 929 | result=STATE_WARNING; | 975 | result=STATE_WARNING; |
| 930 | xasprintf (&output_message,_("LRU sitting time = %lu seconds"),lru_time); | 976 | xasprintf (&output_message,_("LRU sitting time = %lu seconds"),lru_time); |
| 931 | 977 | ||
| @@ -942,9 +988,9 @@ main(int argc, char **argv) { | |||
| 942 | return result; | 988 | return result; |
| 943 | dirty_cache_buffers=atoi(recv_buffer); | 989 | dirty_cache_buffers=atoi(recv_buffer); |
| 944 | 990 | ||
| 945 | if (check_critical_value==TRUE && dirty_cache_buffers <= critical_value) | 991 | if (check_critical_value && dirty_cache_buffers <= critical_value) |
| 946 | result=STATE_CRITICAL; | 992 | result=STATE_CRITICAL; |
| 947 | else if (check_warning_value==TRUE && dirty_cache_buffers <= warning_value) | 993 | else if (check_warning_value && dirty_cache_buffers <= warning_value) |
| 948 | result=STATE_WARNING; | 994 | result=STATE_WARNING; |
| 949 | xasprintf (&output_message,_("Dirty cache buffers = %lu%% of the total|DCB=%lu;%lu;%lu;0;100"), | 995 | xasprintf (&output_message,_("Dirty cache buffers = %lu%% of the total|DCB=%lu;%lu;%lu;0;100"), |
| 950 | dirty_cache_buffers, | 996 | dirty_cache_buffers, |
| @@ -964,9 +1010,9 @@ main(int argc, char **argv) { | |||
| 964 | return result; | 1010 | return result; |
| 965 | total_cache_buffers=atoi(recv_buffer); | 1011 | total_cache_buffers=atoi(recv_buffer); |
| 966 | 1012 | ||
| 967 | if (check_critical_value==TRUE && total_cache_buffers <= critical_value) | 1013 | if (check_critical_value && total_cache_buffers <= critical_value) |
| 968 | result=STATE_CRITICAL; | 1014 | result=STATE_CRITICAL; |
| 969 | else if (check_warning_value==TRUE && total_cache_buffers <= warning_value) | 1015 | else if (check_warning_value && total_cache_buffers <= warning_value) |
| 970 | result=STATE_WARNING; | 1016 | result=STATE_WARNING; |
| 971 | xasprintf (&output_message,_("Total cache buffers = %lu%% of the original|TCB=%lu;%lu;%lu;0;100"), | 1017 | xasprintf (&output_message,_("Total cache buffers = %lu%% of the original|TCB=%lu;%lu;%lu;0;100"), |
| 972 | total_cache_buffers, | 1018 | total_cache_buffers, |
| @@ -1034,9 +1080,9 @@ main(int argc, char **argv) { | |||
| 1034 | result=STATE_CRITICAL; | 1080 | result=STATE_CRITICAL; |
| 1035 | } else { | 1081 | } else { |
| 1036 | nrmp_value=strtoul(recv_buffer,NULL,10); | 1082 | nrmp_value=strtoul(recv_buffer,NULL,10); |
| 1037 | if (check_critical_value==TRUE && nrmp_value <= critical_value) | 1083 | if (check_critical_value && nrmp_value <= critical_value) |
| 1038 | result=STATE_CRITICAL; | 1084 | result=STATE_CRITICAL; |
| 1039 | else if (check_warning_value==TRUE && nrmp_value <= warning_value) | 1085 | else if (check_warning_value && nrmp_value <= warning_value) |
| 1040 | result=STATE_WARNING; | 1086 | result=STATE_WARNING; |
| 1041 | xasprintf (&output_message, | 1087 | xasprintf (&output_message, |
| 1042 | _("%s is %lu|%s=%lu;%lu;%lu;;"), | 1088 | _("%s is %lu|%s=%lu;%lu;%lu;;"), |
| @@ -1060,9 +1106,9 @@ main(int argc, char **argv) { | |||
| 1060 | result=STATE_CRITICAL; | 1106 | result=STATE_CRITICAL; |
| 1061 | } else { | 1107 | } else { |
| 1062 | nrmm_value=strtoul(recv_buffer,NULL,10); | 1108 | nrmm_value=strtoul(recv_buffer,NULL,10); |
| 1063 | if (check_critical_value==TRUE && nrmm_value <= critical_value) | 1109 | if (check_critical_value && nrmm_value <= critical_value) |
| 1064 | result=STATE_CRITICAL; | 1110 | result=STATE_CRITICAL; |
| 1065 | else if (check_warning_value==TRUE && nrmm_value <= warning_value) | 1111 | else if (check_warning_value && nrmm_value <= warning_value) |
| 1066 | result=STATE_WARNING; | 1112 | result=STATE_WARNING; |
| 1067 | xasprintf (&output_message, | 1113 | xasprintf (&output_message, |
| 1068 | _("%s is %lu|%s=%lu;%lu;%lu;;"), | 1114 | _("%s is %lu|%s=%lu;%lu;%lu;;"), |
| @@ -1086,9 +1132,9 @@ main(int argc, char **argv) { | |||
| 1086 | result=STATE_CRITICAL; | 1132 | result=STATE_CRITICAL; |
| 1087 | } else { | 1133 | } else { |
| 1088 | nrms_value=strtoul(recv_buffer,NULL,10); | 1134 | nrms_value=strtoul(recv_buffer,NULL,10); |
| 1089 | if (check_critical_value==TRUE && nrms_value >= critical_value) | 1135 | if (check_critical_value && nrms_value >= critical_value) |
| 1090 | result=STATE_CRITICAL; | 1136 | result=STATE_CRITICAL; |
| 1091 | else if (check_warning_value==TRUE && nrms_value >= warning_value) | 1137 | else if (check_warning_value && nrms_value >= warning_value) |
| 1092 | result=STATE_WARNING; | 1138 | result=STATE_WARNING; |
| 1093 | xasprintf (&output_message, | 1139 | xasprintf (&output_message, |
| 1094 | _("%s is %lu|%s=%lu;%lu;%lu;;"), | 1140 | _("%s is %lu|%s=%lu;%lu;%lu;;"), |
| @@ -1112,9 +1158,9 @@ main(int argc, char **argv) { | |||
| 1112 | result=STATE_CRITICAL; | 1158 | result=STATE_CRITICAL; |
| 1113 | } else { | 1159 | } else { |
| 1114 | nss1_value=strtoul(recv_buffer,NULL,10); | 1160 | nss1_value=strtoul(recv_buffer,NULL,10); |
| 1115 | if (check_critical_value==TRUE && nss1_value >= critical_value) | 1161 | if (check_critical_value && nss1_value >= critical_value) |
| 1116 | result=STATE_CRITICAL; | 1162 | result=STATE_CRITICAL; |
| 1117 | else if (check_warning_value==TRUE && nss1_value >= warning_value) | 1163 | else if (check_warning_value && nss1_value >= warning_value) |
| 1118 | result=STATE_WARNING; | 1164 | result=STATE_WARNING; |
| 1119 | xasprintf (&output_message, | 1165 | xasprintf (&output_message, |
| 1120 | _("%s is %lu|%s=%lu;%lu;%lu;;"), | 1166 | _("%s is %lu|%s=%lu;%lu;%lu;;"), |
| @@ -1138,9 +1184,9 @@ main(int argc, char **argv) { | |||
| 1138 | result=STATE_CRITICAL; | 1184 | result=STATE_CRITICAL; |
| 1139 | } else { | 1185 | } else { |
| 1140 | nss2_value=strtoul(recv_buffer,NULL,10); | 1186 | nss2_value=strtoul(recv_buffer,NULL,10); |
| 1141 | if (check_critical_value==TRUE && nss2_value >= critical_value) | 1187 | if (check_critical_value && nss2_value >= critical_value) |
| 1142 | result=STATE_CRITICAL; | 1188 | result=STATE_CRITICAL; |
| 1143 | else if (check_warning_value==TRUE && nss2_value >= warning_value) | 1189 | else if (check_warning_value && nss2_value >= warning_value) |
| 1144 | result=STATE_WARNING; | 1190 | result=STATE_WARNING; |
| 1145 | xasprintf (&output_message, | 1191 | xasprintf (&output_message, |
| 1146 | _("%s is %lu|%s=%lu;%lu;%lu;;"), | 1192 | _("%s is %lu|%s=%lu;%lu;%lu;;"), |
| @@ -1164,9 +1210,9 @@ main(int argc, char **argv) { | |||
| 1164 | result=STATE_CRITICAL; | 1210 | result=STATE_CRITICAL; |
| 1165 | } else { | 1211 | } else { |
| 1166 | nss3_value=strtoul(recv_buffer,NULL,10); | 1212 | nss3_value=strtoul(recv_buffer,NULL,10); |
| 1167 | if (check_critical_value==TRUE && nss3_value >= critical_value) | 1213 | if (check_critical_value && nss3_value >= critical_value) |
| 1168 | result=STATE_CRITICAL; | 1214 | result=STATE_CRITICAL; |
| 1169 | else if (check_warning_value==TRUE && nss3_value >= warning_value) | 1215 | else if (check_warning_value && nss3_value >= warning_value) |
| 1170 | result=STATE_WARNING; | 1216 | result=STATE_WARNING; |
| 1171 | xasprintf (&output_message, | 1217 | xasprintf (&output_message, |
| 1172 | _("%s is %lu|%s=%lu;%lu;%lu;;"), | 1218 | _("%s is %lu|%s=%lu;%lu;%lu;;"), |
| @@ -1190,9 +1236,9 @@ main(int argc, char **argv) { | |||
| 1190 | result=STATE_CRITICAL; | 1236 | result=STATE_CRITICAL; |
| 1191 | } else { | 1237 | } else { |
| 1192 | nss4_value=strtoul(recv_buffer,NULL,10); | 1238 | nss4_value=strtoul(recv_buffer,NULL,10); |
| 1193 | if (check_critical_value==TRUE && nss4_value >= critical_value) | 1239 | if (check_critical_value && nss4_value >= critical_value) |
| 1194 | result=STATE_CRITICAL; | 1240 | result=STATE_CRITICAL; |
| 1195 | else if (check_warning_value==TRUE && nss4_value >= warning_value) | 1241 | else if (check_warning_value && nss4_value >= warning_value) |
| 1196 | result=STATE_WARNING; | 1242 | result=STATE_WARNING; |
| 1197 | xasprintf (&output_message, | 1243 | xasprintf (&output_message, |
| 1198 | _("%s is %lu|%s=%lu;%lu;%lu;;"), | 1244 | _("%s is %lu|%s=%lu;%lu;%lu;;"), |
| @@ -1216,9 +1262,9 @@ main(int argc, char **argv) { | |||
| 1216 | result=STATE_CRITICAL; | 1262 | result=STATE_CRITICAL; |
| 1217 | } else { | 1263 | } else { |
| 1218 | nss5_value=strtoul(recv_buffer,NULL,10); | 1264 | nss5_value=strtoul(recv_buffer,NULL,10); |
| 1219 | if (check_critical_value==TRUE && nss5_value >= critical_value) | 1265 | if (check_critical_value && nss5_value >= critical_value) |
| 1220 | result=STATE_CRITICAL; | 1266 | result=STATE_CRITICAL; |
| 1221 | else if (check_warning_value==TRUE && nss5_value >= warning_value) | 1267 | else if (check_warning_value && nss5_value >= warning_value) |
| 1222 | result=STATE_WARNING; | 1268 | result=STATE_WARNING; |
| 1223 | xasprintf (&output_message, | 1269 | xasprintf (&output_message, |
| 1224 | _("%s is %lu|%s=%lu;%lu;%lu;;"), | 1270 | _("%s is %lu|%s=%lu;%lu;%lu;;"), |
| @@ -1242,9 +1288,9 @@ main(int argc, char **argv) { | |||
| 1242 | result=STATE_CRITICAL; | 1288 | result=STATE_CRITICAL; |
| 1243 | } else { | 1289 | } else { |
| 1244 | nss6_value=strtoul(recv_buffer,NULL,10); | 1290 | nss6_value=strtoul(recv_buffer,NULL,10); |
| 1245 | if (check_critical_value==TRUE && nss6_value >= critical_value) | 1291 | if (check_critical_value && nss6_value >= critical_value) |
| 1246 | result=STATE_CRITICAL; | 1292 | result=STATE_CRITICAL; |
| 1247 | else if (check_warning_value==TRUE && nss6_value >= warning_value) | 1293 | else if (check_warning_value && nss6_value >= warning_value) |
| 1248 | result=STATE_WARNING; | 1294 | result=STATE_WARNING; |
| 1249 | xasprintf (&output_message, | 1295 | xasprintf (&output_message, |
| 1250 | _("%s is %lu|%s=%lu;%lu;%lu;;"), | 1296 | _("%s is %lu|%s=%lu;%lu;%lu;;"), |
| @@ -1268,9 +1314,9 @@ main(int argc, char **argv) { | |||
| 1268 | result=STATE_CRITICAL; | 1314 | result=STATE_CRITICAL; |
| 1269 | } else { | 1315 | } else { |
| 1270 | nss7_value=strtoul(recv_buffer,NULL,10); | 1316 | nss7_value=strtoul(recv_buffer,NULL,10); |
| 1271 | if (check_critical_value==TRUE && nss7_value >= critical_value) | 1317 | if (check_critical_value && nss7_value >= critical_value) |
| 1272 | result=STATE_CRITICAL; | 1318 | result=STATE_CRITICAL; |
| 1273 | else if (check_warning_value==TRUE && nss7_value >= warning_value) | 1319 | else if (check_warning_value && nss7_value >= warning_value) |
| 1274 | result=STATE_WARNING; | 1320 | result=STATE_WARNING; |
| 1275 | xasprintf (&output_message, | 1321 | xasprintf (&output_message, |
| 1276 | _("%s is %lu|%s=%lu;%lu;%lu;;"), | 1322 | _("%s is %lu|%s=%lu;%lu;%lu;;"), |
| @@ -1362,7 +1408,7 @@ int process_arguments(int argc, char **argv) { | |||
| 1362 | server_address=optarg; | 1408 | server_address=optarg; |
| 1363 | break; | 1409 | break; |
| 1364 | case 'o': /* display nos version */ | 1410 | case 'o': /* display nos version */ |
| 1365 | check_netware_version=TRUE; | 1411 | check_netware_version = true; |
| 1366 | break; | 1412 | break; |
| 1367 | case 'p': /* port */ | 1413 | case 'p': /* port */ |
| 1368 | if (is_intnonneg(optarg)) | 1414 | if (is_intnonneg(optarg)) |
| @@ -1450,6 +1496,12 @@ int process_arguments(int argc, char **argv) { | |||
| 1450 | if (!strcmp(volume_name,"")) | 1496 | if (!strcmp(volume_name,"")) |
| 1451 | volume_name = strdup ("SYS"); | 1497 | volume_name = strdup ("SYS"); |
| 1452 | } | 1498 | } |
| 1499 | else if (strncmp(optarg,"VPU",3)==0) { | ||
| 1500 | vars_to_check=VPU; | ||
| 1501 | volume_name = strdup (optarg+3); | ||
| 1502 | if (!strcmp(volume_name,"")) | ||
| 1503 | volume_name = strdup ("SYS"); | ||
| 1504 | } | ||
| 1453 | else if (strncmp(optarg,"VPP",3)==0) { | 1505 | else if (strncmp(optarg,"VPP",3)==0) { |
| 1454 | vars_to_check=VPP; | 1506 | vars_to_check=VPP; |
| 1455 | volume_name = strdup (optarg+3); | 1507 | volume_name = strdup (optarg+3); |
| @@ -1569,11 +1621,11 @@ int process_arguments(int argc, char **argv) { | |||
| 1569 | break; | 1621 | break; |
| 1570 | case 'w': /* warning threshold */ | 1622 | case 'w': /* warning threshold */ |
| 1571 | warning_value=strtoul(optarg,NULL,10); | 1623 | warning_value=strtoul(optarg,NULL,10); |
| 1572 | check_warning_value=TRUE; | 1624 | check_warning_value = true; |
| 1573 | break; | 1625 | break; |
| 1574 | case 'c': /* critical threshold */ | 1626 | case 'c': /* critical threshold */ |
| 1575 | critical_value=strtoul(optarg,NULL,10); | 1627 | critical_value=strtoul(optarg,NULL,10); |
| 1576 | check_critical_value=TRUE; | 1628 | check_critical_value = true; |
| 1577 | break; | 1629 | break; |
| 1578 | case 't': /* timeout */ | 1630 | case 't': /* timeout */ |
| 1579 | socket_timeout=atoi(optarg); | 1631 | socket_timeout=atoi(optarg); |
| @@ -1626,6 +1678,7 @@ void print_help(void) | |||
| 1626 | printf (" %s\n", _("OFILES = number of open files")); | 1678 | printf (" %s\n", _("OFILES = number of open files")); |
| 1627 | printf (" %s\n", _(" VMF<vol> = MB of free space on Volume <vol>")); | 1679 | printf (" %s\n", _(" VMF<vol> = MB of free space on Volume <vol>")); |
| 1628 | printf (" %s\n", _(" VMU<vol> = MB used space on Volume <vol>")); | 1680 | printf (" %s\n", _(" VMU<vol> = MB used space on Volume <vol>")); |
| 1681 | printf (" %s\n", _(" VPU<vol> = percent used space on Volume <vol>")); | ||
| 1629 | printf (" %s\n", _(" VMP<vol> = MB of purgeable space on Volume <vol>")); | 1682 | printf (" %s\n", _(" VMP<vol> = MB of purgeable space on Volume <vol>")); |
| 1630 | printf (" %s\n", _(" VPF<vol> = percent free space on volume <vol>")); | 1683 | printf (" %s\n", _(" VPF<vol> = percent free space on volume <vol>")); |
| 1631 | printf (" %s\n", _(" VKF<vol> = KB of free space on volume <vol>")); | 1684 | printf (" %s\n", _(" VKF<vol> = KB of free space on volume <vol>")); |
diff --git a/plugins/check_overcr.c b/plugins/check_overcr.c index 9a4d25fa..5165c828 100644 --- a/plugins/check_overcr.c +++ b/plugins/check_overcr.c | |||
| @@ -56,15 +56,15 @@ char *server_address = NULL; | |||
| 56 | int server_port = PORT; | 56 | int server_port = PORT; |
| 57 | double warning_value = 0L; | 57 | double warning_value = 0L; |
| 58 | double critical_value = 0L; | 58 | double critical_value = 0L; |
| 59 | int check_warning_value = FALSE; | 59 | bool check_warning_value = false; |
| 60 | int check_critical_value = FALSE; | 60 | bool check_critical_value = false; |
| 61 | enum checkvar vars_to_check = NONE; | 61 | enum checkvar vars_to_check = NONE; |
| 62 | int cmd_timeout = 1; | 62 | int cmd_timeout = 1; |
| 63 | 63 | ||
| 64 | int netstat_port = 0; | 64 | int netstat_port = 0; |
| 65 | char *disk_name = NULL; | 65 | char *disk_name = NULL; |
| 66 | char *process_name = NULL; | 66 | char *process_name = NULL; |
| 67 | char send_buffer[MAX_INPUT_BUFFER]; | 67 | char send_buffer[MAX_INPUT_BUFFER]; |
| 68 | 68 | ||
| 69 | int process_arguments (int, char **); | 69 | int process_arguments (int, char **); |
| 70 | void print_usage (void); | 70 | void print_usage (void); |
| @@ -77,7 +77,7 @@ main (int argc, char **argv) | |||
| 77 | char recv_buffer[MAX_INPUT_BUFFER]; | 77 | char recv_buffer[MAX_INPUT_BUFFER]; |
| 78 | char temp_buffer[MAX_INPUT_BUFFER]; | 78 | char temp_buffer[MAX_INPUT_BUFFER]; |
| 79 | char *temp_ptr = NULL; | 79 | char *temp_ptr = NULL; |
| 80 | int found_disk = FALSE; | 80 | bool found_disk = false; |
| 81 | unsigned long percent_used_disk_space = 100; | 81 | unsigned long percent_used_disk_space = 100; |
| 82 | double load; | 82 | double load; |
| 83 | double load_1min; | 83 | double load_1min; |
| @@ -155,9 +155,9 @@ main (int argc, char **argv) | |||
| 155 | break; | 155 | break; |
| 156 | } | 156 | } |
| 157 | 157 | ||
| 158 | if (check_critical_value == TRUE && (load >= critical_value)) | 158 | if (check_critical_value && (load >= critical_value)) |
| 159 | result = STATE_CRITICAL; | 159 | result = STATE_CRITICAL; |
| 160 | else if (check_warning_value == TRUE && (load >= warning_value)) | 160 | else if (check_warning_value && (load >= warning_value)) |
| 161 | result = STATE_WARNING; | 161 | result = STATE_WARNING; |
| 162 | 162 | ||
| 163 | die (result, | 163 | die (result, |
| @@ -178,7 +178,7 @@ main (int argc, char **argv) | |||
| 178 | temp_ptr = (char *) strtok (NULL, " ")) { | 178 | temp_ptr = (char *) strtok (NULL, " ")) { |
| 179 | 179 | ||
| 180 | if (!strcmp (temp_ptr, disk_name)) { | 180 | if (!strcmp (temp_ptr, disk_name)) { |
| 181 | found_disk = TRUE; | 181 | found_disk = true; |
| 182 | temp_ptr = (char *) strtok (NULL, "%"); | 182 | temp_ptr = (char *) strtok (NULL, "%"); |
| 183 | if (temp_ptr == NULL) | 183 | if (temp_ptr == NULL) |
| 184 | die (STATE_CRITICAL, _("Invalid response from server\n")); | 184 | die (STATE_CRITICAL, _("Invalid response from server\n")); |
| @@ -191,14 +191,14 @@ main (int argc, char **argv) | |||
| 191 | } | 191 | } |
| 192 | 192 | ||
| 193 | /* error if we couldn't find the info for the disk */ | 193 | /* error if we couldn't find the info for the disk */ |
| 194 | if (found_disk == FALSE) | 194 | if (!found_disk) |
| 195 | die (STATE_CRITICAL, | 195 | die (STATE_CRITICAL, |
| 196 | "CRITICAL - Disk '%s' non-existent or not mounted", | 196 | "CRITICAL - Disk '%s' non-existent or not mounted", |
| 197 | disk_name); | 197 | disk_name); |
| 198 | 198 | ||
| 199 | if (check_critical_value == TRUE && (percent_used_disk_space >= critical_value)) | 199 | if (check_critical_value && (percent_used_disk_space >= critical_value)) |
| 200 | result = STATE_CRITICAL; | 200 | result = STATE_CRITICAL; |
| 201 | else if (check_warning_value == TRUE && (percent_used_disk_space >= warning_value)) | 201 | else if (check_warning_value && (percent_used_disk_space >= warning_value)) |
| 202 | result = STATE_WARNING; | 202 | result = STATE_WARNING; |
| 203 | 203 | ||
| 204 | die (result, "Disk %s - %lu%% used on %s", state_text(result), percent_used_disk_space, disk_name); | 204 | die (result, "Disk %s - %lu%% used on %s", state_text(result), percent_used_disk_space, disk_name); |
| @@ -212,9 +212,9 @@ main (int argc, char **argv) | |||
| 212 | else | 212 | else |
| 213 | port_connections = strtod (recv_buffer, NULL); | 213 | port_connections = strtod (recv_buffer, NULL); |
| 214 | 214 | ||
| 215 | if (check_critical_value == TRUE && (port_connections >= critical_value)) | 215 | if (check_critical_value && (port_connections >= critical_value)) |
| 216 | result = STATE_CRITICAL; | 216 | result = STATE_CRITICAL; |
| 217 | else if (check_warning_value == TRUE && (port_connections >= warning_value)) | 217 | else if (check_warning_value && (port_connections >= warning_value)) |
| 218 | result = STATE_WARNING; | 218 | result = STATE_WARNING; |
| 219 | 219 | ||
| 220 | die (result, | 220 | die (result, |
| @@ -241,9 +241,9 @@ main (int argc, char **argv) | |||
| 241 | else | 241 | else |
| 242 | processes = strtod (temp_ptr, NULL); | 242 | processes = strtod (temp_ptr, NULL); |
| 243 | 243 | ||
| 244 | if (check_critical_value == TRUE && (processes >= critical_value)) | 244 | if (check_critical_value && (processes >= critical_value)) |
| 245 | result = STATE_CRITICAL; | 245 | result = STATE_CRITICAL; |
| 246 | else if (check_warning_value == TRUE && (processes >= warning_value)) | 246 | else if (check_warning_value && (processes >= warning_value)) |
| 247 | result = STATE_WARNING; | 247 | result = STATE_WARNING; |
| 248 | 248 | ||
| 249 | die (result, | 249 | die (result, |
| @@ -262,9 +262,9 @@ main (int argc, char **argv) | |||
| 262 | uptime_raw_hours = strtod (recv_buffer, NULL); | 262 | uptime_raw_hours = strtod (recv_buffer, NULL); |
| 263 | uptime_raw_minutes = (unsigned long) (uptime_raw_hours * 60.0); | 263 | uptime_raw_minutes = (unsigned long) (uptime_raw_hours * 60.0); |
| 264 | 264 | ||
| 265 | if (check_critical_value == TRUE && (uptime_raw_minutes <= critical_value)) | 265 | if (check_critical_value && (uptime_raw_minutes <= critical_value)) |
| 266 | result = STATE_CRITICAL; | 266 | result = STATE_CRITICAL; |
| 267 | else if (check_warning_value == TRUE && (uptime_raw_minutes <= warning_value)) | 267 | else if (check_warning_value && (uptime_raw_minutes <= warning_value)) |
| 268 | result = STATE_WARNING; | 268 | result = STATE_WARNING; |
| 269 | 269 | ||
| 270 | uptime_days = uptime_raw_minutes / 1440; | 270 | uptime_days = uptime_raw_minutes / 1440; |
| @@ -388,11 +388,11 @@ process_arguments (int argc, char **argv) | |||
| 388 | break; | 388 | break; |
| 389 | case 'w': /* warning threshold */ | 389 | case 'w': /* warning threshold */ |
| 390 | warning_value = strtoul (optarg, NULL, 10); | 390 | warning_value = strtoul (optarg, NULL, 10); |
| 391 | check_warning_value = TRUE; | 391 | check_warning_value = true; |
| 392 | break; | 392 | break; |
| 393 | case 'c': /* critical threshold */ | 393 | case 'c': /* critical threshold */ |
| 394 | critical_value = strtoul (optarg, NULL, 10); | 394 | critical_value = strtoul (optarg, NULL, 10); |
| 395 | check_critical_value = TRUE; | 395 | check_critical_value = true; |
| 396 | break; | 396 | break; |
| 397 | case 't': /* timeout */ | 397 | case 't': /* timeout */ |
| 398 | socket_timeout = atoi (optarg); | 398 | socket_timeout = atoi (optarg); |
diff --git a/plugins/check_pgsql.c b/plugins/check_pgsql.c index 61990335..94d589e1 100644 --- a/plugins/check_pgsql.c +++ b/plugins/check_pgsql.c | |||
| @@ -69,7 +69,7 @@ int process_arguments (int, char **); | |||
| 69 | int validate_arguments (void); | 69 | int validate_arguments (void); |
| 70 | void print_usage (void); | 70 | void print_usage (void); |
| 71 | void print_help (void); | 71 | void print_help (void); |
| 72 | int is_pg_logname (char *); | 72 | bool is_pg_logname (char *); |
| 73 | int do_query (PGconn *, char *); | 73 | int do_query (PGconn *, char *); |
| 74 | 74 | ||
| 75 | char *pghost = NULL; /* host name of the backend server */ | 75 | char *pghost = NULL; /* host name of the backend server */ |
| @@ -252,7 +252,7 @@ main (int argc, char **argv) | |||
| 252 | printf (_(" %s - database %s (%f sec.)|%s\n"), | 252 | printf (_(" %s - database %s (%f sec.)|%s\n"), |
| 253 | state_text(status), dbName, elapsed_time, | 253 | state_text(status), dbName, elapsed_time, |
| 254 | fperfdata("time", elapsed_time, "s", | 254 | fperfdata("time", elapsed_time, "s", |
| 255 | !!(twarn > 0.0), twarn, !!(tcrit > 0.0), tcrit, TRUE, 0, FALSE,0)); | 255 | !!(twarn > 0.0), twarn, !!(tcrit > 0.0), tcrit, true, 0, false,0)); |
| 256 | 256 | ||
| 257 | if (pgquery) | 257 | if (pgquery) |
| 258 | query_status = do_query (conn, pgquery); | 258 | query_status = do_query (conn, pgquery); |
| @@ -393,7 +393,7 @@ process_arguments (int argc, char **argv) | |||
| 393 | 393 | ||
| 394 | <para>&PROTO_validate_arguments;</para> | 394 | <para>&PROTO_validate_arguments;</para> |
| 395 | 395 | ||
| 396 | <para>Given a database name, this function returns TRUE if the string | 396 | <para>Given a database name, this function returns true if the string |
| 397 | is a valid PostgreSQL database name, and returns false if it is | 397 | is a valid PostgreSQL database name, and returns false if it is |
| 398 | not.</para> | 398 | not.</para> |
| 399 | 399 | ||
| @@ -424,7 +424,7 @@ function prototype | |||
| 424 | 424 | ||
| 425 | <para>&PROTO_is_pg_logname;</para> | 425 | <para>&PROTO_is_pg_logname;</para> |
| 426 | 426 | ||
| 427 | <para>Given a username, this function returns TRUE if the string is a | 427 | <para>Given a username, this function returns true if the string is a |
| 428 | valid PostgreSQL username, and returns false if it is not. Valid PostgreSQL | 428 | valid PostgreSQL username, and returns false if it is not. Valid PostgreSQL |
| 429 | usernames are less than &NAMEDATALEN; characters long and consist of | 429 | usernames are less than &NAMEDATALEN; characters long and consist of |
| 430 | letters, numbers, dashes, and underscores, plus possibly some other | 430 | letters, numbers, dashes, and underscores, plus possibly some other |
| @@ -439,12 +439,10 @@ should be added.</para> | |||
| 439 | 439 | ||
| 440 | 440 | ||
| 441 | 441 | ||
| 442 | int | 442 | bool is_pg_logname (char *username) { |
| 443 | is_pg_logname (char *username) | ||
| 444 | { | ||
| 445 | if (strlen (username) > NAMEDATALEN - 1) | 443 | if (strlen (username) > NAMEDATALEN - 1) |
| 446 | return (FALSE); | 444 | return (false); |
| 447 | return (TRUE); | 445 | return (true); |
| 448 | } | 446 | } |
| 449 | 447 | ||
| 450 | /****************************************************************************** | 448 | /****************************************************************************** |
diff --git a/plugins/check_ping.c b/plugins/check_ping.c index 741f732e..6e162e6a 100644 --- a/plugins/check_ping.c +++ b/plugins/check_ping.c | |||
| @@ -55,7 +55,7 @@ int error_scan (char buf[MAX_INPUT_BUFFER], const char *addr); | |||
| 55 | void print_usage (void); | 55 | void print_usage (void); |
| 56 | void print_help (void); | 56 | void print_help (void); |
| 57 | 57 | ||
| 58 | int display_html = FALSE; | 58 | bool display_html = false; |
| 59 | int wpl = UNKNOWN_PACKET_LOSS; | 59 | int wpl = UNKNOWN_PACKET_LOSS; |
| 60 | int cpl = UNKNOWN_PACKET_LOSS; | 60 | int cpl = UNKNOWN_PACKET_LOSS; |
| 61 | float wrta = UNKNOWN_TRIP_TIME; | 61 | float wrta = UNKNOWN_TRIP_TIME; |
| @@ -153,7 +153,7 @@ main (int argc, char **argv) | |||
| 153 | if (n_addresses > 1 && this_result != STATE_UNKNOWN) | 153 | if (n_addresses > 1 && this_result != STATE_UNKNOWN) |
| 154 | die (STATE_OK, "%s is alive\n", addresses[i]); | 154 | die (STATE_OK, "%s is alive\n", addresses[i]); |
| 155 | 155 | ||
| 156 | if (display_html == TRUE) | 156 | if (display_html == true) |
| 157 | printf ("<A HREF='%s/traceroute.cgi?%s'>", CGIURL, addresses[i]); | 157 | printf ("<A HREF='%s/traceroute.cgi?%s'>", CGIURL, addresses[i]); |
| 158 | if (pl == 100) | 158 | if (pl == 100) |
| 159 | printf (_("PING %s - %sPacket loss = %d%%"), state_text (this_result), warn_text, | 159 | printf (_("PING %s - %sPacket loss = %d%%"), state_text (this_result), warn_text, |
| @@ -161,22 +161,22 @@ main (int argc, char **argv) | |||
| 161 | else | 161 | else |
| 162 | printf (_("PING %s - %sPacket loss = %d%%, RTA = %2.2f ms"), | 162 | printf (_("PING %s - %sPacket loss = %d%%, RTA = %2.2f ms"), |
| 163 | state_text (this_result), warn_text, pl, rta); | 163 | state_text (this_result), warn_text, pl, rta); |
| 164 | if (display_html == TRUE) | 164 | if (display_html == true) |
| 165 | printf ("</A>"); | 165 | printf ("</A>"); |
| 166 | 166 | ||
| 167 | /* Print performance data */ | 167 | /* Print performance data */ |
| 168 | if (pl != 100) { | 168 | if (pl != 100) { |
| 169 | printf("|%s", fperfdata ("rta", (double) rta, "ms", | 169 | printf("|%s", fperfdata ("rta", (double) rta, "ms", |
| 170 | wrta>0?TRUE:FALSE, wrta, | 170 | wrta>0?true:false, wrta, |
| 171 | crta>0?TRUE:FALSE, crta, | 171 | crta>0?true:false, crta, |
| 172 | TRUE, 0, FALSE, 0)); | 172 | true, 0, false, 0)); |
| 173 | } else { | 173 | } else { |
| 174 | printf("| rta=U;%f;%f;;", wrta, crta); | 174 | printf("| rta=U;%f;%f;;", wrta, crta); |
| 175 | } | 175 | } |
| 176 | printf(" %s\n", perfdata ("pl", (long) pl, "%", | 176 | printf(" %s\n", perfdata ("pl", (long) pl, "%", |
| 177 | wpl>0?TRUE:FALSE, wpl, | 177 | wpl>0?true:false, wpl, |
| 178 | cpl>0?TRUE:FALSE, cpl, | 178 | cpl>0?true:false, cpl, |
| 179 | TRUE, 0, FALSE, 0)); | 179 | true, 0, false, 0)); |
| 180 | 180 | ||
| 181 | if (verbose >= 2) | 181 | if (verbose >= 2) |
| 182 | printf ("%f:%d%% %f:%d%%\n", wrta, wpl, crta, cpl); | 182 | printf ("%f:%d%% %f:%d%%\n", wrta, wpl, crta, cpl); |
| @@ -278,10 +278,10 @@ process_arguments (int argc, char **argv) | |||
| 278 | usage2 (_("<max_packets> (%s) must be a non-negative number\n"), optarg); | 278 | usage2 (_("<max_packets> (%s) must be a non-negative number\n"), optarg); |
| 279 | break; | 279 | break; |
| 280 | case 'n': /* no HTML */ | 280 | case 'n': /* no HTML */ |
| 281 | display_html = FALSE; | 281 | display_html = false; |
| 282 | break; | 282 | break; |
| 283 | case 'L': /* show HTML */ | 283 | case 'L': /* show HTML */ |
| 284 | display_html = TRUE; | 284 | display_html = true; |
| 285 | break; | 285 | break; |
| 286 | case 'c': | 286 | case 'c': |
| 287 | get_threshold (optarg, &crta, &cpl); | 287 | get_threshold (optarg, &crta, &cpl); |
| @@ -297,7 +297,7 @@ process_arguments (int argc, char **argv) | |||
| 297 | return validate_arguments (); | 297 | return validate_arguments (); |
| 298 | 298 | ||
| 299 | if (addresses[0] == NULL) { | 299 | if (addresses[0] == NULL) { |
| 300 | if (is_host (argv[c]) == FALSE) { | 300 | if (!is_host (argv[c])) { |
| 301 | usage2 (_("Invalid hostname/address"), argv[c]); | 301 | usage2 (_("Invalid hostname/address"), argv[c]); |
| 302 | } else { | 302 | } else { |
| 303 | addresses[0] = argv[c++]; | 303 | addresses[0] = argv[c++]; |
| @@ -308,7 +308,7 @@ process_arguments (int argc, char **argv) | |||
| 308 | } | 308 | } |
| 309 | 309 | ||
| 310 | if (wpl == UNKNOWN_PACKET_LOSS) { | 310 | if (wpl == UNKNOWN_PACKET_LOSS) { |
| 311 | if (is_intpercent (argv[c]) == FALSE) { | 311 | if (!is_intpercent (argv[c])) { |
| 312 | printf (_("<wpl> (%s) must be an integer percentage\n"), argv[c]); | 312 | printf (_("<wpl> (%s) must be an integer percentage\n"), argv[c]); |
| 313 | return ERROR; | 313 | return ERROR; |
| 314 | } else { | 314 | } else { |
| @@ -319,7 +319,7 @@ process_arguments (int argc, char **argv) | |||
| 319 | } | 319 | } |
| 320 | 320 | ||
| 321 | if (cpl == UNKNOWN_PACKET_LOSS) { | 321 | if (cpl == UNKNOWN_PACKET_LOSS) { |
| 322 | if (is_intpercent (argv[c]) == FALSE) { | 322 | if (!is_intpercent (argv[c])) { |
| 323 | printf (_("<cpl> (%s) must be an integer percentage\n"), argv[c]); | 323 | printf (_("<cpl> (%s) must be an integer percentage\n"), argv[c]); |
| 324 | return ERROR; | 324 | return ERROR; |
| 325 | } else { | 325 | } else { |
| @@ -420,7 +420,7 @@ validate_arguments () | |||
| 420 | timeout_interval = (int)max_seconds; | 420 | timeout_interval = (int)max_seconds; |
| 421 | 421 | ||
| 422 | for (i=0; i<n_addresses; i++) { | 422 | for (i=0; i<n_addresses; i++) { |
| 423 | if (is_host(addresses[i]) == FALSE) | 423 | if (!is_host(addresses[i])) |
| 424 | usage2 (_("Invalid hostname/address"), addresses[i]); | 424 | usage2 (_("Invalid hostname/address"), addresses[i]); |
| 425 | } | 425 | } |
| 426 | 426 | ||
diff --git a/plugins/check_procs.c b/plugins/check_procs.c index c17c6996..1fcbd981 100644 --- a/plugins/check_procs.c +++ b/plugins/check_procs.c | |||
| @@ -14,6 +14,9 @@ | |||
| 14 | * defaults to number of processes. Search filters can be applied to limit | 14 | * defaults to number of processes. Search filters can be applied to limit |
| 15 | * the processes to check. | 15 | * the processes to check. |
| 16 | * | 16 | * |
| 17 | * The parent process, check_procs itself and any child process of | ||
| 18 | * check_procs (ps) are excluded from any checks to prevent false positives. | ||
| 19 | * | ||
| 17 | * | 20 | * |
| 18 | * This program is free software: you can redistribute it and/or modify | 21 | * This program is free software: you can redistribute it and/or modify |
| 19 | * it under the terms of the GNU General Public License as published by | 22 | * it under the terms of the GNU General Public License as published by |
| @@ -153,7 +156,7 @@ main (int argc, char **argv) | |||
| 153 | int expected_cols = PS_COLS - 1; | 156 | int expected_cols = PS_COLS - 1; |
| 154 | int warn = 0; /* number of processes in warn state */ | 157 | int warn = 0; /* number of processes in warn state */ |
| 155 | int crit = 0; /* number of processes in crit state */ | 158 | int crit = 0; /* number of processes in crit state */ |
| 156 | int i = 0, j = 0; | 159 | int i = 0; |
| 157 | int result = STATE_UNKNOWN; | 160 | int result = STATE_UNKNOWN; |
| 158 | int ret = 0; | 161 | int ret = 0; |
| 159 | output chld_out, chld_err; | 162 | output chld_out, chld_err; |
| @@ -207,7 +210,7 @@ main (int argc, char **argv) | |||
| 207 | } | 210 | } |
| 208 | 211 | ||
| 209 | /* flush first line: j starts at 1 */ | 212 | /* flush first line: j starts at 1 */ |
| 210 | for (j = 1; j < chld_out.lines; j++) { | 213 | for (size_t j = 1; j < chld_out.lines; j++) { |
| 211 | input_line = chld_out.line[j]; | 214 | input_line = chld_out.line[j]; |
| 212 | 215 | ||
| 213 | if (verbose >= 3) | 216 | if (verbose >= 3) |
| @@ -241,8 +244,9 @@ main (int argc, char **argv) | |||
| 241 | 244 | ||
| 242 | /* Ignore self */ | 245 | /* Ignore self */ |
| 243 | if ((usepid && mypid == procpid) || | 246 | if ((usepid && mypid == procpid) || |
| 244 | (!usepid && ((ret = stat_exe(procpid, &statbuf) != -1) && statbuf.st_dev == mydev && statbuf.st_ino == myino) || | 247 | ( ((!usepid) && ((ret = stat_exe(procpid, &statbuf) != -1) && statbuf.st_dev == mydev && statbuf.st_ino == myino)) || |
| 245 | (ret == -1 && errno == ENOENT))) { | 248 | (ret == -1 && errno == ENOENT)) |
| 249 | ) { | ||
| 246 | if (verbose >= 3) | 250 | if (verbose >= 3) |
| 247 | printf("not considering - is myself or gone\n"); | 251 | printf("not considering - is myself or gone\n"); |
| 248 | continue; | 252 | continue; |
| @@ -254,6 +258,13 @@ main (int argc, char **argv) | |||
| 254 | continue; | 258 | continue; |
| 255 | } | 259 | } |
| 256 | 260 | ||
| 261 | /* Ignore our own children */ | ||
| 262 | if (procppid == mypid) { | ||
| 263 | if (verbose >= 3) | ||
| 264 | printf("not considering - is our child\n"); | ||
| 265 | continue; | ||
| 266 | } | ||
| 267 | |||
| 257 | /* Ignore excluded processes by name */ | 268 | /* Ignore excluded processes by name */ |
| 258 | if(options & EXCLUDE_PROGS) { | 269 | if(options & EXCLUDE_PROGS) { |
| 259 | int found = 0; | 270 | int found = 0; |
| @@ -727,18 +738,23 @@ convert_to_seconds(char *etime) { | |||
| 727 | void | 738 | void |
| 728 | print_help (void) | 739 | print_help (void) |
| 729 | { | 740 | { |
| 730 | print_revision (progname, NP_VERSION); | 741 | print_revision (progname, NP_VERSION); |
| 731 | 742 | ||
| 732 | printf ("Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>\n"); | 743 | printf ("Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>\n"); |
| 733 | printf (COPYRIGHT, copyright, email); | 744 | printf (COPYRIGHT, copyright, email); |
| 734 | 745 | ||
| 735 | printf ("%s\n", _("Checks all processes and generates WARNING or CRITICAL states if the specified")); | 746 | printf ("%s\n", _("Checks all processes and generates WARNING or CRITICAL states if the specified")); |
| 736 | printf ("%s\n", _("metric is outside the required threshold ranges. The metric defaults to number")); | 747 | printf ("%s\n", _("metric is outside the required threshold ranges. The metric defaults to number")); |
| 737 | printf ("%s\n", _("of processes. Search filters can be applied to limit the processes to check.")); | 748 | printf ("%s\n", _("of processes. Search filters can be applied to limit the processes to check.")); |
| 738 | 749 | ||
| 739 | printf ("\n\n"); | 750 | printf ("\n\n"); |
| 740 | 751 | ||
| 741 | print_usage (); | 752 | printf ("%s\n", _("The parent process, check_procs itself and any child process of check_procs (ps)")); |
| 753 | printf ("%s\n", _("are excluded from any checks to prevent false positives.")); | ||
| 754 | |||
| 755 | printf ("\n\n"); | ||
| 756 | |||
| 757 | print_usage (); | ||
| 742 | 758 | ||
| 743 | printf (UT_HELP_VRSN); | 759 | printf (UT_HELP_VRSN); |
| 744 | printf (UT_EXTRA_OPTS); | 760 | printf (UT_EXTRA_OPTS); |
| @@ -754,11 +770,11 @@ print_help (void) | |||
| 754 | printf (" %s\n", _("CPU - percentage CPU")); | 770 | printf (" %s\n", _("CPU - percentage CPU")); |
| 755 | /* only linux etime is support currently */ | 771 | /* only linux etime is support currently */ |
| 756 | #if defined( __linux__ ) | 772 | #if defined( __linux__ ) |
| 757 | printf (" %s\n", _("ELAPSED - time elapsed in seconds")); | 773 | printf (" %s\n", _("ELAPSED - time elapsed in seconds")); |
| 758 | #endif /* defined(__linux__) */ | 774 | #endif /* defined(__linux__) */ |
| 759 | printf (UT_PLUG_TIMEOUT, DEFAULT_SOCKET_TIMEOUT); | 775 | printf (UT_PLUG_TIMEOUT, DEFAULT_SOCKET_TIMEOUT); |
| 760 | 776 | ||
| 761 | printf (" %s\n", "-v, --verbose"); | 777 | printf (" %s\n", "-v, --verbose"); |
| 762 | printf (" %s\n", _("Extra information. Up to 3 verbosity levels")); | 778 | printf (" %s\n", _("Extra information. Up to 3 verbosity levels")); |
| 763 | 779 | ||
| 764 | printf (" %s\n", "-T, --traditional"); | 780 | printf (" %s\n", "-T, --traditional"); |
| @@ -776,7 +792,7 @@ print_help (void) | |||
| 776 | printf (" %s\n", _("Only scan for processes with VSZ higher than indicated.")); | 792 | printf (" %s\n", _("Only scan for processes with VSZ higher than indicated.")); |
| 777 | printf (" %s\n", "-r, --rss=RSS"); | 793 | printf (" %s\n", "-r, --rss=RSS"); |
| 778 | printf (" %s\n", _("Only scan for processes with RSS higher than indicated.")); | 794 | printf (" %s\n", _("Only scan for processes with RSS higher than indicated.")); |
| 779 | printf (" %s\n", "-P, --pcpu=PCPU"); | 795 | printf (" %s\n", "-P, --pcpu=PCPU"); |
| 780 | printf (" %s\n", _("Only scan for processes with PCPU higher than indicated.")); | 796 | printf (" %s\n", _("Only scan for processes with PCPU higher than indicated.")); |
| 781 | printf (" %s\n", "-u, --user=USER"); | 797 | printf (" %s\n", "-u, --user=USER"); |
| 782 | printf (" %s\n", _("Only scan for processes with user name or ID indicated.")); | 798 | printf (" %s\n", _("Only scan for processes with user name or ID indicated.")); |
| @@ -791,19 +807,19 @@ print_help (void) | |||
| 791 | printf (" %s\n", "-k, --no-kthreads"); | 807 | printf (" %s\n", "-k, --no-kthreads"); |
| 792 | printf (" %s\n", _("Only scan for non kernel threads (works on Linux only).")); | 808 | printf (" %s\n", _("Only scan for non kernel threads (works on Linux only).")); |
| 793 | 809 | ||
| 794 | printf(_("\n\ | 810 | printf(_("\n\ |
| 795 | RANGEs are specified 'min:max' or 'min:' or ':max' (or 'max'). If\n\ | 811 | RANGEs are specified 'min:max' or 'min:' or ':max' (or 'max'). If\n\ |
| 796 | specified 'max:min', a warning status will be generated if the\n\ | 812 | specified 'max:min', a warning status will be generated if the\n\ |
| 797 | count is inside the specified range\n\n")); | 813 | count is inside the specified range\n\n")); |
| 798 | 814 | ||
| 799 | printf(_("\ | 815 | printf(_("\ |
| 800 | This plugin checks the number of currently running processes and\n\ | 816 | This plugin checks the number of currently running processes and\n\ |
| 801 | generates WARNING or CRITICAL states if the process count is outside\n\ | 817 | generates WARNING or CRITICAL states if the process count is outside\n\ |
| 802 | the specified threshold ranges. The process count can be filtered by\n\ | 818 | the specified threshold ranges. The process count can be filtered by\n\ |
| 803 | process owner, parent process PID, current state (e.g., 'Z'), or may\n\ | 819 | process owner, parent process PID, current state (e.g., 'Z'), or may\n\ |
| 804 | be the total number of running processes\n\n")); | 820 | be the total number of running processes\n\n")); |
| 805 | 821 | ||
| 806 | printf ("%s\n", _("Examples:")); | 822 | printf ("%s\n", _("Examples:")); |
| 807 | printf (" %s\n", "check_procs -w 2:2 -c 2:1024 -C portsentry"); | 823 | printf (" %s\n", "check_procs -w 2:2 -c 2:1024 -C portsentry"); |
| 808 | printf (" %s\n", _("Warning if not two processes with command name portsentry.")); | 824 | printf (" %s\n", _("Warning if not two processes with command name portsentry.")); |
| 809 | printf (" %s\n\n", _("Critical if < 2 or > 1024 processes")); | 825 | printf (" %s\n\n", _("Critical if < 2 or > 1024 processes")); |
| @@ -820,14 +836,14 @@ be the total number of running processes\n\n")); | |||
| 820 | printf (" %s\n", "check_procs -w 10 -c 20 --metric=CPU"); | 836 | printf (" %s\n", "check_procs -w 10 -c 20 --metric=CPU"); |
| 821 | printf (" %s\n", _("Alert if CPU of any processes over 10\% or 20\%")); | 837 | printf (" %s\n", _("Alert if CPU of any processes over 10\% or 20\%")); |
| 822 | 838 | ||
| 823 | printf (UT_SUPPORT); | 839 | printf (UT_SUPPORT); |
| 824 | } | 840 | } |
| 825 | 841 | ||
| 826 | void | 842 | void |
| 827 | print_usage (void) | 843 | print_usage (void) |
| 828 | { | 844 | { |
| 829 | printf ("%s\n", _("Usage:")); | 845 | printf ("%s\n", _("Usage:")); |
| 830 | printf ("%s -w <range> -c <range> [-m metric] [-s state] [-p ppid]\n", progname); | 846 | printf ("%s -w <range> -c <range> [-m metric] [-s state] [-p ppid]\n", progname); |
| 831 | printf (" [-u user] [-r rss] [-z vsz] [-P %%cpu] [-a argument-array]\n"); | 847 | printf (" [-u user] [-r rss] [-z vsz] [-P %%cpu] [-a argument-array]\n"); |
| 832 | printf (" [-C command] [-X process_to_exclude] [-k] [-t timeout] [-v]\n"); | 848 | printf (" [-C command] [-X process_to_exclude] [-k] [-t timeout] [-v]\n"); |
| 833 | } | 849 | } |
diff --git a/plugins/check_radius.c b/plugins/check_radius.c index b1b4938c..6b32710a 100644 --- a/plugins/check_radius.c +++ b/plugins/check_radius.c | |||
| @@ -93,7 +93,7 @@ char *expect = NULL; | |||
| 93 | char *config_file = NULL; | 93 | char *config_file = NULL; |
| 94 | unsigned short port = PW_AUTH_UDP_PORT; | 94 | unsigned short port = PW_AUTH_UDP_PORT; |
| 95 | int retries = 1; | 95 | int retries = 1; |
| 96 | int verbose = FALSE; | 96 | bool verbose = false; |
| 97 | 97 | ||
| 98 | /****************************************************************************** | 98 | /****************************************************************************** |
| 99 | 99 | ||
| @@ -272,10 +272,10 @@ process_arguments (int argc, char **argv) | |||
| 272 | print_revision (progname, NP_VERSION); | 272 | print_revision (progname, NP_VERSION); |
| 273 | exit (STATE_UNKNOWN); | 273 | exit (STATE_UNKNOWN); |
| 274 | case 'v': /* verbose mode */ | 274 | case 'v': /* verbose mode */ |
| 275 | verbose = TRUE; | 275 | verbose = true; |
| 276 | break; | 276 | break; |
| 277 | case 'H': /* hostname */ | 277 | case 'H': /* hostname */ |
| 278 | if (is_host (optarg) == FALSE) { | 278 | if (!is_host (optarg)) { |
| 279 | usage2 (_("Invalid hostname/address"), optarg); | 279 | usage2 (_("Invalid hostname/address"), optarg); |
| 280 | } | 280 | } |
| 281 | server = optarg; | 281 | server = optarg; |
diff --git a/plugins/check_real.c b/plugins/check_real.c index fbdb70f3..15e035b6 100644 --- a/plugins/check_real.c +++ b/plugins/check_real.c | |||
| @@ -54,10 +54,10 @@ char *host_name; | |||
| 54 | char *server_url = NULL; | 54 | char *server_url = NULL; |
| 55 | char *server_expect; | 55 | char *server_expect; |
| 56 | int warning_time = 0; | 56 | int warning_time = 0; |
| 57 | int check_warning_time = FALSE; | 57 | bool check_warning_time = false; |
| 58 | int critical_time = 0; | 58 | int critical_time = 0; |
| 59 | int check_critical_time = FALSE; | 59 | bool check_critical_time = false; |
| 60 | int verbose = FALSE; | 60 | bool verbose = false; |
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | 63 | ||
| @@ -238,9 +238,9 @@ main (int argc, char **argv) | |||
| 238 | /* Return results */ | 238 | /* Return results */ |
| 239 | if (result == STATE_OK) { | 239 | if (result == STATE_OK) { |
| 240 | 240 | ||
| 241 | if (check_critical_time == TRUE | 241 | if (check_critical_time |
| 242 | && (end_time - start_time) > critical_time) result = STATE_CRITICAL; | 242 | && (end_time - start_time) > critical_time) result = STATE_CRITICAL; |
| 243 | else if (check_warning_time == TRUE | 243 | else if (check_warning_time |
| 244 | && (end_time - start_time) > warning_time) result = | 244 | && (end_time - start_time) > warning_time) result = |
| 245 | STATE_WARNING; | 245 | STATE_WARNING; |
| 246 | 246 | ||
| @@ -331,7 +331,7 @@ process_arguments (int argc, char **argv) | |||
| 331 | case 'w': /* warning time threshold */ | 331 | case 'w': /* warning time threshold */ |
| 332 | if (is_intnonneg (optarg)) { | 332 | if (is_intnonneg (optarg)) { |
| 333 | warning_time = atoi (optarg); | 333 | warning_time = atoi (optarg); |
| 334 | check_warning_time = TRUE; | 334 | check_warning_time = true; |
| 335 | } | 335 | } |
| 336 | else { | 336 | else { |
| 337 | usage4 (_("Warning time must be a positive integer")); | 337 | usage4 (_("Warning time must be a positive integer")); |
| @@ -340,14 +340,14 @@ process_arguments (int argc, char **argv) | |||
| 340 | case 'c': /* critical time threshold */ | 340 | case 'c': /* critical time threshold */ |
| 341 | if (is_intnonneg (optarg)) { | 341 | if (is_intnonneg (optarg)) { |
| 342 | critical_time = atoi (optarg); | 342 | critical_time = atoi (optarg); |
| 343 | check_critical_time = TRUE; | 343 | check_critical_time = true; |
| 344 | } | 344 | } |
| 345 | else { | 345 | else { |
| 346 | usage4 (_("Critical time must be a positive integer")); | 346 | usage4 (_("Critical time must be a positive integer")); |
| 347 | } | 347 | } |
| 348 | break; | 348 | break; |
| 349 | case 'v': /* verbose */ | 349 | case 'v': /* verbose */ |
| 350 | verbose = TRUE; | 350 | verbose = true; |
| 351 | break; | 351 | break; |
| 352 | case 't': /* timeout */ | 352 | case 't': /* timeout */ |
| 353 | if (is_intnonneg (optarg)) { | 353 | if (is_intnonneg (optarg)) { |
diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c index fc0ae2c4..986c3e18 100644 --- a/plugins/check_smtp.c +++ b/plugins/check_smtp.c | |||
| @@ -40,7 +40,7 @@ const char *email = "devel@monitoring-plugins.org"; | |||
| 40 | #include <ctype.h> | 40 | #include <ctype.h> |
| 41 | 41 | ||
| 42 | #ifdef HAVE_SSL | 42 | #ifdef HAVE_SSL |
| 43 | int check_cert = FALSE; | 43 | bool check_cert = false; |
| 44 | int days_till_exp_warn, days_till_exp_crit; | 44 | int days_till_exp_warn, days_till_exp_crit; |
| 45 | # define my_recv(buf, len) (((use_starttls || use_ssl) && ssl_established) ? np_net_ssl_read(buf, len) : read(sd, buf, len)) | 45 | # define my_recv(buf, len) (((use_starttls || use_ssl) && ssl_established) ? np_net_ssl_read(buf, len) : read(sd, buf, len)) |
| 46 | # define my_send(buf, len) (((use_starttls || use_ssl) && ssl_established) ? np_net_ssl_write(buf, len) : send(sd, buf, len, 0)) | 46 | # define my_send(buf, len) (((use_starttls || use_ssl) && ssl_established) ? np_net_ssl_write(buf, len) : send(sd, buf, len, 0)) |
| @@ -100,17 +100,17 @@ char *authtype = NULL; | |||
| 100 | char *authuser = NULL; | 100 | char *authuser = NULL; |
| 101 | char *authpass = NULL; | 101 | char *authpass = NULL; |
| 102 | double warning_time = 0; | 102 | double warning_time = 0; |
| 103 | int check_warning_time = FALSE; | 103 | bool check_warning_time = false; |
| 104 | double critical_time = 0; | 104 | double critical_time = 0; |
| 105 | int check_critical_time = FALSE; | 105 | bool check_critical_time = false; |
| 106 | int verbose = 0; | 106 | int verbose = 0; |
| 107 | int use_ssl = FALSE; | 107 | bool use_ssl = false; |
| 108 | int use_starttls = FALSE; | 108 | bool use_starttls = false; |
| 109 | int use_sni = FALSE; | 109 | bool use_sni = false; |
| 110 | short use_proxy_prefix = FALSE; | 110 | bool use_proxy_prefix = false; |
| 111 | short use_ehlo = FALSE; | 111 | bool use_ehlo = false; |
| 112 | short use_lhlo = FALSE; | 112 | bool use_lhlo = false; |
| 113 | short ssl_established = 0; | 113 | bool ssl_established = false; |
| 114 | char *localhostname = NULL; | 114 | char *localhostname = NULL; |
| 115 | int sd; | 115 | int sd; |
| 116 | char buffer[MAX_INPUT_BUFFER]; | 116 | char buffer[MAX_INPUT_BUFFER]; |
| @@ -118,13 +118,13 @@ enum { | |||
| 118 | TCP_PROTOCOL = 1, | 118 | TCP_PROTOCOL = 1, |
| 119 | UDP_PROTOCOL = 2, | 119 | UDP_PROTOCOL = 2, |
| 120 | }; | 120 | }; |
| 121 | int ignore_send_quit_failure = FALSE; | 121 | bool ignore_send_quit_failure = false; |
| 122 | 122 | ||
| 123 | 123 | ||
| 124 | int | 124 | int |
| 125 | main (int argc, char **argv) | 125 | main (int argc, char **argv) |
| 126 | { | 126 | { |
| 127 | short supports_tls=FALSE; | 127 | bool supports_tls = false; |
| 128 | int n = 0; | 128 | int n = 0; |
| 129 | double elapsed_time; | 129 | double elapsed_time; |
| 130 | long microsec; | 130 | long microsec; |
| @@ -230,7 +230,7 @@ main (int argc, char **argv) | |||
| 230 | } else if(use_ehlo || use_lhlo){ | 230 | } else if(use_ehlo || use_lhlo){ |
| 231 | if(strstr(buffer, "250 STARTTLS") != NULL || | 231 | if(strstr(buffer, "250 STARTTLS") != NULL || |
| 232 | strstr(buffer, "250-STARTTLS") != NULL){ | 232 | strstr(buffer, "250-STARTTLS") != NULL){ |
| 233 | supports_tls=TRUE; | 233 | supports_tls=true; |
| 234 | } | 234 | } |
| 235 | } | 235 | } |
| 236 | 236 | ||
| @@ -466,7 +466,7 @@ main (int argc, char **argv) | |||
| 466 | fperfdata ("time", elapsed_time, "s", | 466 | fperfdata ("time", elapsed_time, "s", |
| 467 | (int)check_warning_time, warning_time, | 467 | (int)check_warning_time, warning_time, |
| 468 | (int)check_critical_time, critical_time, | 468 | (int)check_critical_time, critical_time, |
| 469 | TRUE, 0, FALSE, 0)); | 469 | true, 0, false, 0)); |
| 470 | 470 | ||
| 471 | return result; | 471 | return result; |
| 472 | } | 472 | } |
| @@ -480,6 +480,8 @@ process_arguments (int argc, char **argv) | |||
| 480 | int c; | 480 | int c; |
| 481 | char* temp; | 481 | char* temp; |
| 482 | 482 | ||
| 483 | bool implicit_tls = false; | ||
| 484 | |||
| 483 | enum { | 485 | enum { |
| 484 | SNI_OPTION | 486 | SNI_OPTION |
| 485 | }; | 487 | }; |
| @@ -560,7 +562,7 @@ process_arguments (int argc, char **argv) | |||
| 560 | break; | 562 | break; |
| 561 | case 'A': | 563 | case 'A': |
| 562 | authtype = optarg; | 564 | authtype = optarg; |
| 563 | use_ehlo = TRUE; | 565 | use_ehlo = true; |
| 564 | break; | 566 | break; |
| 565 | case 'U': | 567 | case 'U': |
| 566 | authuser = optarg; | 568 | authuser = optarg; |
| @@ -600,7 +602,7 @@ process_arguments (int argc, char **argv) | |||
| 600 | usage4 (_("Critical time must be a positive")); | 602 | usage4 (_("Critical time must be a positive")); |
| 601 | else { | 603 | else { |
| 602 | critical_time = strtod (optarg, NULL); | 604 | critical_time = strtod (optarg, NULL); |
| 603 | check_critical_time = TRUE; | 605 | check_critical_time = true; |
| 604 | } | 606 | } |
| 605 | break; | 607 | break; |
| 606 | case 'w': /* warning time threshold */ | 608 | case 'w': /* warning time threshold */ |
| @@ -608,14 +610,14 @@ process_arguments (int argc, char **argv) | |||
| 608 | usage4 (_("Warning time must be a positive")); | 610 | usage4 (_("Warning time must be a positive")); |
| 609 | else { | 611 | else { |
| 610 | warning_time = strtod (optarg, NULL); | 612 | warning_time = strtod (optarg, NULL); |
| 611 | check_warning_time = TRUE; | 613 | check_warning_time = true; |
| 612 | } | 614 | } |
| 613 | break; | 615 | break; |
| 614 | case 'v': /* verbose */ | 616 | case 'v': /* verbose */ |
| 615 | verbose++; | 617 | verbose++; |
| 616 | break; | 618 | break; |
| 617 | case 'q': | 619 | case 'q': |
| 618 | ignore_send_quit_failure++; /* ignore problem sending QUIT */ | 620 | ignore_send_quit_failure = true; /* ignore problem sending QUIT */ |
| 619 | break; | 621 | break; |
| 620 | case 't': /* timeout */ | 622 | case 't': /* timeout */ |
| 621 | if (is_intnonneg (optarg)) { | 623 | if (is_intnonneg (optarg)) { |
| @@ -645,33 +647,35 @@ process_arguments (int argc, char **argv) | |||
| 645 | usage2 ("Invalid certificate expiration period", optarg); | 647 | usage2 ("Invalid certificate expiration period", optarg); |
| 646 | days_till_exp_warn = atoi (optarg); | 648 | days_till_exp_warn = atoi (optarg); |
| 647 | } | 649 | } |
| 648 | check_cert = TRUE; | 650 | check_cert = true; |
| 649 | ignore_send_quit_failure = TRUE; | 651 | ignore_send_quit_failure = true; |
| 650 | #else | 652 | #else |
| 651 | usage (_("SSL support not available - install OpenSSL and recompile")); | 653 | usage (_("SSL support not available - install OpenSSL and recompile")); |
| 652 | #endif | 654 | #endif |
| 655 | implicit_tls = true; | ||
| 656 | // fallthrough | ||
| 653 | case 's': | 657 | case 's': |
| 654 | /* ssl */ | 658 | /* ssl */ |
| 655 | use_ssl = TRUE; | 659 | use_ssl = true; |
| 656 | server_port = SMTPS_PORT; | 660 | server_port = SMTPS_PORT; |
| 657 | break; | 661 | break; |
| 658 | case 'S': | 662 | case 'S': |
| 659 | /* starttls */ | 663 | /* starttls */ |
| 660 | use_starttls = TRUE; | 664 | use_starttls = true; |
| 661 | use_ehlo = TRUE; | 665 | use_ehlo = true; |
| 662 | break; | 666 | break; |
| 663 | case SNI_OPTION: | 667 | case SNI_OPTION: |
| 664 | #ifdef HAVE_SSL | 668 | #ifdef HAVE_SSL |
| 665 | use_sni = TRUE; | 669 | use_sni = true; |
| 666 | #else | 670 | #else |
| 667 | usage (_("SSL support not available - install OpenSSL and recompile")); | 671 | usage (_("SSL support not available - install OpenSSL and recompile")); |
| 668 | #endif | 672 | #endif |
| 669 | break; | 673 | break; |
| 670 | case 'r': | 674 | case 'r': |
| 671 | use_proxy_prefix = TRUE; | 675 | use_proxy_prefix = true; |
| 672 | break; | 676 | break; |
| 673 | case 'L': | 677 | case 'L': |
| 674 | use_lhlo = TRUE; | 678 | use_lhlo = true; |
| 675 | break; | 679 | break; |
| 676 | case '4': | 680 | case '4': |
| 677 | address_family = AF_INET; | 681 | address_family = AF_INET; |
| @@ -717,7 +721,12 @@ process_arguments (int argc, char **argv) | |||
| 717 | from_arg = strdup(" "); | 721 | from_arg = strdup(" "); |
| 718 | 722 | ||
| 719 | if (use_starttls && use_ssl) { | 723 | if (use_starttls && use_ssl) { |
| 720 | usage4 (_("Set either -s/--ssl/--tls or -S/--starttls")); | 724 | if (implicit_tls) { |
| 725 | use_ssl = false; | ||
| 726 | server_port = SMTP_PORT; | ||
| 727 | } else { | ||
| 728 | usage4 (_("Set either -s/--ssl/--tls or -S/--starttls")); | ||
| 729 | } | ||
| 721 | } | 730 | } |
| 722 | 731 | ||
| 723 | if (server_port_option != 0) { | 732 | if (server_port_option != 0) { |
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c index 56a586ad..90a04027 100644 --- a/plugins/check_snmp.c +++ b/plugins/check_snmp.c | |||
| @@ -55,8 +55,6 @@ const char *email = "devel@monitoring-plugins.org"; | |||
| 55 | #define CRIT_STRING 2 | 55 | #define CRIT_STRING 2 |
| 56 | #define CRIT_REGEX 4 | 56 | #define CRIT_REGEX 4 |
| 57 | #define WARN_PRESENT 8 | 57 | #define WARN_PRESENT 8 |
| 58 | #define WARN_STRING 16 | ||
| 59 | #define WARN_REGEX 32 | ||
| 60 | 58 | ||
| 61 | #define OID_COUNT_STEP 8 | 59 | #define OID_COUNT_STEP 8 |
| 62 | 60 | ||
| @@ -86,82 +84,82 @@ const char *email = "devel@monitoring-plugins.org"; | |||
| 86 | 84 | ||
| 87 | 85 | ||
| 88 | 86 | ||
| 89 | int process_arguments (int, char **); | 87 | static int process_arguments (int, char **); |
| 90 | int validate_arguments (void); | 88 | static int validate_arguments (void); |
| 91 | char *thisarg (char *str); | 89 | static char *thisarg (char *str); |
| 92 | char *nextarg (char *str); | 90 | static char *nextarg (char *str); |
| 93 | void print_usage (void); | 91 | void print_usage (void); |
| 94 | void print_help (void); | 92 | static void print_help (void); |
| 95 | char *multiply (char *str); | 93 | static char *multiply (char *str); |
| 96 | 94 | ||
| 97 | #include "regex.h" | 95 | #include "regex.h" |
| 98 | char regex_expect[MAX_INPUT_BUFFER] = ""; | 96 | static char regex_expect[MAX_INPUT_BUFFER] = ""; |
| 99 | regex_t preg; | 97 | static regex_t preg; |
| 100 | regmatch_t pmatch[10]; | 98 | static regmatch_t pmatch[10]; |
| 101 | char errbuf[MAX_INPUT_BUFFER] = ""; | 99 | static char errbuf[MAX_INPUT_BUFFER] = ""; |
| 102 | char perfstr[MAX_INPUT_BUFFER] = "| "; | 100 | static char perfstr[MAX_INPUT_BUFFER] = "| "; |
| 103 | int cflags = REG_EXTENDED | REG_NOSUB | REG_NEWLINE; | 101 | static int cflags = REG_EXTENDED | REG_NOSUB | REG_NEWLINE; |
| 104 | int eflags = 0; | 102 | static int eflags = 0; |
| 105 | int errcode, excode; | 103 | static int errcode, excode; |
| 106 | 104 | ||
| 107 | char *server_address = NULL; | 105 | static char *server_address = NULL; |
| 108 | char *community = NULL; | 106 | static char *community = NULL; |
| 109 | char **contextargs = NULL; | 107 | static char **contextargs = NULL; |
| 110 | char *context = NULL; | 108 | static char *context = NULL; |
| 111 | char **authpriv = NULL; | 109 | static char **authpriv = NULL; |
| 112 | char *proto = NULL; | 110 | static char *proto = NULL; |
| 113 | char *seclevel = NULL; | 111 | static char *seclevel = NULL; |
| 114 | char *secname = NULL; | 112 | static char *secname = NULL; |
| 115 | char *authproto = NULL; | 113 | static char *authproto = NULL; |
| 116 | char *privproto = NULL; | 114 | static char *privproto = NULL; |
| 117 | char *authpasswd = NULL; | 115 | static char *authpasswd = NULL; |
| 118 | char *privpasswd = NULL; | 116 | static char *privpasswd = NULL; |
| 119 | int nulloid = STATE_UNKNOWN; | 117 | static int nulloid = STATE_UNKNOWN; |
| 120 | char **oids = NULL; | 118 | static char **oids = NULL; |
| 121 | size_t oids_size = 0; | 119 | static size_t oids_size = 0; |
| 122 | char *label; | 120 | static char *label; |
| 123 | char *units; | 121 | static char *units; |
| 124 | char *port; | 122 | static char *port; |
| 125 | char *snmpcmd; | 123 | static char *snmpcmd; |
| 126 | char string_value[MAX_INPUT_BUFFER] = ""; | 124 | static char string_value[MAX_INPUT_BUFFER] = ""; |
| 127 | int invert_search=0; | 125 | static int invert_search=0; |
| 128 | char **labels = NULL; | 126 | static char **labels = NULL; |
| 129 | char **unitv = NULL; | 127 | static char **unitv = NULL; |
| 130 | size_t nlabels = 0; | 128 | static size_t nlabels = 0; |
| 131 | size_t labels_size = OID_COUNT_STEP; | 129 | static size_t labels_size = OID_COUNT_STEP; |
| 132 | size_t nunits = 0; | 130 | static size_t nunits = 0; |
| 133 | size_t unitv_size = OID_COUNT_STEP; | 131 | static size_t unitv_size = OID_COUNT_STEP; |
| 134 | int numoids = 0; | 132 | static size_t numoids = 0; |
| 135 | int numauthpriv = 0; | 133 | static int numauthpriv = 0; |
| 136 | int numcontext = 0; | 134 | static int numcontext = 0; |
| 137 | int verbose = 0; | 135 | static int verbose = 0; |
| 138 | int usesnmpgetnext = FALSE; | 136 | static bool usesnmpgetnext = false; |
| 139 | char *warning_thresholds = NULL; | 137 | static char *warning_thresholds = NULL; |
| 140 | char *critical_thresholds = NULL; | 138 | static char *critical_thresholds = NULL; |
| 141 | thresholds **thlds; | 139 | static thresholds **thlds; |
| 142 | size_t thlds_size = OID_COUNT_STEP; | 140 | static size_t thlds_size = OID_COUNT_STEP; |
| 143 | double *response_value; | 141 | static double *response_value; |
| 144 | size_t response_size = OID_COUNT_STEP; | 142 | static size_t response_size = OID_COUNT_STEP; |
| 145 | int retries = 0; | 143 | static int retries = 0; |
| 146 | int *eval_method; | 144 | static int *eval_method; |
| 147 | size_t eval_size = OID_COUNT_STEP; | 145 | static size_t eval_size = OID_COUNT_STEP; |
| 148 | char *delimiter; | 146 | static char *delimiter; |
| 149 | char *output_delim; | 147 | static char *output_delim; |
| 150 | char *miblist = NULL; | 148 | static char *miblist = NULL; |
| 151 | int needmibs = FALSE; | 149 | static bool needmibs = false; |
| 152 | int calculate_rate = 0; | 150 | static int calculate_rate = 0; |
| 153 | double offset = 0.0; | 151 | static double offset = 0.0; |
| 154 | int rate_multiplier = 1; | 152 | static int rate_multiplier = 1; |
| 155 | state_data *previous_state; | 153 | static state_data *previous_state; |
| 156 | double *previous_value; | 154 | static double *previous_value; |
| 157 | size_t previous_size = OID_COUNT_STEP; | 155 | static size_t previous_size = OID_COUNT_STEP; |
| 158 | int perf_labels = 1; | 156 | static int perf_labels = 1; |
| 159 | char* ip_version = ""; | 157 | static char* ip_version = ""; |
| 160 | double multiplier = 1.0; | 158 | static double multiplier = 1.0; |
| 161 | char *fmtstr = ""; | 159 | static char *fmtstr = ""; |
| 162 | bool fmtstr_set = false; | 160 | static bool fmtstr_set = false; |
| 163 | char buffer[DEFAULT_BUFFER_SIZE]; | 161 | static char buffer[DEFAULT_BUFFER_SIZE]; |
| 164 | bool ignore_mib_parsing_errors = false; | 162 | static bool ignore_mib_parsing_errors = false; |
| 165 | 163 | ||
| 166 | static char *fix_snmp_range(char *th) | 164 | static char *fix_snmp_range(char *th) |
| 167 | { | 165 | { |
| @@ -187,7 +185,8 @@ static char *fix_snmp_range(char *th) | |||
| 187 | int | 185 | int |
| 188 | main (int argc, char **argv) | 186 | main (int argc, char **argv) |
| 189 | { | 187 | { |
| 190 | int i, len, line, total_oids; | 188 | int len, total_oids; |
| 189 | size_t line; | ||
| 191 | unsigned int bk_count = 0, dq_count = 0; | 190 | unsigned int bk_count = 0, dq_count = 0; |
| 192 | int iresult = STATE_UNKNOWN; | 191 | int iresult = STATE_UNKNOWN; |
| 193 | int result = STATE_UNKNOWN; | 192 | int result = STATE_UNKNOWN; |
| @@ -253,14 +252,16 @@ main (int argc, char **argv) | |||
| 253 | if(calculate_rate) { | 252 | if(calculate_rate) { |
| 254 | if (!strcmp(label, "SNMP")) | 253 | if (!strcmp(label, "SNMP")) |
| 255 | label = strdup("SNMP RATE"); | 254 | label = strdup("SNMP RATE"); |
| 256 | i=0; | 255 | |
| 256 | size_t i = 0; | ||
| 257 | |||
| 257 | previous_state = np_state_read(); | 258 | previous_state = np_state_read(); |
| 258 | if(previous_state!=NULL) { | 259 | if(previous_state!=NULL) { |
| 259 | /* Split colon separated values */ | 260 | /* Split colon separated values */ |
| 260 | previous_string = strdup((char *) previous_state->data); | 261 | previous_string = strdup((char *) previous_state->data); |
| 261 | while((ap = strsep(&previous_string, ":")) != NULL) { | 262 | while((ap = strsep(&previous_string, ":")) != NULL) { |
| 262 | if(verbose>2) | 263 | if(verbose>2) |
| 263 | printf("State for %d=%s\n", i, ap); | 264 | printf("State for %zd=%s\n", i, ap); |
| 264 | while (i >= previous_size) { | 265 | while (i >= previous_size) { |
| 265 | previous_size += OID_COUNT_STEP; | 266 | previous_size += OID_COUNT_STEP; |
| 266 | previous_value = realloc(previous_value, previous_size * sizeof(*previous_value)); | 267 | previous_value = realloc(previous_value, previous_size * sizeof(*previous_value)); |
| @@ -273,7 +274,7 @@ main (int argc, char **argv) | |||
| 273 | /* Populate the thresholds */ | 274 | /* Populate the thresholds */ |
| 274 | th_warn=warning_thresholds; | 275 | th_warn=warning_thresholds; |
| 275 | th_crit=critical_thresholds; | 276 | th_crit=critical_thresholds; |
| 276 | for (i=0; i<numoids; i++) { | 277 | for (size_t i = 0; i < numoids; i++) { |
| 277 | char *w = th_warn ? strndup(th_warn, strcspn(th_warn, ",")) : NULL; | 278 | char *w = th_warn ? strndup(th_warn, strcspn(th_warn, ",")) : NULL; |
| 278 | char *c = th_crit ? strndup(th_crit, strcspn(th_crit, ",")) : NULL; | 279 | char *c = th_crit ? strndup(th_crit, strcspn(th_crit, ",")) : NULL; |
| 279 | /* translate "2:1" to "@1:2" for backwards compatibility */ | 280 | /* translate "2:1" to "@1:2" for backwards compatibility */ |
| @@ -302,7 +303,7 @@ main (int argc, char **argv) | |||
| 302 | } | 303 | } |
| 303 | 304 | ||
| 304 | /* Create the command array to execute */ | 305 | /* Create the command array to execute */ |
| 305 | if(usesnmpgetnext == TRUE) { | 306 | if(usesnmpgetnext) { |
| 306 | snmpcmd = strdup (PATH_TO_SNMPGETNEXT); | 307 | snmpcmd = strdup (PATH_TO_SNMPGETNEXT); |
| 307 | }else{ | 308 | }else{ |
| 308 | snmpcmd = strdup (PATH_TO_SNMPGET); | 309 | snmpcmd = strdup (PATH_TO_SNMPGET); |
| @@ -333,11 +334,11 @@ main (int argc, char **argv) | |||
| 333 | } | 334 | } |
| 334 | 335 | ||
| 335 | 336 | ||
| 336 | for (i = 0; i < numcontext; i++) { | 337 | for (int i = 0; i < numcontext; i++) { |
| 337 | command_line[index++] = contextargs[i]; | 338 | command_line[index++] = contextargs[i]; |
| 338 | } | 339 | } |
| 339 | 340 | ||
| 340 | for (i = 0; i < numauthpriv; i++) { | 341 | for (int i = 0; i < numauthpriv; i++) { |
| 341 | command_line[index++] = authpriv[i]; | 342 | command_line[index++] = authpriv[i]; |
| 342 | } | 343 | } |
| 343 | 344 | ||
| @@ -348,7 +349,7 @@ main (int argc, char **argv) | |||
| 348 | server_address, | 349 | server_address, |
| 349 | port); | 350 | port); |
| 350 | 351 | ||
| 351 | for (i = 0; i < numoids; i++) { | 352 | for (size_t i = 0; i < numoids; i++) { |
| 352 | command_line[index++] = oids[i]; | 353 | command_line[index++] = oids[i]; |
| 353 | xasprintf(&cl_hidden_auth, "%s %s", cl_hidden_auth, oids[i]); | 354 | xasprintf(&cl_hidden_auth, "%s %s", cl_hidden_auth, oids[i]); |
| 354 | } | 355 | } |
| @@ -382,7 +383,7 @@ main (int argc, char **argv) | |||
| 382 | if (external_error) { | 383 | if (external_error) { |
| 383 | if (chld_err.lines > 0) { | 384 | if (chld_err.lines > 0) { |
| 384 | printf (_("External command error: %s\n"), chld_err.line[0]); | 385 | printf (_("External command error: %s\n"), chld_err.line[0]); |
| 385 | for (i = 1; i < chld_err.lines; i++) { | 386 | for (size_t i = 1; i < chld_err.lines; i++) { |
| 386 | printf ("%s\n", chld_err.line[i]); | 387 | printf ("%s\n", chld_err.line[i]); |
| 387 | } | 388 | } |
| 388 | } else { | 389 | } else { |
| @@ -392,12 +393,14 @@ main (int argc, char **argv) | |||
| 392 | } | 393 | } |
| 393 | 394 | ||
| 394 | if (verbose) { | 395 | if (verbose) { |
| 395 | for (i = 0; i < chld_out.lines; i++) { | 396 | for (size_t i = 0; i < chld_out.lines; i++) { |
| 396 | printf ("%s\n", chld_out.line[i]); | 397 | printf ("%s\n", chld_out.line[i]); |
| 397 | } | 398 | } |
| 398 | } | 399 | } |
| 399 | 400 | ||
| 400 | for (line=0, i=0; line < chld_out.lines && i < numoids ; line++, i++) { | 401 | line = 0; |
| 402 | total_oids = 0; | ||
| 403 | for (size_t i = 0; line < chld_out.lines && i < numoids ; line++, i++, total_oids++) { | ||
| 401 | if(calculate_rate) | 404 | if(calculate_rate) |
| 402 | conv = "%.10g"; | 405 | conv = "%.10g"; |
| 403 | else | 406 | else |
| @@ -410,7 +413,7 @@ main (int argc, char **argv) | |||
| 410 | break; | 413 | break; |
| 411 | 414 | ||
| 412 | if (verbose > 2) { | 415 | if (verbose > 2) { |
| 413 | printf("Processing oid %i (line %i)\n oidname: %s\n response: %s\n", i+1, line+1, oidname, response); | 416 | printf("Processing oid %zi (line %zi)\n oidname: %s\n response: %s\n", i+1, line+1, oidname, response); |
| 414 | } | 417 | } |
| 415 | 418 | ||
| 416 | /* Clean up type array - Sol10 does not necessarily zero it out */ | 419 | /* Clean up type array - Sol10 does not necessarily zero it out */ |
| @@ -634,7 +637,6 @@ main (int argc, char **argv) | |||
| 634 | strncat(perfstr, " ", sizeof(perfstr)-strlen(perfstr)-1); | 637 | strncat(perfstr, " ", sizeof(perfstr)-strlen(perfstr)-1); |
| 635 | } | 638 | } |
| 636 | } | 639 | } |
| 637 | total_oids=i; | ||
| 638 | 640 | ||
| 639 | /* Save state data, as all data collected now */ | 641 | /* Save state data, as all data collected now */ |
| 640 | if(calculate_rate) { | 642 | if(calculate_rate) { |
| @@ -644,7 +646,7 @@ main (int argc, char **argv) | |||
| 644 | die(STATE_UNKNOWN, _("Cannot malloc")); | 646 | die(STATE_UNKNOWN, _("Cannot malloc")); |
| 645 | 647 | ||
| 646 | current_length=0; | 648 | current_length=0; |
| 647 | for(i=0; i<total_oids; i++) { | 649 | for(int i = 0; i < total_oids; i++) { |
| 648 | xasprintf(&temp_string,"%.0f",response_value[i]); | 650 | xasprintf(&temp_string,"%.0f",response_value[i]); |
| 649 | if(temp_string==NULL) | 651 | if(temp_string==NULL) |
| 650 | die(STATE_UNKNOWN,_("Cannot asprintf()")); | 652 | die(STATE_UNKNOWN,_("Cannot asprintf()")); |
| @@ -687,7 +689,7 @@ process_arguments (int argc, char **argv) | |||
| 687 | { | 689 | { |
| 688 | char *ptr; | 690 | char *ptr; |
| 689 | int c = 1; | 691 | int c = 1; |
| 690 | int j = 0, jj = 0, ii = 0; | 692 | size_t j = 0, jj = 0; |
| 691 | 693 | ||
| 692 | int option = 0; | 694 | int option = 0; |
| 693 | static struct option longopts[] = { | 695 | static struct option longopts[] = { |
| @@ -777,7 +779,7 @@ process_arguments (int argc, char **argv) | |||
| 777 | miblist = optarg; | 779 | miblist = optarg; |
| 778 | break; | 780 | break; |
| 779 | case 'n': /* usesnmpgetnext */ | 781 | case 'n': /* usesnmpgetnext */ |
| 780 | usesnmpgetnext = TRUE; | 782 | usesnmpgetnext = true; |
| 781 | break; | 783 | break; |
| 782 | case 'P': /* SNMP protocol version */ | 784 | case 'P': /* SNMP protocol version */ |
| 783 | proto = optarg; | 785 | proto = optarg; |
| @@ -831,7 +833,7 @@ process_arguments (int argc, char **argv) | |||
| 831 | * so we have a mib variable, rather than just an SNMP OID, | 833 | * so we have a mib variable, rather than just an SNMP OID, |
| 832 | * so we have to actually read the mib files | 834 | * so we have to actually read the mib files |
| 833 | */ | 835 | */ |
| 834 | needmibs = TRUE; | 836 | needmibs = true; |
| 835 | } | 837 | } |
| 836 | for (ptr = strtok(optarg, ", "); ptr != NULL; ptr = strtok(NULL, ", "), j++) { | 838 | for (ptr = strtok(optarg, ", "); ptr != NULL; ptr = strtok(NULL, ", "), j++) { |
| 837 | while (j >= oids_size) { | 839 | while (j >= oids_size) { |
| @@ -843,7 +845,6 @@ process_arguments (int argc, char **argv) | |||
| 843 | numoids = j; | 845 | numoids = j; |
| 844 | if (c == 'E' || c == 'e') { | 846 | if (c == 'E' || c == 'e') { |
| 845 | jj++; | 847 | jj++; |
| 846 | ii++; | ||
| 847 | while (j+1 >= eval_size) { | 848 | while (j+1 >= eval_size) { |
| 848 | eval_size += OID_COUNT_STEP; | 849 | eval_size += OID_COUNT_STEP; |
| 849 | eval_method = realloc(eval_method, eval_size * sizeof(*eval_method)); | 850 | eval_method = realloc(eval_method, eval_size * sizeof(*eval_method)); |
| @@ -870,7 +871,6 @@ process_arguments (int argc, char **argv) | |||
| 870 | memset(eval_method + eval_size - OID_COUNT_STEP, 0, 8); | 871 | memset(eval_method + eval_size - OID_COUNT_STEP, 0, 8); |
| 871 | } | 872 | } |
| 872 | eval_method[jj++] = CRIT_STRING; | 873 | eval_method[jj++] = CRIT_STRING; |
| 873 | ii++; | ||
| 874 | break; | 874 | break; |
| 875 | case 'R': /* regex */ | 875 | case 'R': /* regex */ |
| 876 | cflags = REG_ICASE; | 876 | cflags = REG_ICASE; |
| @@ -891,7 +891,6 @@ process_arguments (int argc, char **argv) | |||
| 891 | memset(eval_method + eval_size - OID_COUNT_STEP, 0, 8); | 891 | memset(eval_method + eval_size - OID_COUNT_STEP, 0, 8); |
| 892 | } | 892 | } |
| 893 | eval_method[jj++] = CRIT_REGEX; | 893 | eval_method[jj++] = CRIT_REGEX; |
| 894 | ii++; | ||
| 895 | break; | 894 | break; |
| 896 | 895 | ||
| 897 | /* Format */ | 896 | /* Format */ |
| @@ -1029,12 +1028,12 @@ selected.</para> | |||
| 1029 | 1028 | ||
| 1030 | 1029 | ||
| 1031 | 1030 | ||
| 1032 | int | 1031 | static int |
| 1033 | validate_arguments () | 1032 | validate_arguments () |
| 1034 | { | 1033 | { |
| 1035 | /* check whether to load locally installed MIBS (CPU/disk intensive) */ | 1034 | /* check whether to load locally installed MIBS (CPU/disk intensive) */ |
| 1036 | if (miblist == NULL) { | 1035 | if (miblist == NULL) { |
| 1037 | if ( needmibs == TRUE ) { | 1036 | if (needmibs) { |
| 1038 | miblist = strdup (DEFAULT_MIBLIST); | 1037 | miblist = strdup (DEFAULT_MIBLIST); |
| 1039 | }else{ | 1038 | }else{ |
| 1040 | miblist = ""; /* don't read any mib files for numeric oids */ | 1039 | miblist = ""; /* don't read any mib files for numeric oids */ |
| @@ -1138,7 +1137,7 @@ validate_arguments () | |||
| 1138 | /* trim leading whitespace | 1137 | /* trim leading whitespace |
| 1139 | if there is a leading quote, make sure it balances */ | 1138 | if there is a leading quote, make sure it balances */ |
| 1140 | 1139 | ||
| 1141 | char * | 1140 | static char * |
| 1142 | thisarg (char *str) | 1141 | thisarg (char *str) |
| 1143 | { | 1142 | { |
| 1144 | str += strspn (str, " \t\r\n"); /* trim any leading whitespace */ | 1143 | str += strspn (str, " \t\r\n"); /* trim any leading whitespace */ |
| @@ -1155,7 +1154,7 @@ thisarg (char *str) | |||
| 1155 | set the trailing quote to '\x0' | 1154 | set the trailing quote to '\x0' |
| 1156 | if the string continues, advance beyond the comma */ | 1155 | if the string continues, advance beyond the comma */ |
| 1157 | 1156 | ||
| 1158 | char * | 1157 | static char * |
| 1159 | nextarg (char *str) | 1158 | nextarg (char *str) |
| 1160 | { | 1159 | { |
| 1161 | if (str[0] == '\'') { | 1160 | if (str[0] == '\'') { |
| @@ -1187,7 +1186,7 @@ nextarg (char *str) | |||
| 1187 | 1186 | ||
| 1188 | 1187 | ||
| 1189 | /* multiply result (values 0 < n < 1 work as divider) */ | 1188 | /* multiply result (values 0 < n < 1 work as divider) */ |
| 1190 | char * | 1189 | static char * |
| 1191 | multiply (char *str) | 1190 | multiply (char *str) |
| 1192 | { | 1191 | { |
| 1193 | char *endptr; | 1192 | char *endptr; |
| @@ -1224,7 +1223,7 @@ multiply (char *str) | |||
| 1224 | } | 1223 | } |
| 1225 | 1224 | ||
| 1226 | 1225 | ||
| 1227 | void | 1226 | static void |
| 1228 | print_help (void) | 1227 | print_help (void) |
| 1229 | { | 1228 | { |
| 1230 | print_revision (progname, NP_VERSION); | 1229 | print_revision (progname, NP_VERSION); |
| @@ -1252,10 +1251,12 @@ print_help (void) | |||
| 1252 | printf (" %s\n", _("SNMPv3 context")); | 1251 | printf (" %s\n", _("SNMPv3 context")); |
| 1253 | printf (" %s\n", "-L, --seclevel=[noAuthNoPriv|authNoPriv|authPriv]"); | 1252 | printf (" %s\n", "-L, --seclevel=[noAuthNoPriv|authNoPriv|authPriv]"); |
| 1254 | printf (" %s\n", _("SNMPv3 securityLevel")); | 1253 | printf (" %s\n", _("SNMPv3 securityLevel")); |
| 1255 | printf (" %s\n", "-a, --authproto=[MD5|SHA]"); | 1254 | printf (" %s\n", "-a, --authproto=AUTHENTICATION_PROTOCOL"); |
| 1256 | printf (" %s\n", _("SNMPv3 auth proto")); | 1255 | printf (" %s\n", _("SNMPv3 authentication protocol (default MD5), available options depend on the specific version of the net-snmp tools")); |
| 1257 | printf (" %s\n", "-x, --privproto=[DES|AES]"); | 1256 | printf (" %s\n", _("if < 5.8 SHA (1) and MD5 should be available, if >= 5.8 additionally SHA-224, SHA-256, SHA-384 and SHA-512")); |
| 1258 | printf (" %s\n", _("SNMPv3 priv proto (default DES)")); | 1257 | printf (" %s\n", "-x, --privproto=PRIVACY_PROTOCOL"); |
| 1258 | printf (" %s\n", _("SNMPv3 privacy protocol (default DES), available options depend on the specific version of the net-snmp tools")); | ||
| 1259 | printf (" %s\n", _("if < 5.8 DES and AES should be available, if >= 5.8 additionally AES-192 and AES-256")); | ||
| 1259 | 1260 | ||
| 1260 | /* Authentication Tokens*/ | 1261 | /* Authentication Tokens*/ |
| 1261 | printf (" %s\n", "-C, --community=STRING"); | 1262 | printf (" %s\n", "-C, --community=STRING"); |
diff --git a/plugins/check_ssh.c b/plugins/check_ssh.c index 8ccbd5a7..34ef37b7 100644 --- a/plugins/check_ssh.c +++ b/plugins/check_ssh.c | |||
| @@ -1,39 +1,39 @@ | |||
| 1 | /***************************************************************************** | 1 | /***************************************************************************** |
| 2 | * | 2 | * |
| 3 | * Monitoring check_ssh plugin | 3 | * Monitoring check_ssh plugin |
| 4 | * | 4 | * |
| 5 | * License: GPL | 5 | * License: GPL |
| 6 | * Copyright (c) 2000-2007 Monitoring Plugins Development Team | 6 | * Copyright (c) 2000-2007 Monitoring Plugins Development Team |
| 7 | * | 7 | * |
| 8 | * Description: | 8 | * Description: |
| 9 | * | 9 | * |
| 10 | * This file contains the check_ssh plugin | 10 | * This file contains the check_ssh plugin |
| 11 | * | 11 | * |
| 12 | * Try to connect to an SSH server at specified server and port | 12 | * Try to connect to an SSH server at specified server and port |
| 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 | ||
| 31 | const char *progname = "check_ssh"; | 31 | const char *progname = "check_ssh"; |
| 32 | const char *copyright = "2000-2007"; | 32 | const char *copyright = "2000-2007"; |
| 33 | const char *email = "devel@monitoring-plugins.org"; | 33 | const char *email = "devel@monitoring-plugins.org"; |
| 34 | 34 | ||
| 35 | #include "common.h" | 35 | #include "./common.h" |
| 36 | #include "netutils.h" | 36 | #include "./netutils.h" |
| 37 | #include "utils.h" | 37 | #include "utils.h" |
| 38 | 38 | ||
| 39 | #ifndef MSG_DONTWAIT | 39 | #ifndef MSG_DONTWAIT |
| @@ -47,7 +47,7 @@ int port = -1; | |||
| 47 | char *server_name = NULL; | 47 | char *server_name = NULL; |
| 48 | char *remote_version = NULL; | 48 | char *remote_version = NULL; |
| 49 | char *remote_protocol = NULL; | 49 | char *remote_protocol = NULL; |
| 50 | int verbose = FALSE; | 50 | bool verbose = false; |
| 51 | 51 | ||
| 52 | int process_arguments (int, char **); | 52 | int process_arguments (int, char **); |
| 53 | int validate_arguments (void); | 53 | int validate_arguments (void); |
| @@ -57,7 +57,6 @@ void print_usage (void); | |||
| 57 | int ssh_connect (char *haddr, int hport, char *remote_version, char *remote_protocol); | 57 | int ssh_connect (char *haddr, int hport, char *remote_version, char *remote_protocol); |
| 58 | 58 | ||
| 59 | 59 | ||
| 60 | |||
| 61 | int | 60 | int |
| 62 | main (int argc, char **argv) | 61 | main (int argc, char **argv) |
| 63 | { | 62 | { |
| @@ -106,7 +105,7 @@ process_arguments (int argc, char **argv) | |||
| 106 | {"timeout", required_argument, 0, 't'}, | 105 | {"timeout", required_argument, 0, 't'}, |
| 107 | {"verbose", no_argument, 0, 'v'}, | 106 | {"verbose", no_argument, 0, 'v'}, |
| 108 | {"remote-version", required_argument, 0, 'r'}, | 107 | {"remote-version", required_argument, 0, 'r'}, |
| 109 | {"remote-protcol", required_argument, 0, 'P'}, | 108 | {"remote-protocol", required_argument, 0, 'P'}, |
| 110 | {0, 0, 0, 0} | 109 | {0, 0, 0, 0} |
| 111 | }; | 110 | }; |
| 112 | 111 | ||
| @@ -133,7 +132,7 @@ process_arguments (int argc, char **argv) | |||
| 133 | print_help (); | 132 | print_help (); |
| 134 | exit (STATE_UNKNOWN); | 133 | exit (STATE_UNKNOWN); |
| 135 | case 'v': /* verbose */ | 134 | case 'v': /* verbose */ |
| 136 | verbose = TRUE; | 135 | verbose = true; |
| 137 | break; | 136 | break; |
| 138 | case 't': /* timeout period */ | 137 | case 't': /* timeout period */ |
| 139 | if (!is_integer (optarg)) | 138 | if (!is_integer (optarg)) |
| @@ -158,7 +157,7 @@ process_arguments (int argc, char **argv) | |||
| 158 | remote_protocol = optarg; | 157 | remote_protocol = optarg; |
| 159 | break; | 158 | break; |
| 160 | case 'H': /* host */ | 159 | case 'H': /* host */ |
| 161 | if (is_host (optarg) == FALSE) | 160 | if (!is_host (optarg)) |
| 162 | usage2 (_("Invalid hostname/address"), optarg); | 161 | usage2 (_("Invalid hostname/address"), optarg); |
| 163 | server_name = optarg; | 162 | server_name = optarg; |
| 164 | break; | 163 | break; |
| @@ -215,7 +214,9 @@ ssh_connect (char *haddr, int hport, char *remote_version, char *remote_protocol | |||
| 215 | { | 214 | { |
| 216 | int sd; | 215 | int sd; |
| 217 | int result; | 216 | int result; |
| 218 | char *output = NULL; | 217 | int len = 0; |
| 218 | ssize_t recv_ret = 0; | ||
| 219 | char *version_control_string = NULL; | ||
| 219 | char *buffer = NULL; | 220 | char *buffer = NULL; |
| 220 | char *ssh_proto = NULL; | 221 | char *ssh_proto = NULL; |
| 221 | char *ssh_server = NULL; | 222 | char *ssh_server = NULL; |
| @@ -230,52 +231,126 @@ ssh_connect (char *haddr, int hport, char *remote_version, char *remote_protocol | |||
| 230 | if (result != STATE_OK) | 231 | if (result != STATE_OK) |
| 231 | return result; | 232 | return result; |
| 232 | 233 | ||
| 233 | output = (char *) malloc (BUFF_SZ + 1); | 234 | char *output = (char *) calloc (BUFF_SZ + 1, sizeof(char)); |
| 234 | memset (output, 0, BUFF_SZ + 1); | 235 | |
| 235 | recv (sd, output, BUFF_SZ, 0); | 236 | unsigned int iteration = 0; |
| 236 | if (strncmp (output, "SSH", 3)) { | 237 | ssize_t byte_offset = 0; |
| 237 | printf (_("Server answer: %s"), output); | 238 | |
| 238 | close(sd); | 239 | while ((version_control_string == NULL) && (recv_ret = recv(sd, output+byte_offset, BUFF_SZ - byte_offset, 0) > 0)) { |
| 240 | |||
| 241 | if (strchr(output, '\n')) { /* we've got at least one full line, start parsing*/ | ||
| 242 | byte_offset = 0; | ||
| 243 | |||
| 244 | char *index = NULL; | ||
| 245 | while ((index = strchr(output+byte_offset, '\n')) != NULL) { | ||
| 246 | /*Partition the buffer so that this line is a separate string, | ||
| 247 | * by replacing the newline with NUL*/ | ||
| 248 | output[(index - output)] = '\0'; | ||
| 249 | len = strlen(output + byte_offset); | ||
| 250 | |||
| 251 | if ((len >= 4) && (strncmp (output+byte_offset, "SSH-", 4) == 0)) { | ||
| 252 | /*if the string starts with SSH-, this _should_ be a valid version control string*/ | ||
| 253 | version_control_string = output+byte_offset; | ||
| 254 | break; | ||
| 255 | } | ||
| 256 | |||
| 257 | /*the start of the next line (if one exists) will be after the current one (+ NUL)*/ | ||
| 258 | byte_offset += (len + 1); | ||
| 259 | } | ||
| 260 | |||
| 261 | if(version_control_string == NULL) { | ||
| 262 | /* move unconsumed data to beginning of buffer, null rest */ | ||
| 263 | memmove((void *)output, (void *)output+byte_offset+1, BUFF_SZ - len+1); | ||
| 264 | memset(output+byte_offset+1, 0, BUFF_SZ-byte_offset+1); | ||
| 265 | |||
| 266 | /*start reading from end of current line chunk on next recv*/ | ||
| 267 | byte_offset = strlen(output); | ||
| 268 | } | ||
| 269 | } else { | ||
| 270 | byte_offset += recv_ret; | ||
| 271 | } | ||
| 272 | } | ||
| 273 | |||
| 274 | if (recv_ret < 0) { | ||
| 275 | printf("SSH CRITICAL - %s", strerror(errno)); | ||
| 276 | exit(STATE_CRITICAL); | ||
| 277 | } | ||
| 278 | |||
| 279 | if (version_control_string == NULL) { | ||
| 280 | printf("SSH CRITICAL - No version control string received"); | ||
| 281 | exit(STATE_CRITICAL); | ||
| 282 | } | ||
| 283 | /* | ||
| 284 | * "When the connection has been established, both sides MUST send an | ||
| 285 | * identification string. This identification string MUST be | ||
| 286 | * | ||
| 287 | * SSH-protoversion-softwareversion SP comments CR LF" | ||
| 288 | * - RFC 4253:4.2 | ||
| 289 | */ | ||
| 290 | strip (version_control_string); | ||
| 291 | if (verbose) | ||
| 292 | printf ("%s\n", version_control_string); | ||
| 293 | ssh_proto = version_control_string + 4; | ||
| 294 | |||
| 295 | /* | ||
| 296 | * We assume the protoversion is of the form Major.Minor, although | ||
| 297 | * this is not _strictly_ required. See | ||
| 298 | * | ||
| 299 | * "Both the 'protoversion' and 'softwareversion' strings MUST consist of | ||
| 300 | * printable US-ASCII characters, with the exception of whitespace | ||
| 301 | * characters and the minus sign (-)" | ||
| 302 | * - RFC 4253:4.2 | ||
| 303 | * and, | ||
| 304 | * | ||
| 305 | * "As stated earlier, the 'protoversion' specified for this protocol is | ||
| 306 | * "2.0". Earlier versions of this protocol have not been formally | ||
| 307 | * documented, but it is widely known that they use 'protoversion' of | ||
| 308 | * "1.x" (e.g., "1.5" or "1.3")." | ||
| 309 | * - RFC 4253:5 | ||
| 310 | */ | ||
| 311 | ssh_server = ssh_proto + strspn (ssh_proto, "0123456789.") + 1; /* (+1 for the '-' separating protoversion from softwareversion) */ | ||
| 312 | |||
| 313 | /* If there's a space in the version string, whatever's after the space is a comment | ||
| 314 | * (which is NOT part of the server name/version)*/ | ||
| 315 | char *tmp = strchr(ssh_server, ' '); | ||
| 316 | if (tmp) { | ||
| 317 | ssh_server[tmp - ssh_server] = '\0'; | ||
| 318 | } | ||
| 319 | if (strlen(ssh_proto) == 0 || strlen(ssh_server) == 0) { | ||
| 320 | printf(_("SSH CRITICAL - Invalid protocol version control string %s\n"), version_control_string); | ||
| 239 | exit (STATE_CRITICAL); | 321 | exit (STATE_CRITICAL); |
| 240 | } | 322 | } |
| 241 | else { | 323 | ssh_proto[strspn (ssh_proto, "0123456789. ")] = 0; |
| 242 | strip (output); | ||
| 243 | if (verbose) | ||
| 244 | printf ("%s\n", output); | ||
| 245 | ssh_proto = output + 4; | ||
| 246 | ssh_server = ssh_proto + strspn (ssh_proto, "-0123456789. "); | ||
| 247 | ssh_proto[strspn (ssh_proto, "0123456789. ")] = 0; | ||
| 248 | |||
| 249 | xasprintf (&buffer, "SSH-%s-check_ssh_%s\r\n", ssh_proto, rev_no); | ||
| 250 | send (sd, buffer, strlen (buffer), MSG_DONTWAIT); | ||
| 251 | if (verbose) | ||
| 252 | printf ("%s\n", buffer); | ||
| 253 | |||
| 254 | if (remote_version && strcmp(remote_version, ssh_server)) { | ||
| 255 | printf | ||
| 256 | (_("SSH CRITICAL - %s (protocol %s) version mismatch, expected '%s'\n"), | ||
| 257 | ssh_server, ssh_proto, remote_version); | ||
| 258 | close(sd); | ||
| 259 | exit (STATE_CRITICAL); | ||
| 260 | } | ||
| 261 | 324 | ||
| 262 | if (remote_protocol && strcmp(remote_protocol, ssh_proto)) { | 325 | xasprintf (&buffer, "SSH-%s-check_ssh_%s\r\n", ssh_proto, rev_no); |
| 263 | printf | 326 | send (sd, buffer, strlen (buffer), MSG_DONTWAIT); |
| 264 | (_("SSH CRITICAL - %s (protocol %s) protocol version mismatch, expected '%s'\n"), | 327 | if (verbose) |
| 265 | ssh_server, ssh_proto, remote_protocol); | 328 | printf ("%s\n", buffer); |
| 266 | close(sd); | ||
| 267 | exit (STATE_CRITICAL); | ||
| 268 | } | ||
| 269 | 329 | ||
| 270 | elapsed_time = (double)deltime(tv) / 1.0e6; | 330 | if (remote_version && strcmp(remote_version, ssh_server)) { |
| 331 | printf | ||
| 332 | (_("SSH CRITICAL - %s (protocol %s) version mismatch, expected '%s'\n"), | ||
| 333 | ssh_server, ssh_proto, remote_version); | ||
| 334 | close(sd); | ||
| 335 | exit (STATE_CRITICAL); | ||
| 336 | } | ||
| 271 | 337 | ||
| 338 | if (remote_protocol && strcmp(remote_protocol, ssh_proto)) { | ||
| 272 | printf | 339 | printf |
| 273 | (_("SSH OK - %s (protocol %s) | %s\n"), | 340 | (_("SSH CRITICAL - %s (protocol %s) protocol version mismatch, expected '%s' | %s\n"), |
| 274 | ssh_server, ssh_proto, fperfdata("time", elapsed_time, "s", | 341 | ssh_server, ssh_proto, remote_protocol, fperfdata("time", elapsed_time, "s", |
| 275 | FALSE, 0, FALSE, 0, TRUE, 0, TRUE, (int)socket_timeout)); | 342 | false, 0, false, 0, true, 0, true, (int)socket_timeout)); |
| 276 | close(sd); | 343 | close(sd); |
| 277 | exit (STATE_OK); | 344 | exit (STATE_CRITICAL); |
| 278 | } | 345 | } |
| 346 | elapsed_time = (double)deltime(tv) / 1.0e6; | ||
| 347 | |||
| 348 | printf | ||
| 349 | (_("SSH OK - %s (protocol %s) | %s\n"), | ||
| 350 | ssh_server, ssh_proto, fperfdata("time", elapsed_time, "s", | ||
| 351 | false, 0, false, 0, true, 0, true, (int)socket_timeout)); | ||
| 352 | close(sd); | ||
| 353 | exit (STATE_OK); | ||
| 279 | } | 354 | } |
| 280 | 355 | ||
| 281 | 356 | ||
| @@ -293,7 +368,7 @@ print_help (void) | |||
| 293 | 368 | ||
| 294 | printf ("%s\n", _("Try to connect to an SSH server at specified server and port")); | 369 | printf ("%s\n", _("Try to connect to an SSH server at specified server and port")); |
| 295 | 370 | ||
| 296 | printf ("\n\n"); | 371 | printf ("\n\n"); |
| 297 | 372 | ||
| 298 | print_usage (); | 373 | print_usage (); |
| 299 | 374 | ||
| @@ -307,10 +382,10 @@ print_help (void) | |||
| 307 | printf (UT_CONN_TIMEOUT, DEFAULT_SOCKET_TIMEOUT); | 382 | printf (UT_CONN_TIMEOUT, DEFAULT_SOCKET_TIMEOUT); |
| 308 | 383 | ||
| 309 | printf (" %s\n", "-r, --remote-version=STRING"); | 384 | printf (" %s\n", "-r, --remote-version=STRING"); |
| 310 | printf (" %s\n", _("Alert if string doesn't match expected server version (ex: OpenSSH_3.9p1)")); | 385 | printf (" %s\n", _("Alert if string doesn't match expected server version (ex: OpenSSH_3.9p1)")); |
| 311 | 386 | ||
| 312 | printf (" %s\n", "-P, --remote-protocol=STRING"); | 387 | printf (" %s\n", "-P, --remote-protocol=STRING"); |
| 313 | printf (" %s\n", _("Alert if protocol doesn't match expected protocol version (ex: 2.0)")); | 388 | printf (" %s\n", _("Alert if protocol doesn't match expected protocol version (ex: 2.0)")); |
| 314 | 389 | ||
| 315 | printf (UT_VERBOSE); | 390 | printf (UT_VERBOSE); |
| 316 | 391 | ||
| @@ -322,7 +397,7 @@ print_help (void) | |||
| 322 | void | 397 | void |
| 323 | print_usage (void) | 398 | print_usage (void) |
| 324 | { | 399 | { |
| 325 | printf ("%s\n", _("Usage:")); | 400 | printf ("%s\n", _("Usage:")); |
| 326 | printf ("%s [-4|-6] [-t <timeout>] [-r <remote version>] [-p <port>] <host>\n", progname); | 401 | printf ("%s [-4|-6] [-t <timeout>] [-r <remote version>] [-p <port>] <host>\n", progname); |
| 327 | } | 402 | } |
| 328 | 403 | ||
diff --git a/plugins/check_swap.c b/plugins/check_swap.c index cd965e31..e7ee785d 100644 --- a/plugins/check_swap.c +++ b/plugins/check_swap.c | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | * | 4 | * |
| 5 | * License: GPL | 5 | * License: GPL |
| 6 | * Copyright (c) 2000 Karl DeBisschop (kdebisschop@users.sourceforge.net) | 6 | * Copyright (c) 2000 Karl DeBisschop (kdebisschop@users.sourceforge.net) |
| 7 | * Copyright (c) 2000-2007 Monitoring Plugins Development Team | 7 | * Copyright (c) 2000-2024 Monitoring Plugins Development Team |
| 8 | * | 8 | * |
| 9 | * Description: | 9 | * Description: |
| 10 | * | 10 | * |
| @@ -28,7 +28,7 @@ | |||
| 28 | *****************************************************************************/ | 28 | *****************************************************************************/ |
| 29 | 29 | ||
| 30 | const char *progname = "check_swap"; | 30 | const char *progname = "check_swap"; |
| 31 | const char *copyright = "2000-2007"; | 31 | const char *copyright = "2000-2024"; |
| 32 | const char *email = "devel@monitoring-plugins.org"; | 32 | const char *email = "devel@monitoring-plugins.org"; |
| 33 | 33 | ||
| 34 | #include "common.h" | 34 | #include "common.h" |
| @@ -52,9 +52,9 @@ const char *email = "devel@monitoring-plugins.org"; | |||
| 52 | #endif | 52 | #endif |
| 53 | 53 | ||
| 54 | typedef struct { | 54 | typedef struct { |
| 55 | int is_percentage; | 55 | bool is_percentage; |
| 56 | uint64_t value; | 56 | uint64_t value; |
| 57 | } threshold_t; | 57 | } threshold; |
| 58 | 58 | ||
| 59 | int check_swap (float free_swap_mb, float total_swap_mb); | 59 | int check_swap (float free_swap_mb, float total_swap_mb); |
| 60 | int process_arguments (int argc, char **argv); | 60 | int process_arguments (int argc, char **argv); |
| @@ -62,10 +62,10 @@ int validate_arguments (void); | |||
| 62 | void print_usage (void); | 62 | void print_usage (void); |
| 63 | void print_help (void); | 63 | void print_help (void); |
| 64 | 64 | ||
| 65 | threshold_t warn; | 65 | threshold warn; |
| 66 | threshold_t crit; | 66 | threshold crit; |
| 67 | int verbose; | 67 | int verbose; |
| 68 | int allswaps; | 68 | bool allswaps = false; |
| 69 | int no_swap_state = STATE_CRITICAL; | 69 | int no_swap_state = STATE_CRITICAL; |
| 70 | 70 | ||
| 71 | int | 71 | int |
| @@ -383,10 +383,10 @@ main (int argc, char **argv) | |||
| 383 | if (crit.is_percentage) crit_print = crit.value * (total_swap_mb *1024 *1024/100); | 383 | if (crit.is_percentage) crit_print = crit.value * (total_swap_mb *1024 *1024/100); |
| 384 | 384 | ||
| 385 | puts (perfdata_uint64 ("swap", free_swap_mb *1024 *1024, "B", | 385 | puts (perfdata_uint64 ("swap", free_swap_mb *1024 *1024, "B", |
| 386 | TRUE, warn_print, | 386 | true, warn_print, |
| 387 | TRUE, crit_print, | 387 | true, crit_print, |
| 388 | TRUE, 0, | 388 | true, 0, |
| 389 | TRUE, (long) total_swap_mb * 1024 * 1024)); | 389 | true, (long) total_swap_mb * 1024 * 1024)); |
| 390 | 390 | ||
| 391 | return result; | 391 | return result; |
| 392 | } | 392 | } |
| @@ -399,28 +399,30 @@ check_swap(float free_swap_mb, float total_swap_mb) | |||
| 399 | if (!total_swap_mb) return no_swap_state; | 399 | if (!total_swap_mb) return no_swap_state; |
| 400 | 400 | ||
| 401 | uint64_t free_swap = free_swap_mb * (1024 * 1024); /* Convert back to bytes as warn and crit specified in bytes */ | 401 | uint64_t free_swap = free_swap_mb * (1024 * 1024); /* Convert back to bytes as warn and crit specified in bytes */ |
| 402 | |||
| 403 | if (!crit.is_percentage && crit.value >= free_swap) return STATE_CRITICAL; | ||
| 404 | if (!warn.is_percentage && warn.value >= free_swap) return STATE_WARNING; | ||
| 405 | |||
| 406 | |||
| 407 | uint64_t usage_percentage = ((total_swap_mb - free_swap_mb) / total_swap_mb) * 100; | 402 | uint64_t usage_percentage = ((total_swap_mb - free_swap_mb) / total_swap_mb) * 100; |
| 408 | 403 | ||
| 409 | if (crit.is_percentage && | 404 | if (warn.value || crit.value) { /* Thresholds defined */ |
| 410 | crit.value != 0 && | 405 | if (!crit.is_percentage && crit.value >= free_swap) return STATE_CRITICAL; |
| 411 | usage_percentage >= (100 - crit.value)) | 406 | if (!warn.is_percentage && warn.value >= free_swap) return STATE_WARNING; |
| 412 | { | 407 | |
| 413 | return STATE_CRITICAL; | 408 | if (crit.is_percentage && |
| 414 | } | 409 | crit.value != 0 && |
| 415 | 410 | usage_percentage >= (100 - crit.value)) | |
| 416 | if (warn.is_percentage && | 411 | { |
| 417 | warn.value != 0 && | 412 | return STATE_CRITICAL; |
| 418 | usage_percentage >= (100 - warn.value)) | 413 | } |
| 419 | { | 414 | |
| 420 | return STATE_WARNING; | 415 | if (warn.is_percentage && |
| 421 | } | 416 | warn.value != 0 && |
| 422 | 417 | usage_percentage >= (100 - warn.value)) | |
| 423 | return STATE_OK; | 418 | { |
| 419 | return STATE_WARNING; | ||
| 420 | } | ||
| 421 | |||
| 422 | return STATE_OK; | ||
| 423 | } else { /* Without thresholds */ | ||
| 424 | return STATE_OK; | ||
| 425 | } | ||
| 424 | } | 426 | } |
| 425 | 427 | ||
| 426 | 428 | ||
| @@ -443,9 +445,6 @@ process_arguments (int argc, char **argv) | |||
| 443 | {0, 0, 0, 0} | 445 | {0, 0, 0, 0} |
| 444 | }; | 446 | }; |
| 445 | 447 | ||
| 446 | if (argc < 2) | ||
| 447 | return ERROR; | ||
| 448 | |||
| 449 | while (1) { | 448 | while (1) { |
| 450 | c = getopt_long (argc, argv, "+?Vvhac:w:n:", longopts, &option); | 449 | c = getopt_long (argc, argv, "+?Vvhac:w:n:", longopts, &option); |
| 451 | 450 | ||
| @@ -465,7 +464,7 @@ process_arguments (int argc, char **argv) | |||
| 465 | 464 | ||
| 466 | if (optarg[length - 1] == '%') { | 465 | if (optarg[length - 1] == '%') { |
| 467 | /* It's percentage */ | 466 | /* It's percentage */ |
| 468 | warn.is_percentage = 1; | 467 | warn.is_percentage = true; |
| 469 | optarg[length - 1] = '\0'; | 468 | optarg[length - 1] = '\0'; |
| 470 | if (is_uint64(optarg, &warn.value)) { | 469 | if (is_uint64(optarg, &warn.value)) { |
| 471 | if (warn.value > 100) { | 470 | if (warn.value > 100) { |
| @@ -475,7 +474,7 @@ process_arguments (int argc, char **argv) | |||
| 475 | break; | 474 | break; |
| 476 | } else { | 475 | } else { |
| 477 | /* It's Bytes */ | 476 | /* It's Bytes */ |
| 478 | warn.is_percentage = 0; | 477 | warn.is_percentage = false; |
| 479 | if (is_uint64(optarg, &warn.value)) { | 478 | if (is_uint64(optarg, &warn.value)) { |
| 480 | break; | 479 | break; |
| 481 | } else { | 480 | } else { |
| @@ -495,7 +494,7 @@ process_arguments (int argc, char **argv) | |||
| 495 | 494 | ||
| 496 | if (optarg[length - 1] == '%') { | 495 | if (optarg[length - 1] == '%') { |
| 497 | /* It's percentage */ | 496 | /* It's percentage */ |
| 498 | crit.is_percentage = 1; | 497 | crit.is_percentage = true; |
| 499 | optarg[length - 1] = '\0'; | 498 | optarg[length - 1] = '\0'; |
| 500 | if (is_uint64(optarg, &crit.value)) { | 499 | if (is_uint64(optarg, &crit.value)) { |
| 501 | if (crit.value> 100) { | 500 | if (crit.value> 100) { |
| @@ -505,7 +504,7 @@ process_arguments (int argc, char **argv) | |||
| 505 | break; | 504 | break; |
| 506 | } else { | 505 | } else { |
| 507 | /* It's Bytes */ | 506 | /* It's Bytes */ |
| 508 | crit.is_percentage = 0; | 507 | crit.is_percentage = false; |
| 509 | if (is_uint64(optarg, &crit.value)) { | 508 | if (is_uint64(optarg, &crit.value)) { |
| 510 | break; | 509 | break; |
| 511 | } else { | 510 | } else { |
| @@ -514,7 +513,7 @@ process_arguments (int argc, char **argv) | |||
| 514 | } | 513 | } |
| 515 | } | 514 | } |
| 516 | case 'a': /* all swap */ | 515 | case 'a': /* all swap */ |
| 517 | allswaps = TRUE; | 516 | allswaps = true; |
| 518 | break; | 517 | break; |
| 519 | case 'n': | 518 | case 'n': |
| 520 | if ((no_swap_state = mp_translate_state(optarg)) == ERROR) { | 519 | if ((no_swap_state = mp_translate_state(optarg)) == ERROR) { |
| @@ -547,10 +546,7 @@ process_arguments (int argc, char **argv) | |||
| 547 | int | 546 | int |
| 548 | validate_arguments (void) | 547 | validate_arguments (void) |
| 549 | { | 548 | { |
| 550 | if (warn.value == 0 && crit.value == 0) { | 549 | if ((warn.is_percentage == crit.is_percentage) && (warn.value < crit.value)) { |
| 551 | return ERROR; | ||
| 552 | } | ||
| 553 | else if ((warn.is_percentage == crit.is_percentage) && (warn.value < crit.value)) { | ||
| 554 | /* This is NOT triggered if warn and crit are different units, e.g warn is percentage | 550 | /* This is NOT triggered if warn and crit are different units, e.g warn is percentage |
| 555 | * and crit is absolute. We cannot determine the condition at this point since we | 551 | * and crit is absolute. We cannot determine the condition at this point since we |
| 556 | * dont know the value of total swap yet | 552 | * dont know the value of total swap yet |
| @@ -595,6 +591,7 @@ print_help (void) | |||
| 595 | printf ("\n"); | 591 | printf ("\n"); |
| 596 | printf ("%s\n", _("Notes:")); | 592 | printf ("%s\n", _("Notes:")); |
| 597 | printf (" %s\n", _("Both INTEGER and PERCENT thresholds can be specified, they are all checked.")); | 593 | printf (" %s\n", _("Both INTEGER and PERCENT thresholds can be specified, they are all checked.")); |
| 594 | printf (" %s\n", _("Without thresholds, the plugin shows free swap space and performance data, but always returns OK.")); | ||
| 598 | printf (" %s\n", _("On AIX, if -a is specified, uses lsps -a, otherwise uses lsps -s.")); | 595 | printf (" %s\n", _("On AIX, if -a is specified, uses lsps -a, otherwise uses lsps -s.")); |
| 599 | 596 | ||
| 600 | printf (UT_SUPPORT); | 597 | printf (UT_SUPPORT); |
| @@ -605,6 +602,6 @@ void | |||
| 605 | print_usage (void) | 602 | print_usage (void) |
| 606 | { | 603 | { |
| 607 | printf ("%s\n", _("Usage:")); | 604 | printf ("%s\n", _("Usage:")); |
| 608 | printf (" %s [-av] -w <percent_free>%% -c <percent_free>%%\n",progname); | 605 | printf (" %s [-av] [-w <percent_free>%%] [-c <percent_free>%%]\n",progname); |
| 609 | printf (" -w <bytes_free> -c <bytes_free> [-n <state>]\n"); | 606 | printf (" [-w <bytes_free>] [-c <bytes_free>] [-n <state>]\n"); |
| 610 | } | 607 | } |
diff --git a/plugins/check_tcp.c b/plugins/check_tcp.c index 1d307cf3..01dd35eb 100644 --- a/plugins/check_tcp.c +++ b/plugins/check_tcp.c | |||
| @@ -41,7 +41,7 @@ const char *email = "devel@monitoring-plugins.org"; | |||
| 41 | #include <sys/select.h> | 41 | #include <sys/select.h> |
| 42 | 42 | ||
| 43 | #ifdef HAVE_SSL | 43 | #ifdef HAVE_SSL |
| 44 | static int check_cert = FALSE; | 44 | static bool check_cert = false; |
| 45 | static int days_till_exp_warn, days_till_exp_crit; | 45 | static int days_till_exp_warn, days_till_exp_crit; |
| 46 | # define my_recv(buf, len) ((flags & FLAG_SSL) ? np_net_ssl_read(buf, len) : read(sd, buf, len)) | 46 | # define my_recv(buf, len) ((flags & FLAG_SSL) ? np_net_ssl_read(buf, len) : read(sd, buf, len)) |
| 47 | # define my_send(buf, len) ((flags & FLAG_SSL) ? np_net_ssl_write(buf, len) : send(sd, buf, len, 0)) | 47 | # define my_send(buf, len) ((flags & FLAG_SSL) ? np_net_ssl_write(buf, len) : send(sd, buf, len, 0)) |
| @@ -65,12 +65,12 @@ static int READ_TIMEOUT = 2; | |||
| 65 | 65 | ||
| 66 | static int server_port = 0; | 66 | static int server_port = 0; |
| 67 | static char *server_address = NULL; | 67 | static char *server_address = NULL; |
| 68 | static int host_specified = FALSE; | 68 | static bool host_specified = false; |
| 69 | static char *server_send = NULL; | 69 | static char *server_send = NULL; |
| 70 | static char *server_quit = NULL; | 70 | static char *server_quit = NULL; |
| 71 | static char **server_expect; | 71 | static char **server_expect; |
| 72 | static size_t server_expect_count = 0; | 72 | static size_t server_expect_count = 0; |
| 73 | static size_t maxbytes = 0; | 73 | static ssize_t maxbytes = 0; |
| 74 | static char **warn_codes = NULL; | 74 | static char **warn_codes = NULL; |
| 75 | static size_t warn_codes_count = 0; | 75 | static size_t warn_codes_count = 0; |
| 76 | static char **crit_codes = NULL; | 76 | static char **crit_codes = NULL; |
| @@ -88,7 +88,7 @@ static int match_flags = NP_MATCH_EXACT; | |||
| 88 | 88 | ||
| 89 | #ifdef HAVE_SSL | 89 | #ifdef HAVE_SSL |
| 90 | static char *sni = NULL; | 90 | static char *sni = NULL; |
| 91 | static int sni_specified = FALSE; | 91 | static bool sni_specified = false; |
| 92 | #endif | 92 | #endif |
| 93 | 93 | ||
| 94 | #define FLAG_SSL 0x01 | 94 | #define FLAG_SSL 0x01 |
| @@ -102,11 +102,9 @@ int | |||
| 102 | main (int argc, char **argv) | 102 | main (int argc, char **argv) |
| 103 | { | 103 | { |
| 104 | int result = STATE_UNKNOWN; | 104 | int result = STATE_UNKNOWN; |
| 105 | int i; | ||
| 106 | char *status = NULL; | 105 | char *status = NULL; |
| 107 | struct timeval tv; | 106 | struct timeval tv; |
| 108 | struct timeval timeout; | 107 | struct timeval timeout; |
| 109 | size_t len; | ||
| 110 | int match = -1; | 108 | int match = -1; |
| 111 | fd_set rfds; | 109 | fd_set rfds; |
| 112 | 110 | ||
| @@ -121,10 +119,10 @@ main (int argc, char **argv) | |||
| 121 | if(progname != NULL) progname++; | 119 | if(progname != NULL) progname++; |
| 122 | else progname = argv[0]; | 120 | else progname = argv[0]; |
| 123 | 121 | ||
| 124 | len = strlen(progname); | 122 | size_t prog_name_len = strlen(progname); |
| 125 | if(len > 6 && !memcmp(progname, "check_", 6)) { | 123 | if(prog_name_len > 6 && !memcmp(progname, "check_", 6)) { |
| 126 | SERVICE = strdup(progname + 6); | 124 | SERVICE = strdup(progname + 6); |
| 127 | for(i = 0; i < len - 6; i++) | 125 | for(size_t i = 0; i < prog_name_len - 6; i++) |
| 128 | SERVICE[i] = toupper(SERVICE[i]); | 126 | SERVICE[i] = toupper(SERVICE[i]); |
| 129 | } | 127 | } |
| 130 | 128 | ||
| @@ -247,7 +245,7 @@ main (int argc, char **argv) | |||
| 247 | #ifdef HAVE_SSL | 245 | #ifdef HAVE_SSL |
| 248 | if (flags & FLAG_SSL){ | 246 | if (flags & FLAG_SSL){ |
| 249 | result = np_net_ssl_init_with_hostname(sd, (sni_specified ? sni : NULL)); | 247 | result = np_net_ssl_init_with_hostname(sd, (sni_specified ? sni : NULL)); |
| 250 | if (result == STATE_OK && check_cert == TRUE) { | 248 | if (result == STATE_OK && check_cert) { |
| 251 | result = np_net_ssl_check_cert(days_till_exp_warn, days_till_exp_crit); | 249 | result = np_net_ssl_check_cert(days_till_exp_warn, days_till_exp_crit); |
| 252 | } | 250 | } |
| 253 | } | 251 | } |
| @@ -275,19 +273,21 @@ main (int argc, char **argv) | |||
| 275 | printf("Quit string: %s\n", server_quit); | 273 | printf("Quit string: %s\n", server_quit); |
| 276 | } | 274 | } |
| 277 | printf("server_expect_count: %d\n", (int)server_expect_count); | 275 | printf("server_expect_count: %d\n", (int)server_expect_count); |
| 278 | for(i = 0; i < server_expect_count; i++) | 276 | for(size_t i = 0; i < server_expect_count; i++) |
| 279 | printf("\t%d: %s\n", i, server_expect[i]); | 277 | printf("\t%zd: %s\n", i, server_expect[i]); |
| 280 | } | 278 | } |
| 281 | 279 | ||
| 282 | /* if(len) later on, we know we have a non-NULL response */ | 280 | /* if(len) later on, we know we have a non-NULL response */ |
| 283 | len = 0; | 281 | ssize_t len = 0; |
| 282 | |||
| 284 | if (server_expect_count) { | 283 | if (server_expect_count) { |
| 284 | ssize_t received = 0; | ||
| 285 | 285 | ||
| 286 | /* watch for the expect string */ | 286 | /* watch for the expect string */ |
| 287 | while ((i = my_recv(buffer, sizeof(buffer))) > 0) { | 287 | while ((received = my_recv(buffer, sizeof(buffer))) > 0) { |
| 288 | status = realloc(status, len + i + 1); | 288 | status = realloc(status, len + received + 1); |
| 289 | memcpy(&status[len], buffer, i); | 289 | memcpy(&status[len], buffer, received); |
| 290 | len += i; | 290 | len += received; |
| 291 | status[len] = '\0'; | 291 | status[len] = '\0'; |
| 292 | 292 | ||
| 293 | /* stop reading if user-forced */ | 293 | /* stop reading if user-forced */ |
| @@ -307,6 +307,7 @@ main (int argc, char **argv) | |||
| 307 | if(select(sd + 1, &rfds, NULL, NULL, &timeout) <= 0) | 307 | if(select(sd + 1, &rfds, NULL, NULL, &timeout) <= 0) |
| 308 | break; | 308 | break; |
| 309 | } | 309 | } |
| 310 | |||
| 310 | if (match == NP_MATCH_RETRY) | 311 | if (match == NP_MATCH_RETRY) |
| 311 | match = NP_MATCH_FAILURE; | 312 | match = NP_MATCH_FAILURE; |
| 312 | 313 | ||
| @@ -378,18 +379,18 @@ main (int argc, char **argv) | |||
| 378 | if(match == NP_MATCH_FAILURE) | 379 | if(match == NP_MATCH_FAILURE) |
| 379 | printf ("|%s", | 380 | printf ("|%s", |
| 380 | fperfdata ("time", elapsed_time, "s", | 381 | fperfdata ("time", elapsed_time, "s", |
| 381 | (flags & FLAG_TIME_WARN ? TRUE : FALSE), 0, | 382 | (flags & FLAG_TIME_WARN ? true : false), 0, |
| 382 | (flags & FLAG_TIME_CRIT ? TRUE : FALSE), 0, | 383 | (flags & FLAG_TIME_CRIT ? true : false), 0, |
| 383 | TRUE, 0, | 384 | true, 0, |
| 384 | TRUE, socket_timeout) | 385 | true, socket_timeout) |
| 385 | ); | 386 | ); |
| 386 | else | 387 | else |
| 387 | printf("|%s", | 388 | printf("|%s", |
| 388 | fperfdata ("time", elapsed_time, "s", | 389 | fperfdata ("time", elapsed_time, "s", |
| 389 | (flags & FLAG_TIME_WARN ? TRUE : FALSE), warning_time, | 390 | (flags & FLAG_TIME_WARN ? true : false), warning_time, |
| 390 | (flags & FLAG_TIME_CRIT ? TRUE : FALSE), critical_time, | 391 | (flags & FLAG_TIME_CRIT ? true : false), critical_time, |
| 391 | TRUE, 0, | 392 | true, 0, |
| 392 | TRUE, socket_timeout) | 393 | true, socket_timeout) |
| 393 | ); | 394 | ); |
| 394 | 395 | ||
| 395 | putchar('\n'); | 396 | putchar('\n'); |
| @@ -399,11 +400,9 @@ main (int argc, char **argv) | |||
| 399 | 400 | ||
| 400 | 401 | ||
| 401 | /* process command-line arguments */ | 402 | /* process command-line arguments */ |
| 402 | static int | 403 | static int process_arguments (int argc, char **argv) { |
| 403 | process_arguments (int argc, char **argv) | ||
| 404 | { | ||
| 405 | int c; | 404 | int c; |
| 406 | int escape = 0; | 405 | bool escape = false; |
| 407 | char *temp; | 406 | char *temp; |
| 408 | 407 | ||
| 409 | enum { | 408 | enum { |
| @@ -492,7 +491,7 @@ process_arguments (int argc, char **argv) | |||
| 492 | #endif | 491 | #endif |
| 493 | break; | 492 | break; |
| 494 | case 'H': /* hostname */ | 493 | case 'H': /* hostname */ |
| 495 | host_specified = TRUE; | 494 | host_specified = true; |
| 496 | server_address = optarg; | 495 | server_address = optarg; |
| 497 | break; | 496 | break; |
| 498 | case 'c': /* critical */ | 497 | case 'c': /* critical */ |
| @@ -527,7 +526,7 @@ process_arguments (int argc, char **argv) | |||
| 527 | server_port = atoi (optarg); | 526 | server_port = atoi (optarg); |
| 528 | break; | 527 | break; |
| 529 | case 'E': | 528 | case 'E': |
| 530 | escape = 1; | 529 | escape = true; |
| 531 | break; | 530 | break; |
| 532 | case 's': | 531 | case 's': |
| 533 | if (escape) | 532 | if (escape) |
| @@ -601,7 +600,7 @@ process_arguments (int argc, char **argv) | |||
| 601 | usage2 (_("Invalid certificate expiration period"), optarg); | 600 | usage2 (_("Invalid certificate expiration period"), optarg); |
| 602 | days_till_exp_warn = atoi (optarg); | 601 | days_till_exp_warn = atoi (optarg); |
| 603 | } | 602 | } |
| 604 | check_cert = TRUE; | 603 | check_cert = true; |
| 605 | flags |= FLAG_SSL; | 604 | flags |= FLAG_SSL; |
| 606 | break; | 605 | break; |
| 607 | # endif /* USE_OPENSSL */ | 606 | # endif /* USE_OPENSSL */ |
| @@ -617,7 +616,7 @@ process_arguments (int argc, char **argv) | |||
| 617 | case SNI_OPTION: | 616 | case SNI_OPTION: |
| 618 | #ifdef HAVE_SSL | 617 | #ifdef HAVE_SSL |
| 619 | flags |= FLAG_SSL; | 618 | flags |= FLAG_SSL; |
| 620 | sni_specified = TRUE; | 619 | sni_specified = true; |
| 621 | sni = optarg; | 620 | sni = optarg; |
| 622 | #else | 621 | #else |
| 623 | die (STATE_UNKNOWN, _("Invalid option - SSL is not available")); | 622 | die (STATE_UNKNOWN, _("Invalid option - SSL is not available")); |
| @@ -630,15 +629,15 @@ process_arguments (int argc, char **argv) | |||
| 630 | } | 629 | } |
| 631 | 630 | ||
| 632 | c = optind; | 631 | c = optind; |
| 633 | if(host_specified == FALSE && c < argc) | 632 | if(!host_specified && c < argc) |
| 634 | server_address = strdup (argv[c++]); | 633 | server_address = strdup (argv[c++]); |
| 635 | 634 | ||
| 636 | if (server_address == NULL) | 635 | if (server_address == NULL) |
| 637 | usage4 (_("You must provide a server address")); | 636 | usage4 (_("You must provide a server address")); |
| 638 | else if (server_address[0] != '/' && is_host (server_address) == FALSE) | 637 | else if (server_address[0] != '/' && !is_host(server_address)) |
| 639 | die (STATE_CRITICAL, "%s %s - %s: %s\n", SERVICE, state_text(STATE_CRITICAL), _("Invalid hostname, address or socket"), server_address); | 638 | die (STATE_CRITICAL, "%s %s - %s: %s\n", SERVICE, state_text(STATE_CRITICAL), _("Invalid hostname, address or socket"), server_address); |
| 640 | 639 | ||
| 641 | return TRUE; | 640 | return OK; |
| 642 | } | 641 | } |
| 643 | 642 | ||
| 644 | 643 | ||
diff --git a/plugins/check_time.c b/plugins/check_time.c index baf8c591..f50ea427 100644 --- a/plugins/check_time.c +++ b/plugins/check_time.c | |||
| @@ -45,16 +45,16 @@ enum { | |||
| 45 | uint32_t raw_server_time; | 45 | uint32_t raw_server_time; |
| 46 | unsigned long server_time, diff_time; | 46 | unsigned long server_time, diff_time; |
| 47 | int warning_time = 0; | 47 | int warning_time = 0; |
| 48 | int check_warning_time = FALSE; | 48 | bool check_warning_time = false; |
| 49 | int critical_time = 0; | 49 | int critical_time = 0; |
| 50 | int check_critical_time = FALSE; | 50 | bool check_critical_time = false; |
| 51 | unsigned long warning_diff = 0; | 51 | unsigned long warning_diff = 0; |
| 52 | int check_warning_diff = FALSE; | 52 | bool check_warning_diff = false; |
| 53 | unsigned long critical_diff = 0; | 53 | unsigned long critical_diff = 0; |
| 54 | int check_critical_diff = FALSE; | 54 | bool check_critical_diff = false; |
| 55 | int server_port = TIME_PORT; | 55 | int server_port = TIME_PORT; |
| 56 | char *server_address = NULL; | 56 | char *server_address = NULL; |
| 57 | int use_udp = FALSE; | 57 | bool use_udp = false; |
| 58 | 58 | ||
| 59 | int process_arguments (int, char **); | 59 | int process_arguments (int, char **); |
| 60 | void print_help (void); | 60 | void print_help (void); |
| @@ -92,9 +92,9 @@ main (int argc, char **argv) | |||
| 92 | } | 92 | } |
| 93 | 93 | ||
| 94 | if (result != STATE_OK) { | 94 | if (result != STATE_OK) { |
| 95 | if (check_critical_time == TRUE) | 95 | if (check_critical_time) |
| 96 | result = STATE_CRITICAL; | 96 | result = STATE_CRITICAL; |
| 97 | else if (check_warning_time == TRUE) | 97 | else if (check_warning_time) |
| 98 | result = STATE_WARNING; | 98 | result = STATE_WARNING; |
| 99 | else | 99 | else |
| 100 | result = STATE_UNKNOWN; | 100 | result = STATE_UNKNOWN; |
| @@ -105,9 +105,9 @@ main (int argc, char **argv) | |||
| 105 | 105 | ||
| 106 | if (use_udp) { | 106 | if (use_udp) { |
| 107 | if (send (sd, "", 0, 0) < 0) { | 107 | if (send (sd, "", 0, 0) < 0) { |
| 108 | if (check_critical_time == TRUE) | 108 | if (check_critical_time) |
| 109 | result = STATE_CRITICAL; | 109 | result = STATE_CRITICAL; |
| 110 | else if (check_warning_time == TRUE) | 110 | else if (check_warning_time) |
| 111 | result = STATE_WARNING; | 111 | result = STATE_WARNING; |
| 112 | else | 112 | else |
| 113 | result = STATE_UNKNOWN; | 113 | result = STATE_UNKNOWN; |
| @@ -129,9 +129,9 @@ main (int argc, char **argv) | |||
| 129 | 129 | ||
| 130 | /* return a WARNING status if we couldn't read any data */ | 130 | /* return a WARNING status if we couldn't read any data */ |
| 131 | if (result <= 0) { | 131 | if (result <= 0) { |
| 132 | if (check_critical_time == TRUE) | 132 | if (check_critical_time) |
| 133 | result = STATE_CRITICAL; | 133 | result = STATE_CRITICAL; |
| 134 | else if (check_warning_time == TRUE) | 134 | else if (check_warning_time) |
| 135 | result = STATE_WARNING; | 135 | result = STATE_WARNING; |
| 136 | else | 136 | else |
| 137 | result = STATE_UNKNOWN; | 137 | result = STATE_UNKNOWN; |
| @@ -143,9 +143,9 @@ main (int argc, char **argv) | |||
| 143 | result = STATE_OK; | 143 | result = STATE_OK; |
| 144 | 144 | ||
| 145 | conntime = (end_time - start_time); | 145 | conntime = (end_time - start_time); |
| 146 | if (check_critical_time == TRUE && conntime > critical_time) | 146 | if (check_critical_time&& conntime > critical_time) |
| 147 | result = STATE_CRITICAL; | 147 | result = STATE_CRITICAL; |
| 148 | else if (check_warning_time == TRUE && conntime > warning_time) | 148 | else if (check_warning_time && conntime > warning_time) |
| 149 | result = STATE_WARNING; | 149 | result = STATE_WARNING; |
| 150 | 150 | ||
| 151 | if (result != STATE_OK) | 151 | if (result != STATE_OK) |
| @@ -154,7 +154,7 @@ main (int argc, char **argv) | |||
| 154 | perfdata ("time", (long)conntime, "s", | 154 | perfdata ("time", (long)conntime, "s", |
| 155 | check_warning_time, (long)warning_time, | 155 | check_warning_time, (long)warning_time, |
| 156 | check_critical_time, (long)critical_time, | 156 | check_critical_time, (long)critical_time, |
| 157 | TRUE, 0, FALSE, 0)); | 157 | true, 0, false, 0)); |
| 158 | 158 | ||
| 159 | server_time = ntohl (raw_server_time) - UNIX_EPOCH; | 159 | server_time = ntohl (raw_server_time) - UNIX_EPOCH; |
| 160 | if (server_time > (unsigned long)end_time) | 160 | if (server_time > (unsigned long)end_time) |
| @@ -162,9 +162,9 @@ main (int argc, char **argv) | |||
| 162 | else | 162 | else |
| 163 | diff_time = (unsigned long)end_time - server_time; | 163 | diff_time = (unsigned long)end_time - server_time; |
| 164 | 164 | ||
| 165 | if (check_critical_diff == TRUE && diff_time > critical_diff) | 165 | if (check_critical_diff&& diff_time > critical_diff) |
| 166 | result = STATE_CRITICAL; | 166 | result = STATE_CRITICAL; |
| 167 | else if (check_warning_diff == TRUE && diff_time > warning_diff) | 167 | else if (check_warning_diff&& diff_time > warning_diff) |
| 168 | result = STATE_WARNING; | 168 | result = STATE_WARNING; |
| 169 | 169 | ||
| 170 | printf (_("TIME %s - %lu second time difference|%s %s\n"), | 170 | printf (_("TIME %s - %lu second time difference|%s %s\n"), |
| @@ -172,11 +172,11 @@ main (int argc, char **argv) | |||
| 172 | perfdata ("time", (long)conntime, "s", | 172 | perfdata ("time", (long)conntime, "s", |
| 173 | check_warning_time, (long)warning_time, | 173 | check_warning_time, (long)warning_time, |
| 174 | check_critical_time, (long)critical_time, | 174 | check_critical_time, (long)critical_time, |
| 175 | TRUE, 0, FALSE, 0), | 175 | true, 0, false, 0), |
| 176 | perfdata ("offset", diff_time, "s", | 176 | perfdata ("offset", diff_time, "s", |
| 177 | check_warning_diff, warning_diff, | 177 | check_warning_diff, warning_diff, |
| 178 | check_critical_diff, critical_diff, | 178 | check_critical_diff, critical_diff, |
| 179 | TRUE, 0, FALSE, 0)); | 179 | true, 0, false, 0)); |
| 180 | return result; | 180 | return result; |
| 181 | } | 181 | } |
| 182 | 182 | ||
| @@ -219,7 +219,7 @@ process_arguments (int argc, char **argv) | |||
| 219 | strcpy (argv[c], "-C"); | 219 | strcpy (argv[c], "-C"); |
| 220 | } | 220 | } |
| 221 | 221 | ||
| 222 | while (1) { | 222 | while (true) { |
| 223 | c = getopt_long (argc, argv, "hVH:w:c:W:C:p:t:u", longopts, | 223 | c = getopt_long (argc, argv, "hVH:w:c:W:C:p:t:u", longopts, |
| 224 | &option); | 224 | &option); |
| 225 | 225 | ||
| @@ -236,19 +236,19 @@ process_arguments (int argc, char **argv) | |||
| 236 | print_revision (progname, NP_VERSION); | 236 | print_revision (progname, NP_VERSION); |
| 237 | exit (STATE_UNKNOWN); | 237 | exit (STATE_UNKNOWN); |
| 238 | case 'H': /* hostname */ | 238 | case 'H': /* hostname */ |
| 239 | if (is_host (optarg) == FALSE) | 239 | if (!is_host (optarg)) |
| 240 | usage2 (_("Invalid hostname/address"), optarg); | 240 | usage2 (_("Invalid hostname/address"), optarg); |
| 241 | server_address = optarg; | 241 | server_address = optarg; |
| 242 | break; | 242 | break; |
| 243 | case 'w': /* warning-variance */ | 243 | case 'w': /* warning-variance */ |
| 244 | if (is_intnonneg (optarg)) { | 244 | if (is_intnonneg (optarg)) { |
| 245 | warning_diff = strtoul (optarg, NULL, 10); | 245 | warning_diff = strtoul (optarg, NULL, 10); |
| 246 | check_warning_diff = TRUE; | 246 | check_warning_diff = true; |
| 247 | } | 247 | } |
| 248 | else if (strspn (optarg, "0123456789:,") > 0) { | 248 | else if (strspn (optarg, "0123456789:,") > 0) { |
| 249 | if (sscanf (optarg, "%lu%*[:,]%d", &warning_diff, &warning_time) == 2) { | 249 | if (sscanf (optarg, "%lu%*[:,]%d", &warning_diff, &warning_time) == 2) { |
| 250 | check_warning_diff = TRUE; | 250 | check_warning_diff = true; |
| 251 | check_warning_time = TRUE; | 251 | check_warning_time = true; |
| 252 | } | 252 | } |
| 253 | else { | 253 | else { |
| 254 | usage4 (_("Warning thresholds must be a positive integer")); | 254 | usage4 (_("Warning thresholds must be a positive integer")); |
| @@ -261,13 +261,13 @@ process_arguments (int argc, char **argv) | |||
| 261 | case 'c': /* critical-variance */ | 261 | case 'c': /* critical-variance */ |
| 262 | if (is_intnonneg (optarg)) { | 262 | if (is_intnonneg (optarg)) { |
| 263 | critical_diff = strtoul (optarg, NULL, 10); | 263 | critical_diff = strtoul (optarg, NULL, 10); |
| 264 | check_critical_diff = TRUE; | 264 | check_critical_diff = true; |
| 265 | } | 265 | } |
| 266 | else if (strspn (optarg, "0123456789:,") > 0) { | 266 | else if (strspn (optarg, "0123456789:,") > 0) { |
| 267 | if (sscanf (optarg, "%lu%*[:,]%d", &critical_diff, &critical_time) == | 267 | if (sscanf (optarg, "%lu%*[:,]%d", &critical_diff, &critical_time) == |
| 268 | 2) { | 268 | 2) { |
| 269 | check_critical_diff = TRUE; | 269 | check_critical_diff = true; |
| 270 | check_critical_time = TRUE; | 270 | check_critical_time = true; |
| 271 | } | 271 | } |
| 272 | else { | 272 | else { |
| 273 | usage4 (_("Critical thresholds must be a positive integer")); | 273 | usage4 (_("Critical thresholds must be a positive integer")); |
| @@ -282,14 +282,14 @@ process_arguments (int argc, char **argv) | |||
| 282 | usage4 (_("Warning threshold must be a positive integer")); | 282 | usage4 (_("Warning threshold must be a positive integer")); |
| 283 | else | 283 | else |
| 284 | warning_time = atoi (optarg); | 284 | warning_time = atoi (optarg); |
| 285 | check_warning_time = TRUE; | 285 | check_warning_time = true; |
| 286 | break; | 286 | break; |
| 287 | case 'C': /* critical-connect */ | 287 | case 'C': /* critical-connect */ |
| 288 | if (!is_intnonneg (optarg)) | 288 | if (!is_intnonneg (optarg)) |
| 289 | usage4 (_("Critical threshold must be a positive integer")); | 289 | usage4 (_("Critical threshold must be a positive integer")); |
| 290 | else | 290 | else |
| 291 | critical_time = atoi (optarg); | 291 | critical_time = atoi (optarg); |
| 292 | check_critical_time = TRUE; | 292 | check_critical_time = true; |
| 293 | break; | 293 | break; |
| 294 | case 'p': /* port */ | 294 | case 'p': /* port */ |
| 295 | if (!is_intnonneg (optarg)) | 295 | if (!is_intnonneg (optarg)) |
| @@ -304,14 +304,14 @@ process_arguments (int argc, char **argv) | |||
| 304 | socket_timeout = atoi (optarg); | 304 | socket_timeout = atoi (optarg); |
| 305 | break; | 305 | break; |
| 306 | case 'u': /* udp */ | 306 | case 'u': /* udp */ |
| 307 | use_udp = TRUE; | 307 | use_udp = true; |
| 308 | } | 308 | } |
| 309 | } | 309 | } |
| 310 | 310 | ||
| 311 | c = optind; | 311 | c = optind; |
| 312 | if (server_address == NULL) { | 312 | if (server_address == NULL) { |
| 313 | if (argc > c) { | 313 | if (argc > c) { |
| 314 | if (is_host (argv[c]) == FALSE) | 314 | if (!is_host (argv[c])) |
| 315 | usage2 (_("Invalid hostname/address"), optarg); | 315 | usage2 (_("Invalid hostname/address"), optarg); |
| 316 | server_address = argv[c]; | 316 | server_address = argv[c]; |
| 317 | } | 317 | } |
diff --git a/plugins/check_ups.c b/plugins/check_ups.c index 68737c4b..380ff3bc 100644 --- a/plugins/check_ups.c +++ b/plugins/check_ups.c | |||
| @@ -1,665 +1,746 @@ | |||
| 1 | /***************************************************************************** | 1 | /***************************************************************************** |
| 2 | * | 2 | * |
| 3 | * Monitoring check_ups plugin | 3 | * Monitoring check_ups plugin |
| 4 | * | 4 | * |
| 5 | * License: GPL | 5 | * License: GPL |
| 6 | * Copyright (c) 2000 Tom Shields | 6 | * Copyright (c) 2000 Tom Shields |
| 7 | * 2004 Alain Richard <alain.richard@equation.fr> | 7 | * 2004 Alain Richard <alain.richard@equation.fr> |
| 8 | * 2004 Arnaud Quette <arnaud.quette@mgeups.com> | 8 | * 2004 Arnaud Quette <arnaud.quette@mgeups.com> |
| 9 | * Copyright (c) 2002-2007 Monitoring Plugins Development Team | 9 | * Copyright (c) 2002-2023 Monitoring Plugins Development Team |
| 10 | * | 10 | * |
| 11 | * Description: | 11 | * Description: |
| 12 | * | 12 | * |
| 13 | * This file contains Network UPS Tools plugin for Monitoring | 13 | * This file contains Network UPS Tools plugin for Monitoring |
| 14 | * | 14 | * |
| 15 | * This plugin tests the UPS service on the specified host. Network UPS Tools | 15 | * This plugin tests the UPS service on the specified host. Network UPS Tools |
| 16 | * from www.networkupstools.org must be running for this plugin to work. | 16 | * from www.networkupstools.org must be running for this plugin to work. |
| 17 | * | 17 | * |
| 18 | * | 18 | * |
| 19 | * This program is free software: you can redistribute it and/or modify | 19 | * This program is free software: you can redistribute it and/or modify |
| 20 | * it under the terms of the GNU General Public License as published by | 20 | * it under the terms of the GNU General Public License as published by |
| 21 | * the Free Software Foundation, either version 3 of the License, or | 21 | * the Free Software Foundation, either version 3 of the License, or |
| 22 | * (at your option) any later version. | 22 | * (at your option) any later version. |
| 23 | * | 23 | * |
| 24 | * This program is distributed in the hope that it will be useful, | 24 | * This program is distributed in the hope that it will be useful, |
| 25 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 25 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 26 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 26 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 27 | * GNU General Public License for more details. | 27 | * GNU General Public License for more details. |
| 28 | * | 28 | * |
| 29 | * You should have received a copy of the GNU General Public License | 29 | * You should have received a copy of the GNU General Public License |
| 30 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 30 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 31 | * | 31 | * |
| 32 | * | 32 | * |
| 33 | *****************************************************************************/ | 33 | *****************************************************************************/ |
| 34 | 34 | ||
| 35 | const char *progname = "check_ups"; | 35 | const char *progname = "check_ups"; |
| 36 | const char *copyright = "2000-2007"; | 36 | const char *copyright = "2000-2023"; |
| 37 | const char *email = "devel@monitoring-plugins.org"; | 37 | const char *email = "devel@monitoring-plugins.org"; |
| 38 | 38 | ||
| 39 | #include "common.h" | 39 | #include "common.h" |
| 40 | #include "netutils.h" | 40 | #include "netutils.h" |
| 41 | #include "utils.h" | 41 | #include "utils.h" |
| 42 | 42 | ||
| 43 | enum { | 43 | enum { PORT = 3493 }; |
| 44 | PORT = 3493 | 44 | |
| 45 | }; | 45 | #define UPS_NONE 0 /* no supported options */ |
| 46 | 46 | #define UPS_UTILITY 1 /* supports utility line */ | |
| 47 | #define CHECK_NONE 0 | 47 | #define UPS_BATTPCT 2 /* supports percent battery remaining */ |
| 48 | 48 | #define UPS_STATUS 4 /* supports UPS status */ | |
| 49 | #define UPS_NONE 0 /* no supported options */ | 49 | #define UPS_TEMP 8 /* supports UPS temperature */ |
| 50 | #define UPS_UTILITY 1 /* supports utility line voltage */ | 50 | #define UPS_LOADPCT 16 /* supports load percent */ |
| 51 | #define UPS_BATTPCT 2 /* supports percent battery remaining */ | 51 | #define UPS_REALPOWER 32 /* supports real power */ |
| 52 | #define UPS_STATUS 4 /* supports UPS status */ | 52 | |
| 53 | #define UPS_TEMP 8 /* supports UPS temperature */ | 53 | #define UPSSTATUS_NONE 0 |
| 54 | #define UPS_LOADPCT 16 /* supports load percent */ | 54 | #define UPSSTATUS_OFF 1 |
| 55 | 55 | #define UPSSTATUS_OL 2 | |
| 56 | #define UPSSTATUS_NONE 0 | 56 | #define UPSSTATUS_OB 4 |
| 57 | #define UPSSTATUS_OFF 1 | 57 | #define UPSSTATUS_LB 8 |
| 58 | #define UPSSTATUS_OL 2 | 58 | #define UPSSTATUS_CAL 16 |
| 59 | #define UPSSTATUS_OB 4 | 59 | #define UPSSTATUS_RB 32 /*Replace Battery */ |
| 60 | #define UPSSTATUS_LB 8 | 60 | #define UPSSTATUS_BYPASS 64 |
| 61 | #define UPSSTATUS_CAL 16 | 61 | #define UPSSTATUS_OVER 128 |
| 62 | #define UPSSTATUS_RB 32 /*Replace Battery */ | 62 | #define UPSSTATUS_TRIM 256 |
| 63 | #define UPSSTATUS_BYPASS 64 | 63 | #define UPSSTATUS_BOOST 512 |
| 64 | #define UPSSTATUS_OVER 128 | ||
| 65 | #define UPSSTATUS_TRIM 256 | ||
| 66 | #define UPSSTATUS_BOOST 512 | ||
| 67 | #define UPSSTATUS_CHRG 1024 | 64 | #define UPSSTATUS_CHRG 1024 |
| 68 | #define UPSSTATUS_DISCHRG 2048 | 65 | #define UPSSTATUS_DISCHRG 2048 |
| 69 | #define UPSSTATUS_UNKNOWN 4096 | 66 | #define UPSSTATUS_UNKNOWN 4096 |
| 70 | 67 | #define UPSSTATUS_ALARM 8192 | |
| 71 | enum { NOSUCHVAR = ERROR-1 }; | 68 | |
| 72 | 69 | enum { NOSUCHVAR = ERROR - 1 }; | |
| 73 | int server_port = PORT; | 70 | |
| 74 | char *server_address; | 71 | typedef struct ups_config { |
| 75 | char *ups_name = NULL; | 72 | unsigned int server_port; |
| 76 | double warning_value = 0.0; | 73 | char *server_address; |
| 77 | double critical_value = 0.0; | 74 | char *ups_name; |
| 78 | int check_warn = FALSE; | 75 | double warning_value; |
| 79 | int check_crit = FALSE; | 76 | double critical_value; |
| 80 | int check_variable = UPS_NONE; | 77 | bool check_warn; |
| 81 | int supported_options = UPS_NONE; | 78 | bool check_crit; |
| 82 | int status = UPSSTATUS_NONE; | 79 | int check_variable; |
| 83 | 80 | int status; | |
| 84 | double ups_utility_voltage = 0.0; | 81 | bool temp_output_c; |
| 85 | double ups_battery_percent = 0.0; | 82 | } ups_config; |
| 86 | double ups_load_percent = 0.0; | 83 | |
| 87 | double ups_temperature = 0.0; | 84 | ups_config ups_config_init(void) { |
| 88 | char *ups_status; | 85 | ups_config tmp = {0}; |
| 89 | int temp_output_c = 0; | 86 | tmp.server_port = PORT; |
| 90 | 87 | tmp.server_address = NULL; | |
| 91 | int determine_status (void); | 88 | tmp.ups_name = NULL; |
| 92 | int get_ups_variable (const char *, char *); | 89 | tmp.check_variable = UPS_NONE; |
| 93 | 90 | tmp.status = UPSSTATUS_NONE; | |
| 94 | int process_arguments (int, char **); | 91 | |
| 95 | int validate_arguments (void); | 92 | return tmp; |
| 96 | void print_help (void); | 93 | } |
| 97 | void print_usage (void); | 94 | |
| 98 | 95 | // Forward declarations | |
| 99 | int | 96 | int determine_status(ups_config *, int *supported_options); |
| 100 | main (int argc, char **argv) | 97 | int get_ups_variable(const char *, char *, const ups_config config); |
| 101 | { | 98 | |
| 102 | int result = STATE_UNKNOWN; | 99 | int process_arguments(int, char **, ups_config *); |
| 103 | char *message; | 100 | int validate_arguments(ups_config); |
| 101 | void print_help(void); | ||
| 102 | void print_usage(void); | ||
| 103 | |||
| 104 | int main(int argc, char **argv) { | ||
| 105 | setlocale(LC_ALL, ""); | ||
| 106 | bindtextdomain(PACKAGE, LOCALEDIR); | ||
| 107 | textdomain(PACKAGE); | ||
| 108 | |||
| 109 | char *ups_status; | ||
| 110 | ups_status = strdup("N/A"); | ||
| 111 | |||
| 104 | char *data; | 112 | char *data; |
| 105 | char *tunits; | 113 | data = strdup(""); |
| 106 | char temp_buffer[MAX_INPUT_BUFFER]; | ||
| 107 | double ups_utility_deviation = 0.0; | ||
| 108 | int res; | ||
| 109 | 114 | ||
| 110 | setlocale (LC_ALL, ""); | 115 | char *message; |
| 111 | bindtextdomain (PACKAGE, LOCALEDIR); | 116 | message = strdup(""); |
| 112 | textdomain (PACKAGE); | ||
| 113 | 117 | ||
| 114 | ups_status = strdup ("N/A"); | 118 | // Exit result |
| 115 | data = strdup (""); | 119 | int result = STATE_UNKNOWN; |
| 116 | message = strdup (""); | ||
| 117 | 120 | ||
| 118 | /* Parse extra opts if any */ | 121 | /* Parse extra opts if any */ |
| 119 | argv=np_extra_opts (&argc, argv, progname); | 122 | argv = np_extra_opts(&argc, argv, progname); |
| 120 | 123 | ||
| 121 | if (process_arguments (argc, argv) == ERROR) | 124 | // Config from commandline |
| 122 | usage4 (_("Could not parse arguments")); | 125 | ups_config config = ups_config_init(); |
| 126 | |||
| 127 | if (process_arguments(argc, argv, &config) == ERROR) { | ||
| 128 | usage4(_("Could not parse arguments")); | ||
| 129 | } | ||
| 123 | 130 | ||
| 124 | /* initialize alarm signal handling */ | 131 | /* initialize alarm signal handling */ |
| 125 | signal (SIGALRM, socket_timeout_alarm_handler); | 132 | signal(SIGALRM, socket_timeout_alarm_handler); |
| 126 | 133 | ||
| 127 | /* set socket timeout */ | 134 | /* set socket timeout */ |
| 128 | alarm (socket_timeout); | 135 | alarm(socket_timeout); |
| 136 | |||
| 137 | int supported_options = UPS_NONE; | ||
| 129 | 138 | ||
| 130 | /* get the ups status if possible */ | 139 | /* get the ups status if possible */ |
| 131 | if (determine_status () != OK) | 140 | if (determine_status(&config, &supported_options) != OK) { |
| 132 | return STATE_CRITICAL; | 141 | return STATE_CRITICAL; |
| 142 | } | ||
| 143 | |||
| 144 | |||
| 133 | if (supported_options & UPS_STATUS) { | 145 | if (supported_options & UPS_STATUS) { |
| 134 | 146 | ||
| 135 | ups_status = strdup (""); | 147 | ups_status = strdup(""); |
| 148 | |||
| 136 | result = STATE_OK; | 149 | result = STATE_OK; |
| 137 | 150 | ||
| 138 | if (status & UPSSTATUS_OFF) { | 151 | if (config.status & UPSSTATUS_OFF) { |
| 139 | xasprintf (&ups_status, "Off"); | 152 | xasprintf(&ups_status, "Off"); |
| 140 | result = STATE_CRITICAL; | 153 | result = STATE_CRITICAL; |
| 141 | } | 154 | } else if ((config.status & (UPSSTATUS_OB | UPSSTATUS_LB)) == |
| 142 | else if ((status & (UPSSTATUS_OB | UPSSTATUS_LB)) == | 155 | (UPSSTATUS_OB | UPSSTATUS_LB)) { |
| 143 | (UPSSTATUS_OB | UPSSTATUS_LB)) { | 156 | xasprintf(&ups_status, _("On Battery, Low Battery")); |
| 144 | xasprintf (&ups_status, _("On Battery, Low Battery")); | ||
| 145 | result = STATE_CRITICAL; | 157 | result = STATE_CRITICAL; |
| 146 | } | 158 | } else { |
| 147 | else { | 159 | if (config.status & UPSSTATUS_OL) { |
| 148 | if (status & UPSSTATUS_OL) { | 160 | xasprintf(&ups_status, "%s%s", ups_status, _("Online")); |
| 149 | xasprintf (&ups_status, "%s%s", ups_status, _("Online")); | ||
| 150 | } | 161 | } |
| 151 | if (status & UPSSTATUS_OB) { | 162 | if (config.status & UPSSTATUS_OB) { |
| 152 | xasprintf (&ups_status, "%s%s", ups_status, _("On Battery")); | 163 | xasprintf(&ups_status, "%s%s", ups_status, _("On Battery")); |
| 153 | result = STATE_WARNING; | 164 | result = max_state(result, STATE_WARNING); |
| 154 | } | 165 | } |
| 155 | if (status & UPSSTATUS_LB) { | 166 | if (config.status & UPSSTATUS_LB) { |
| 156 | xasprintf (&ups_status, "%s%s", ups_status, _(", Low Battery")); | 167 | xasprintf(&ups_status, "%s%s", ups_status, _(", Low Battery")); |
| 157 | result = STATE_WARNING; | 168 | result = max_state(result, STATE_WARNING); |
| 158 | } | 169 | } |
| 159 | if (status & UPSSTATUS_CAL) { | 170 | if (config.status & UPSSTATUS_CAL) { |
| 160 | xasprintf (&ups_status, "%s%s", ups_status, _(", Calibrating")); | 171 | xasprintf(&ups_status, "%s%s", ups_status, _(", Calibrating")); |
| 161 | } | 172 | } |
| 162 | if (status & UPSSTATUS_RB) { | 173 | if (config.status & UPSSTATUS_RB) { |
| 163 | xasprintf (&ups_status, "%s%s", ups_status, _(", Replace Battery")); | 174 | xasprintf(&ups_status, "%s%s", ups_status, |
| 164 | result = STATE_WARNING; | 175 | _(", Replace Battery")); |
| 176 | result = max_state(result, STATE_WARNING); | ||
| 165 | } | 177 | } |
| 166 | if (status & UPSSTATUS_BYPASS) { | 178 | if (config.status & UPSSTATUS_BYPASS) { |
| 167 | xasprintf (&ups_status, "%s%s", ups_status, _(", On Bypass")); | 179 | xasprintf(&ups_status, "%s%s", ups_status, _(", On Bypass")); |
| 180 | // Bypassing the battery is likely a bad thing | ||
| 181 | result = STATE_CRITICAL; | ||
| 182 | } | ||
| 183 | if (config.status & UPSSTATUS_OVER) { | ||
| 184 | xasprintf(&ups_status, "%s%s", ups_status, _(", Overload")); | ||
| 185 | result = max_state(result, STATE_WARNING); | ||
| 168 | } | 186 | } |
| 169 | if (status & UPSSTATUS_OVER) { | 187 | if (config.status & UPSSTATUS_TRIM) { |
| 170 | xasprintf (&ups_status, "%s%s", ups_status, _(", Overload")); | 188 | xasprintf(&ups_status, "%s%s", ups_status, _(", Trimming")); |
| 171 | } | 189 | } |
| 172 | if (status & UPSSTATUS_TRIM) { | 190 | if (config.status & UPSSTATUS_BOOST) { |
| 173 | xasprintf (&ups_status, "%s%s", ups_status, _(", Trimming")); | 191 | xasprintf(&ups_status, "%s%s", ups_status, _(", Boosting")); |
| 174 | } | 192 | } |
| 175 | if (status & UPSSTATUS_BOOST) { | 193 | if (config.status & UPSSTATUS_CHRG) { |
| 176 | xasprintf (&ups_status, "%s%s", ups_status, _(", Boosting")); | 194 | xasprintf(&ups_status, "%s%s", ups_status, _(", Charging")); |
| 177 | } | 195 | } |
| 178 | if (status & UPSSTATUS_CHRG) { | 196 | if (config.status & UPSSTATUS_DISCHRG) { |
| 179 | xasprintf (&ups_status, "%s%s", ups_status, _(", Charging")); | 197 | xasprintf(&ups_status, "%s%s", ups_status, _(", Discharging")); |
| 198 | result = max_state(result, STATE_WARNING); | ||
| 180 | } | 199 | } |
| 181 | if (status & UPSSTATUS_DISCHRG) { | 200 | if (config.status & UPSSTATUS_ALARM) { |
| 182 | xasprintf (&ups_status, "%s%s", ups_status, _(", Discharging")); | 201 | xasprintf(&ups_status, "%s%s", ups_status, _(", ALARM")); |
| 202 | result = STATE_CRITICAL; | ||
| 183 | } | 203 | } |
| 184 | if (status & UPSSTATUS_UNKNOWN) { | 204 | if (config.status & UPSSTATUS_UNKNOWN) { |
| 185 | xasprintf (&ups_status, "%s%s", ups_status, _(", Unknown")); | 205 | xasprintf(&ups_status, "%s%s", ups_status, _(", Unknown")); |
| 186 | } | 206 | } |
| 187 | } | 207 | } |
| 188 | xasprintf (&message, "%sStatus=%s ", message, ups_status); | 208 | xasprintf(&message, "%sStatus=%s ", message, ups_status); |
| 189 | } | 209 | } |
| 190 | 210 | ||
| 211 | int res; | ||
| 212 | char temp_buffer[MAX_INPUT_BUFFER]; | ||
| 213 | |||
| 191 | /* get the ups utility voltage if possible */ | 214 | /* get the ups utility voltage if possible */ |
| 192 | res=get_ups_variable ("input.voltage", temp_buffer); | 215 | res = get_ups_variable("input.voltage", temp_buffer, config); |
| 193 | if (res == NOSUCHVAR) supported_options &= ~UPS_UTILITY; | 216 | if (res == NOSUCHVAR) { |
| 194 | else if (res != OK) | 217 | supported_options &= ~UPS_UTILITY; |
| 218 | } else if (res != OK) { | ||
| 195 | return STATE_CRITICAL; | 219 | return STATE_CRITICAL; |
| 196 | else { | 220 | } else { |
| 197 | supported_options |= UPS_UTILITY; | 221 | supported_options |= UPS_UTILITY; |
| 198 | 222 | ||
| 199 | ups_utility_voltage = atof (temp_buffer); | 223 | double ups_utility_voltage = 0.0; |
| 200 | xasprintf (&message, "%sUtility=%3.1fV ", message, ups_utility_voltage); | 224 | ups_utility_voltage = atof(temp_buffer); |
| 225 | xasprintf(&message, "%sUtility=%3.1fV ", message, ups_utility_voltage); | ||
| 226 | |||
| 227 | double ups_utility_deviation = 0.0; | ||
| 201 | 228 | ||
| 202 | if (ups_utility_voltage > 120.0) | 229 | if (ups_utility_voltage > 120.0) { |
| 203 | ups_utility_deviation = 120.0 - ups_utility_voltage; | 230 | ups_utility_deviation = 120.0 - ups_utility_voltage; |
| 204 | else | 231 | } else { |
| 205 | ups_utility_deviation = ups_utility_voltage - 120.0; | 232 | ups_utility_deviation = ups_utility_voltage - 120.0; |
| 233 | } | ||
| 206 | 234 | ||
| 207 | if (check_variable == UPS_UTILITY) { | 235 | if (config.check_variable == UPS_UTILITY) { |
| 208 | if (check_crit==TRUE && ups_utility_deviation>=critical_value) { | 236 | if (config.check_crit && |
| 237 | ups_utility_deviation >= config.critical_value) { | ||
| 209 | result = STATE_CRITICAL; | 238 | result = STATE_CRITICAL; |
| 239 | } else if (config.check_warn && | ||
| 240 | ups_utility_deviation >= config.warning_value) { | ||
| 241 | result = max_state(result, STATE_WARNING); | ||
| 210 | } | 242 | } |
| 211 | else if (check_warn==TRUE && ups_utility_deviation>=warning_value) { | 243 | xasprintf(&data, "%s", |
| 212 | result = max_state (result, STATE_WARNING); | 244 | perfdata("voltage", (long)(1000 * ups_utility_voltage), |
| 213 | } | 245 | "mV", config.check_warn, |
| 214 | xasprintf (&data, "%s", | 246 | (long)(1000 * config.warning_value), |
| 215 | perfdata ("voltage", (long)(1000*ups_utility_voltage), "mV", | 247 | config.check_crit, |
| 216 | check_warn, (long)(1000*warning_value), | 248 | (long)(1000 * config.critical_value), true, 0, |
| 217 | check_crit, (long)(1000*critical_value), | 249 | false, 0)); |
| 218 | TRUE, 0, FALSE, 0)); | ||
| 219 | } else { | 250 | } else { |
| 220 | xasprintf (&data, "%s", | 251 | xasprintf(&data, "%s", |
| 221 | perfdata ("voltage", (long)(1000*ups_utility_voltage), "mV", | 252 | perfdata("voltage", (long)(1000 * ups_utility_voltage), |
| 222 | FALSE, 0, FALSE, 0, TRUE, 0, FALSE, 0)); | 253 | "mV", false, 0, false, 0, true, 0, false, 0)); |
| 223 | } | 254 | } |
| 224 | } | 255 | } |
| 225 | 256 | ||
| 226 | /* get the ups battery percent if possible */ | 257 | /* get the ups battery percent if possible */ |
| 227 | res=get_ups_variable ("battery.charge", temp_buffer); | 258 | res = get_ups_variable("battery.charge", temp_buffer, config); |
| 228 | if (res == NOSUCHVAR) supported_options &= ~UPS_BATTPCT; | 259 | if (res == NOSUCHVAR) { |
| 229 | else if ( res != OK) | 260 | supported_options &= ~UPS_BATTPCT; |
| 261 | } else if (res != OK) { | ||
| 230 | return STATE_CRITICAL; | 262 | return STATE_CRITICAL; |
| 231 | else { | 263 | } else { |
| 232 | supported_options |= UPS_BATTPCT; | 264 | supported_options |= UPS_BATTPCT; |
| 233 | ups_battery_percent = atof (temp_buffer); | ||
| 234 | xasprintf (&message, "%sBatt=%3.1f%% ", message, ups_battery_percent); | ||
| 235 | 265 | ||
| 236 | if (check_variable == UPS_BATTPCT) { | 266 | double ups_battery_percent = 0.0; |
| 237 | if (check_crit==TRUE && ups_battery_percent <= critical_value) { | 267 | ups_battery_percent = atof(temp_buffer); |
| 268 | xasprintf(&message, "%sBatt=%3.1f%% ", message, ups_battery_percent); | ||
| 269 | |||
| 270 | if (config.check_variable == UPS_BATTPCT) { | ||
| 271 | if (config.check_crit && | ||
| 272 | ups_battery_percent <= config.critical_value) { | ||
| 238 | result = STATE_CRITICAL; | 273 | result = STATE_CRITICAL; |
| 274 | } else if (config.check_warn && | ||
| 275 | ups_battery_percent <= config.warning_value) { | ||
| 276 | result = max_state(result, STATE_WARNING); | ||
| 239 | } | 277 | } |
| 240 | else if (check_warn==TRUE && ups_battery_percent<=warning_value) { | 278 | xasprintf(&data, "%s %s", data, |
| 241 | result = max_state (result, STATE_WARNING); | 279 | perfdata("battery", (long)ups_battery_percent, "%", |
| 242 | } | 280 | config.check_warn, (long)(config.warning_value), |
| 243 | xasprintf (&data, "%s %s", data, | 281 | config.check_crit, (long)(config.critical_value), |
| 244 | perfdata ("battery", (long)ups_battery_percent, "%", | 282 | true, 0, true, 100)); |
| 245 | check_warn, (long)(warning_value), | ||
| 246 | check_crit, (long)(critical_value), | ||
| 247 | TRUE, 0, TRUE, 100)); | ||
| 248 | } else { | 283 | } else { |
| 249 | xasprintf (&data, "%s %s", data, | 284 | xasprintf(&data, "%s %s", data, |
| 250 | perfdata ("battery", (long)ups_battery_percent, "%", | 285 | perfdata("battery", (long)ups_battery_percent, "%", false, |
| 251 | FALSE, 0, FALSE, 0, TRUE, 0, TRUE, 100)); | 286 | 0, false, 0, true, 0, true, 100)); |
| 252 | } | 287 | } |
| 253 | } | 288 | } |
| 254 | 289 | ||
| 255 | /* get the ups load percent if possible */ | 290 | /* get the ups load percent if possible */ |
| 256 | res=get_ups_variable ("ups.load", temp_buffer); | 291 | res = get_ups_variable("ups.load", temp_buffer, config); |
| 257 | if ( res == NOSUCHVAR ) supported_options &= ~UPS_LOADPCT; | 292 | if (res == NOSUCHVAR) { |
| 258 | else if ( res != OK) | 293 | supported_options &= ~UPS_LOADPCT; |
| 294 | } else if (res != OK) { | ||
| 259 | return STATE_CRITICAL; | 295 | return STATE_CRITICAL; |
| 260 | else { | 296 | } else { |
| 261 | supported_options |= UPS_LOADPCT; | 297 | supported_options |= UPS_LOADPCT; |
| 262 | ups_load_percent = atof (temp_buffer); | ||
| 263 | xasprintf (&message, "%sLoad=%3.1f%% ", message, ups_load_percent); | ||
| 264 | 298 | ||
| 265 | if (check_variable == UPS_LOADPCT) { | 299 | double ups_load_percent = 0.0; |
| 266 | if (check_crit==TRUE && ups_load_percent>=critical_value) { | 300 | ups_load_percent = atof(temp_buffer); |
| 301 | xasprintf(&message, "%sLoad=%3.1f%% ", message, ups_load_percent); | ||
| 302 | |||
| 303 | if (config.check_variable == UPS_LOADPCT) { | ||
| 304 | if (config.check_crit && | ||
| 305 | ups_load_percent >= config.critical_value) { | ||
| 267 | result = STATE_CRITICAL; | 306 | result = STATE_CRITICAL; |
| 307 | } else if (config.check_warn && | ||
| 308 | ups_load_percent >= config.warning_value) { | ||
| 309 | result = max_state(result, STATE_WARNING); | ||
| 268 | } | 310 | } |
| 269 | else if (check_warn==TRUE && ups_load_percent>=warning_value) { | 311 | xasprintf(&data, "%s %s", data, |
| 270 | result = max_state (result, STATE_WARNING); | 312 | perfdata("load", (long)ups_load_percent, "%", |
| 271 | } | 313 | config.check_warn, (long)(config.warning_value), |
| 272 | xasprintf (&data, "%s %s", data, | 314 | config.check_crit, (long)(config.critical_value), |
| 273 | perfdata ("load", (long)ups_load_percent, "%", | 315 | true, 0, true, 100)); |
| 274 | check_warn, (long)(warning_value), | ||
| 275 | check_crit, (long)(critical_value), | ||
| 276 | TRUE, 0, TRUE, 100)); | ||
| 277 | } else { | 316 | } else { |
| 278 | xasprintf (&data, "%s %s", data, | 317 | xasprintf(&data, "%s %s", data, |
| 279 | perfdata ("load", (long)ups_load_percent, "%", | 318 | perfdata("load", (long)ups_load_percent, "%", false, 0, |
| 280 | FALSE, 0, FALSE, 0, TRUE, 0, TRUE, 100)); | 319 | false, 0, true, 0, true, 100)); |
| 281 | } | 320 | } |
| 282 | } | 321 | } |
| 283 | 322 | ||
| 284 | /* get the ups temperature if possible */ | 323 | /* get the ups temperature if possible */ |
| 285 | res=get_ups_variable ("ups.temperature", temp_buffer); | 324 | res = get_ups_variable("ups.temperature", temp_buffer, config); |
| 286 | if ( res == NOSUCHVAR ) supported_options &= ~UPS_TEMP; | 325 | if (res == NOSUCHVAR) { |
| 287 | else if ( res != OK) | 326 | supported_options &= ~UPS_TEMP; |
| 327 | } else if (res != OK) { | ||
| 288 | return STATE_CRITICAL; | 328 | return STATE_CRITICAL; |
| 289 | else { | 329 | } else { |
| 290 | supported_options |= UPS_TEMP; | 330 | supported_options |= UPS_TEMP; |
| 291 | if (temp_output_c) { | 331 | |
| 292 | tunits="degC"; | 332 | double ups_temperature = 0.0; |
| 293 | ups_temperature = atof (temp_buffer); | 333 | char *tunits; |
| 294 | xasprintf (&message, "%sTemp=%3.1fC", message, ups_temperature); | 334 | |
| 295 | } | 335 | if (config.temp_output_c) { |
| 296 | else { | 336 | tunits = "degC"; |
| 297 | tunits="degF"; | 337 | ups_temperature = atof(temp_buffer); |
| 298 | ups_temperature = (atof (temp_buffer) * 1.8) + 32; | 338 | xasprintf(&message, "%sTemp=%3.1fC", message, ups_temperature); |
| 299 | xasprintf (&message, "%sTemp=%3.1fF", message, ups_temperature); | 339 | } else { |
| 340 | tunits = "degF"; | ||
| 341 | ups_temperature = (atof(temp_buffer) * 1.8) + 32; | ||
| 342 | xasprintf(&message, "%sTemp=%3.1fF", message, ups_temperature); | ||
| 300 | } | 343 | } |
| 301 | 344 | ||
| 302 | if (check_variable == UPS_TEMP) { | 345 | if (config.check_variable == UPS_TEMP) { |
| 303 | if (check_crit==TRUE && ups_temperature>=critical_value) { | 346 | if (config.check_crit && ups_temperature >= config.critical_value) { |
| 304 | result = STATE_CRITICAL; | 347 | result = STATE_CRITICAL; |
| 348 | } else if (config.check_warn && | ||
| 349 | ups_temperature >= config.warning_value) { | ||
| 350 | result = max_state(result, STATE_WARNING); | ||
| 305 | } | 351 | } |
| 306 | else if (check_warn == TRUE && ups_temperature>=warning_value) { | 352 | xasprintf(&data, "%s %s", data, |
| 307 | result = max_state (result, STATE_WARNING); | 353 | perfdata("temp", (long)ups_temperature, tunits, |
| 354 | config.check_warn, (long)(config.warning_value), | ||
| 355 | config.check_crit, (long)(config.critical_value), | ||
| 356 | true, 0, false, 0)); | ||
| 357 | } else { | ||
| 358 | xasprintf(&data, "%s %s", data, | ||
| 359 | perfdata("temp", (long)ups_temperature, tunits, false, 0, | ||
| 360 | false, 0, true, 0, false, 0)); | ||
| 361 | } | ||
| 362 | } | ||
| 363 | |||
| 364 | /* get the ups real power if possible */ | ||
| 365 | res = get_ups_variable("ups.realpower", temp_buffer, config); | ||
| 366 | if (res == NOSUCHVAR) { | ||
| 367 | supported_options &= ~UPS_REALPOWER; | ||
| 368 | } else if (res != OK) { | ||
| 369 | return STATE_CRITICAL; | ||
| 370 | } else { | ||
| 371 | supported_options |= UPS_REALPOWER; | ||
| 372 | double ups_realpower = 0.0; | ||
| 373 | ups_realpower = atof(temp_buffer); | ||
| 374 | xasprintf(&message, "%sReal power=%3.1fW ", message, ups_realpower); | ||
| 375 | |||
| 376 | if (config.check_variable == UPS_REALPOWER) { | ||
| 377 | if (config.check_crit && ups_realpower >= config.critical_value) { | ||
| 378 | result = STATE_CRITICAL; | ||
| 379 | } else if (config.check_warn && | ||
| 380 | ups_realpower >= config.warning_value) { | ||
| 381 | result = max_state(result, STATE_WARNING); | ||
| 308 | } | 382 | } |
| 309 | xasprintf (&data, "%s %s", data, | 383 | xasprintf(&data, "%s %s", data, |
| 310 | perfdata ("temp", (long)ups_temperature, tunits, | 384 | perfdata("realpower", (long)ups_realpower, "W", |
| 311 | check_warn, (long)(warning_value), | 385 | config.check_warn, (long)(config.warning_value), |
| 312 | check_crit, (long)(critical_value), | 386 | config.check_crit, (long)(config.critical_value), |
| 313 | TRUE, 0, FALSE, 0)); | 387 | true, 0, false, 0)); |
| 314 | } else { | 388 | } else { |
| 315 | xasprintf (&data, "%s %s", data, | 389 | xasprintf(&data, "%s %s", data, |
| 316 | perfdata ("temp", (long)ups_temperature, tunits, | 390 | perfdata("realpower", (long)ups_realpower, "W", false, 0, |
| 317 | FALSE, 0, FALSE, 0, TRUE, 0, FALSE, 0)); | 391 | false, 0, true, 0, false, 0)); |
| 318 | } | 392 | } |
| 319 | } | 393 | } |
| 320 | 394 | ||
| 321 | /* if the UPS does not support any options we are looking for, report an error */ | 395 | /* if the UPS does not support any options we are looking for, report an |
| 396 | * error */ | ||
| 322 | if (supported_options == UPS_NONE) { | 397 | if (supported_options == UPS_NONE) { |
| 323 | result = STATE_CRITICAL; | 398 | result = STATE_CRITICAL; |
| 324 | xasprintf (&message, _("UPS does not support any available options\n")); | 399 | xasprintf(&message, _("UPS does not support any available options\n")); |
| 325 | } | 400 | } |
| 326 | 401 | ||
| 327 | /* reset timeout */ | 402 | /* reset timeout */ |
| 328 | alarm (0); | 403 | alarm(0); |
| 329 | 404 | ||
| 330 | printf ("UPS %s - %s|%s\n", state_text(result), message, data); | 405 | printf("UPS %s - %s|%s\n", state_text(result), message, data); |
| 331 | return result; | 406 | return result; |
| 332 | } | 407 | } |
| 333 | 408 | ||
| 334 | |||
| 335 | |||
| 336 | /* determines what options are supported by the UPS */ | 409 | /* determines what options are supported by the UPS */ |
| 337 | int | 410 | int determine_status(ups_config *config, int *supported_options) { |
| 338 | determine_status (void) | ||
| 339 | { | ||
| 340 | char recv_buffer[MAX_INPUT_BUFFER]; | 411 | char recv_buffer[MAX_INPUT_BUFFER]; |
| 341 | char temp_buffer[MAX_INPUT_BUFFER]; | ||
| 342 | char *ptr; | ||
| 343 | int res; | ||
| 344 | 412 | ||
| 345 | res=get_ups_variable ("ups.status", recv_buffer); | 413 | int res = get_ups_variable("ups.status", recv_buffer, *config); |
| 346 | if (res == NOSUCHVAR) return OK; | 414 | if (res == NOSUCHVAR) { |
| 415 | return OK; | ||
| 416 | } | ||
| 417 | |||
| 347 | if (res != STATE_OK) { | 418 | if (res != STATE_OK) { |
| 348 | printf ("%s\n", _("Invalid response received from host")); | 419 | printf("%s\n", _("Invalid response received from host")); |
| 349 | return ERROR; | 420 | return ERROR; |
| 350 | } | 421 | } |
| 351 | 422 | ||
| 352 | supported_options |= UPS_STATUS; | 423 | *supported_options |= UPS_STATUS; |
| 353 | 424 | ||
| 354 | strcpy (temp_buffer, recv_buffer); | 425 | char temp_buffer[MAX_INPUT_BUFFER]; |
| 355 | for (ptr = (char *) strtok (temp_buffer, " "); ptr != NULL; | 426 | |
| 356 | ptr = (char *) strtok (NULL, " ")) { | 427 | strcpy(temp_buffer, recv_buffer); |
| 357 | if (!strcmp (ptr, "OFF")) | 428 | for (char *ptr = (char *)strtok(temp_buffer, " "); ptr != NULL; |
| 358 | status |= UPSSTATUS_OFF; | 429 | ptr = (char *)strtok(NULL, " ")) { |
| 359 | else if (!strcmp (ptr, "OL")) | 430 | if (!strcmp(ptr, "OFF")) { |
| 360 | status |= UPSSTATUS_OL; | 431 | config->status |= UPSSTATUS_OFF; |
| 361 | else if (!strcmp (ptr, "OB")) | 432 | } else if (!strcmp(ptr, "OL")) { |
| 362 | status |= UPSSTATUS_OB; | 433 | config->status |= UPSSTATUS_OL; |
| 363 | else if (!strcmp (ptr, "LB")) | 434 | } else if (!strcmp(ptr, "OB")) { |
| 364 | status |= UPSSTATUS_LB; | 435 | config->status |= UPSSTATUS_OB; |
| 365 | else if (!strcmp (ptr, "CAL")) | 436 | } else if (!strcmp(ptr, "LB")) { |
| 366 | status |= UPSSTATUS_CAL; | 437 | config->status |= UPSSTATUS_LB; |
| 367 | else if (!strcmp (ptr, "RB")) | 438 | } else if (!strcmp(ptr, "CAL")) { |
| 368 | status |= UPSSTATUS_RB; | 439 | config->status |= UPSSTATUS_CAL; |
| 369 | else if (!strcmp (ptr, "BYPASS")) | 440 | } else if (!strcmp(ptr, "RB")) { |
| 370 | status |= UPSSTATUS_BYPASS; | 441 | config->status |= UPSSTATUS_RB; |
| 371 | else if (!strcmp (ptr, "OVER")) | 442 | } else if (!strcmp(ptr, "BYPASS")) { |
| 372 | status |= UPSSTATUS_OVER; | 443 | config->status |= UPSSTATUS_BYPASS; |
| 373 | else if (!strcmp (ptr, "TRIM")) | 444 | } else if (!strcmp(ptr, "OVER")) { |
| 374 | status |= UPSSTATUS_TRIM; | 445 | config->status |= UPSSTATUS_OVER; |
| 375 | else if (!strcmp (ptr, "BOOST")) | 446 | } else if (!strcmp(ptr, "TRIM")) { |
| 376 | status |= UPSSTATUS_BOOST; | 447 | config->status |= UPSSTATUS_TRIM; |
| 377 | else if (!strcmp (ptr, "CHRG")) | 448 | } else if (!strcmp(ptr, "BOOST")) { |
| 378 | status |= UPSSTATUS_CHRG; | 449 | config->status |= UPSSTATUS_BOOST; |
| 379 | else if (!strcmp (ptr, "DISCHRG")) | 450 | } else if (!strcmp(ptr, "CHRG")) { |
| 380 | status |= UPSSTATUS_DISCHRG; | 451 | config->status |= UPSSTATUS_CHRG; |
| 381 | else | 452 | } else if (!strcmp(ptr, "DISCHRG")) { |
| 382 | status |= UPSSTATUS_UNKNOWN; | 453 | config->status |= UPSSTATUS_DISCHRG; |
| 454 | } else if (!strcmp(ptr, "ALARM")) { | ||
| 455 | config->status |= UPSSTATUS_ALARM; | ||
| 456 | } else { | ||
| 457 | config->status |= UPSSTATUS_UNKNOWN; | ||
| 458 | } | ||
| 383 | } | 459 | } |
| 384 | 460 | ||
| 385 | return OK; | 461 | return OK; |
| 386 | } | 462 | } |
| 387 | 463 | ||
| 388 | |||
| 389 | /* gets a variable value for a specific UPS */ | 464 | /* gets a variable value for a specific UPS */ |
| 390 | int | 465 | int get_ups_variable(const char *varname, char *buf, const ups_config config) { |
| 391 | get_ups_variable (const char *varname, char *buf) | ||
| 392 | { | ||
| 393 | /* char command[MAX_INPUT_BUFFER]; */ | ||
| 394 | char temp_buffer[MAX_INPUT_BUFFER]; | ||
| 395 | char send_buffer[MAX_INPUT_BUFFER]; | 466 | char send_buffer[MAX_INPUT_BUFFER]; |
| 396 | char *ptr; | ||
| 397 | char *logout = "OK Goodbye\n"; | ||
| 398 | int logout_len = strlen(logout); | ||
| 399 | int len; | ||
| 400 | |||
| 401 | *buf=0; | ||
| 402 | 467 | ||
| 403 | /* create the command string to send to the UPS daemon */ | 468 | /* create the command string to send to the UPS daemon */ |
| 404 | /* Add LOGOUT to avoid read failure logs */ | 469 | /* Add LOGOUT to avoid read failure logs */ |
| 405 | if (snprintf (send_buffer, sizeof(send_buffer), "GET VAR %s %s\nLOGOUT\n", ups_name, varname) >= sizeof(send_buffer)) { | 470 | int res = snprintf(send_buffer, sizeof(send_buffer), |
| 471 | "GET VAR %s %s\nLOGOUT\n", config.ups_name, varname); | ||
| 472 | if ((res > 0) && ((size_t)res >= sizeof(send_buffer))) { | ||
| 406 | printf("%s\n", _("UPS name to long for buffer")); | 473 | printf("%s\n", _("UPS name to long for buffer")); |
| 407 | return ERROR; | 474 | return ERROR; |
| 408 | } | 475 | } |
| 409 | 476 | ||
| 477 | char temp_buffer[MAX_INPUT_BUFFER]; | ||
| 478 | |||
| 410 | /* send the command to the daemon and get a response back */ | 479 | /* send the command to the daemon and get a response back */ |
| 411 | if (process_tcp_request | 480 | if (process_tcp_request(config.server_address, config.server_port, |
| 412 | (server_address, server_port, send_buffer, temp_buffer, | 481 | send_buffer, temp_buffer, |
| 413 | sizeof (temp_buffer)) != STATE_OK) { | 482 | sizeof(temp_buffer)) != STATE_OK) { |
| 414 | printf ("%s\n", _("Invalid response received from host")); | 483 | printf("%s\n", _("Invalid response received from host")); |
| 415 | return ERROR; | 484 | return ERROR; |
| 416 | } | 485 | } |
| 417 | 486 | ||
| 418 | ptr = temp_buffer; | 487 | char *ptr = temp_buffer; |
| 419 | len = strlen(ptr); | 488 | int len = strlen(ptr); |
| 420 | if (len > logout_len && strcmp (ptr + len - logout_len, logout) == 0) len -= logout_len; | 489 | const char *logout = "OK Goodbye\n"; |
| 421 | if (len > 0 && ptr[len-1] == '\n') ptr[len-1]=0; | 490 | const int logout_len = strlen(logout); |
| 422 | if (strcmp (ptr, "ERR UNKNOWN-UPS") == 0) { | 491 | |
| 423 | printf (_("CRITICAL - no such UPS '%s' on that host\n"), ups_name); | 492 | if (len > logout_len && strcmp(ptr + len - logout_len, logout) == 0) { |
| 493 | len -= logout_len; | ||
| 494 | } | ||
| 495 | if (len > 0 && ptr[len - 1] == '\n') { | ||
| 496 | ptr[len - 1] = 0; | ||
| 497 | } | ||
| 498 | if (strcmp(ptr, "ERR UNKNOWN-UPS") == 0) { | ||
| 499 | printf(_("CRITICAL - no such UPS '%s' on that host\n"), | ||
| 500 | config.ups_name); | ||
| 424 | return ERROR; | 501 | return ERROR; |
| 425 | } | 502 | } |
| 426 | 503 | ||
| 427 | if (strcmp (ptr, "ERR VAR-NOT-SUPPORTED") == 0) { | 504 | if (strcmp(ptr, "ERR VAR-NOT-SUPPORTED") == 0) { |
| 428 | /*printf ("Error: Variable '%s' is not supported\n", varname);*/ | 505 | /*printf ("Error: Variable '%s' is not supported\n", varname);*/ |
| 429 | return NOSUCHVAR; | 506 | return NOSUCHVAR; |
| 430 | } | 507 | } |
| 431 | 508 | ||
| 432 | if (strcmp (ptr, "ERR DATA-STALE") == 0) { | 509 | if (strcmp(ptr, "ERR DATA-STALE") == 0) { |
| 433 | printf ("%s\n", _("CRITICAL - UPS data is stale")); | 510 | printf("%s\n", _("CRITICAL - UPS data is stale")); |
| 434 | return ERROR; | 511 | return ERROR; |
| 435 | } | 512 | } |
| 436 | 513 | ||
| 437 | if (strncmp (ptr, "ERR", 3) == 0) { | 514 | if (strncmp(ptr, "ERR", 3) == 0) { |
| 438 | printf (_("Unknown error: %s\n"), ptr); | 515 | printf(_("Unknown error: %s\n"), ptr); |
| 439 | return ERROR; | 516 | return ERROR; |
| 440 | } | 517 | } |
| 441 | 518 | ||
| 442 | ptr = temp_buffer + strlen (varname) + strlen (ups_name) + 6; | 519 | ptr = temp_buffer + strlen(varname) + strlen(config.ups_name) + 6; |
| 443 | len = strlen(ptr); | 520 | len = strlen(ptr); |
| 444 | if (len < 2 || ptr[0] != '"' || ptr[len-1] != '"') { | 521 | if (len < 2 || ptr[0] != '"' || ptr[len - 1] != '"') { |
| 445 | printf ("%s\n", _("Error: unable to parse variable")); | 522 | printf("%s\n", _("Error: unable to parse variable")); |
| 446 | return ERROR; | 523 | return ERROR; |
| 447 | } | 524 | } |
| 448 | strncpy (buf, ptr+1, len - 2); | 525 | |
| 526 | *buf = 0; | ||
| 527 | strncpy(buf, ptr + 1, len - 2); | ||
| 449 | buf[len - 2] = 0; | 528 | buf[len - 2] = 0; |
| 450 | 529 | ||
| 451 | return OK; | 530 | return OK; |
| 452 | } | 531 | } |
| 453 | 532 | ||
| 454 | |||
| 455 | /* Command line: CHECK_UPS -H <host_address> -u ups [-p port] [-v variable] | 533 | /* Command line: CHECK_UPS -H <host_address> -u ups [-p port] [-v variable] |
| 456 | [-wv warn_value] [-cv crit_value] [-to to_sec] */ | 534 | [-wv warn_value] [-cv crit_value] [-to to_sec] */ |
| 457 | 535 | ||
| 458 | |||
| 459 | /* process command-line arguments */ | 536 | /* process command-line arguments */ |
| 460 | int | 537 | int process_arguments(int argc, char **argv, ups_config *config) { |
| 461 | process_arguments (int argc, char **argv) | 538 | |
| 462 | { | 539 | static struct option longopts[] = {{"hostname", required_argument, 0, 'H'}, |
| 463 | int c; | 540 | {"ups", required_argument, 0, 'u'}, |
| 464 | 541 | {"port", required_argument, 0, 'p'}, | |
| 465 | int option = 0; | 542 | {"critical", required_argument, 0, 'c'}, |
| 466 | static struct option longopts[] = { | 543 | {"warning", required_argument, 0, 'w'}, |
| 467 | {"hostname", required_argument, 0, 'H'}, | 544 | {"timeout", required_argument, 0, 't'}, |
| 468 | {"ups", required_argument, 0, 'u'}, | 545 | {"temperature", no_argument, 0, 'T'}, |
| 469 | {"port", required_argument, 0, 'p'}, | 546 | {"variable", required_argument, 0, 'v'}, |
| 470 | {"critical", required_argument, 0, 'c'}, | 547 | {"version", no_argument, 0, 'V'}, |
| 471 | {"warning", required_argument, 0, 'w'}, | 548 | {"help", no_argument, 0, 'h'}, |
| 472 | {"timeout", required_argument, 0, 't'}, | 549 | {0, 0, 0, 0}}; |
| 473 | {"temperature", no_argument, 0, 'T'}, | 550 | |
| 474 | {"variable", required_argument, 0, 'v'}, | 551 | if (argc < 2) { |
| 475 | {"version", no_argument, 0, 'V'}, | ||
| 476 | {"help", no_argument, 0, 'h'}, | ||
| 477 | {0, 0, 0, 0} | ||
| 478 | }; | ||
| 479 | |||
| 480 | if (argc < 2) | ||
| 481 | return ERROR; | 552 | return ERROR; |
| 553 | } | ||
| 482 | 554 | ||
| 555 | int c; | ||
| 483 | for (c = 1; c < argc; c++) { | 556 | for (c = 1; c < argc; c++) { |
| 484 | if (strcmp ("-to", argv[c]) == 0) | 557 | if (strcmp("-to", argv[c]) == 0) { |
| 485 | strcpy (argv[c], "-t"); | 558 | strcpy(argv[c], "-t"); |
| 486 | else if (strcmp ("-wt", argv[c]) == 0) | 559 | } else if (strcmp("-wt", argv[c]) == 0) { |
| 487 | strcpy (argv[c], "-w"); | 560 | strcpy(argv[c], "-w"); |
| 488 | else if (strcmp ("-ct", argv[c]) == 0) | 561 | } else if (strcmp("-ct", argv[c]) == 0) { |
| 489 | strcpy (argv[c], "-c"); | 562 | strcpy(argv[c], "-c"); |
| 563 | } | ||
| 490 | } | 564 | } |
| 491 | 565 | ||
| 566 | int option = 0; | ||
| 492 | while (1) { | 567 | while (1) { |
| 493 | c = getopt_long (argc, argv, "hVTH:u:p:v:c:w:t:", longopts, | 568 | c = getopt_long(argc, argv, "hVTH:u:p:v:c:w:t:", longopts, &option); |
| 494 | &option); | ||
| 495 | 569 | ||
| 496 | if (c == -1 || c == EOF) | 570 | if (c == -1 || c == EOF) { |
| 497 | break; | 571 | break; |
| 572 | } | ||
| 498 | 573 | ||
| 499 | switch (c) { | 574 | switch (c) { |
| 500 | case '?': /* help */ | 575 | case '?': /* help */ |
| 501 | usage5 (); | 576 | usage5(); |
| 502 | case 'H': /* hostname */ | 577 | case 'H': /* hostname */ |
| 503 | if (is_host (optarg)) { | 578 | if (is_host(optarg)) { |
| 504 | server_address = optarg; | 579 | config->server_address = optarg; |
| 505 | } | 580 | } else { |
| 506 | else { | 581 | usage2(_("Invalid hostname/address"), optarg); |
| 507 | usage2 (_("Invalid hostname/address"), optarg); | ||
| 508 | } | 582 | } |
| 509 | break; | 583 | break; |
| 510 | case 'T': /* FIXME: to be improved (ie "-T C" for Celsius or "-T F" for Fahrenheit) */ | 584 | case 'T': /* FIXME: to be improved (ie "-T C" for Celsius or "-T F" for |
| 511 | temp_output_c = 1; | 585 | Fahrenheit) */ |
| 586 | config->temp_output_c = true; | ||
| 512 | break; | 587 | break; |
| 513 | case 'u': /* ups name */ | 588 | case 'u': /* ups name */ |
| 514 | ups_name = optarg; | 589 | config->ups_name = optarg; |
| 515 | break; | 590 | break; |
| 516 | case 'p': /* port */ | 591 | case 'p': /* port */ |
| 517 | if (is_intpos (optarg)) { | 592 | if (is_intpos(optarg)) { |
| 518 | server_port = atoi (optarg); | 593 | config->server_port = atoi(optarg); |
| 519 | } | 594 | } else { |
| 520 | else { | 595 | usage2(_("Port must be a positive integer"), optarg); |
| 521 | usage2 (_("Port must be a positive integer"), optarg); | ||
| 522 | } | 596 | } |
| 523 | break; | 597 | break; |
| 524 | case 'c': /* critical time threshold */ | 598 | case 'c': /* critical time threshold */ |
| 525 | if (is_intnonneg (optarg)) { | 599 | if (is_intnonneg(optarg)) { |
| 526 | critical_value = atoi (optarg); | 600 | config->critical_value = atoi(optarg); |
| 527 | check_crit = TRUE; | 601 | config->check_crit = true; |
| 528 | } | 602 | } else { |
| 529 | else { | 603 | usage2(_("Critical time must be a positive integer"), optarg); |
| 530 | usage2 (_("Critical time must be a positive integer"), optarg); | ||
| 531 | } | 604 | } |
| 532 | break; | 605 | break; |
| 533 | case 'w': /* warning time threshold */ | 606 | case 'w': /* warning time threshold */ |
| 534 | if (is_intnonneg (optarg)) { | 607 | if (is_intnonneg(optarg)) { |
| 535 | warning_value = atoi (optarg); | 608 | config->warning_value = atoi(optarg); |
| 536 | check_warn = TRUE; | 609 | config->check_warn = true; |
| 537 | } | 610 | } else { |
| 538 | else { | 611 | usage2(_("Warning time must be a positive integer"), optarg); |
| 539 | usage2 (_("Warning time must be a positive integer"), optarg); | ||
| 540 | } | 612 | } |
| 541 | break; | 613 | break; |
| 542 | case 'v': /* variable */ | 614 | case 'v': /* variable */ |
| 543 | if (!strcmp (optarg, "LINE")) | 615 | if (!strcmp(optarg, "LINE")) { |
| 544 | check_variable = UPS_UTILITY; | 616 | config->check_variable = UPS_UTILITY; |
| 545 | else if (!strcmp (optarg, "TEMP")) | 617 | } else if (!strcmp(optarg, "TEMP")) { |
| 546 | check_variable = UPS_TEMP; | 618 | config->check_variable = UPS_TEMP; |
| 547 | else if (!strcmp (optarg, "BATTPCT")) | 619 | } else if (!strcmp(optarg, "BATTPCT")) { |
| 548 | check_variable = UPS_BATTPCT; | 620 | config->check_variable = UPS_BATTPCT; |
| 549 | else if (!strcmp (optarg, "LOADPCT")) | 621 | } else if (!strcmp(optarg, "LOADPCT")) { |
| 550 | check_variable = UPS_LOADPCT; | 622 | config->check_variable = UPS_LOADPCT; |
| 551 | else | 623 | } else if (!strcmp(optarg, "REALPOWER")) { |
| 552 | usage2 (_("Unrecognized UPS variable"), optarg); | 624 | config->check_variable = UPS_REALPOWER; |
| 553 | break; | 625 | } else { |
| 554 | case 't': /* timeout */ | 626 | usage2(_("Unrecognized UPS variable"), optarg); |
| 555 | if (is_intnonneg (optarg)) { | ||
| 556 | socket_timeout = atoi (optarg); | ||
| 557 | } | 627 | } |
| 558 | else { | 628 | break; |
| 559 | usage4 (_("Timeout interval must be a positive integer")); | 629 | case 't': /* timeout */ |
| 630 | if (is_intnonneg(optarg)) { | ||
| 631 | socket_timeout = atoi(optarg); | ||
| 632 | } else { | ||
| 633 | usage4(_("Timeout interval must be a positive integer")); | ||
| 560 | } | 634 | } |
| 561 | break; | 635 | break; |
| 562 | case 'V': /* version */ | 636 | case 'V': /* version */ |
| 563 | print_revision (progname, NP_VERSION); | 637 | print_revision(progname, NP_VERSION); |
| 564 | exit (STATE_UNKNOWN); | 638 | exit(STATE_UNKNOWN); |
| 565 | case 'h': /* help */ | 639 | case 'h': /* help */ |
| 566 | print_help (); | 640 | print_help(); |
| 567 | exit (STATE_UNKNOWN); | 641 | exit(STATE_UNKNOWN); |
| 568 | } | 642 | } |
| 569 | } | 643 | } |
| 570 | 644 | ||
| 571 | 645 | if (config->server_address == NULL && argc > optind) { | |
| 572 | if (server_address == NULL && argc > optind) { | 646 | if (is_host(argv[optind])) { |
| 573 | if (is_host (argv[optind])) | 647 | config->server_address = argv[optind++]; |
| 574 | server_address = argv[optind++]; | 648 | } else { |
| 575 | else | 649 | usage2(_("Invalid hostname/address"), optarg); |
| 576 | usage2 (_("Invalid hostname/address"), optarg); | 650 | } |
| 577 | } | 651 | } |
| 578 | 652 | ||
| 579 | if (server_address == NULL) | 653 | if (config->server_address == NULL) { |
| 580 | server_address = strdup("127.0.0.1"); | 654 | config->server_address = strdup("127.0.0.1"); |
| 655 | } | ||
| 581 | 656 | ||
| 582 | return validate_arguments(); | 657 | return validate_arguments(*config); |
| 583 | } | 658 | } |
| 584 | 659 | ||
| 585 | 660 | int validate_arguments(ups_config config) { | |
| 586 | int | 661 | if (!config.ups_name) { |
| 587 | validate_arguments (void) | 662 | printf("%s\n", _("Error : no UPS indicated")); |
| 588 | { | ||
| 589 | if (! ups_name) { | ||
| 590 | printf ("%s\n", _("Error : no UPS indicated")); | ||
| 591 | return ERROR; | 663 | return ERROR; |
| 592 | } | 664 | } |
| 593 | return OK; | 665 | return OK; |
| 594 | } | 666 | } |
| 595 | 667 | ||
| 668 | void print_help(void) { | ||
| 669 | print_revision(progname, NP_VERSION); | ||
| 596 | 670 | ||
| 597 | void | 671 | printf("Copyright (c) 2000 Tom Shields\n"); |
| 598 | print_help (void) | 672 | printf("Copyright (c) 2004 Alain Richard <alain.richard@equation.fr>\n"); |
| 599 | { | 673 | printf("Copyright (c) 2004 Arnaud Quette <arnaud.quette@mgeups.com>\n"); |
| 600 | char *myport; | 674 | printf(COPYRIGHT, copyright, email); |
| 601 | xasprintf (&myport, "%d", PORT); | ||
| 602 | |||
| 603 | print_revision (progname, NP_VERSION); | ||
| 604 | |||
| 605 | printf ("Copyright (c) 2000 Tom Shields\n"); | ||
| 606 | printf ("Copyright (c) 2004 Alain Richard <alain.richard@equation.fr>\n"); | ||
| 607 | printf ("Copyright (c) 2004 Arnaud Quette <arnaud.quette@mgeups.com>\n"); | ||
| 608 | printf (COPYRIGHT, copyright, email); | ||
| 609 | |||
| 610 | printf ("%s\n", _("This plugin tests the UPS service on the specified host. Network UPS Tools")); | ||
| 611 | printf ("%s\n", _("from www.networkupstools.org must be running for this plugin to work.")); | ||
| 612 | |||
| 613 | printf ("\n\n"); | ||
| 614 | |||
| 615 | print_usage (); | ||
| 616 | 675 | ||
| 617 | printf (UT_HELP_VRSN); | 676 | printf("%s\n", _("This plugin tests the UPS service on the specified host. " |
| 618 | printf (UT_EXTRA_OPTS); | 677 | "Network UPS Tools")); |
| 678 | printf("%s\n", _("from www.networkupstools.org must be running for this " | ||
| 679 | "plugin to work.")); | ||
| 619 | 680 | ||
| 620 | printf (UT_HOST_PORT, 'p', myport); | 681 | printf("\n\n"); |
| 621 | 682 | ||
| 622 | printf (" %s\n", "-u, --ups=STRING"); | 683 | print_usage(); |
| 623 | printf (" %s\n", _("Name of UPS")); | ||
| 624 | printf (" %s\n", "-T, --temperature"); | ||
| 625 | printf (" %s\n", _("Output of temperatures in Celsius")); | ||
| 626 | printf (" %s\n", "-v, --variable=STRING"); | ||
| 627 | printf (" %s %s\n", _("Valid values for STRING are"), "LINE, TEMP, BATTPCT or LOADPCT"); | ||
| 628 | 684 | ||
| 629 | printf (UT_WARN_CRIT); | 685 | printf(UT_HELP_VRSN); |
| 686 | printf(UT_EXTRA_OPTS); | ||
| 630 | 687 | ||
| 631 | printf (UT_CONN_TIMEOUT, DEFAULT_SOCKET_TIMEOUT); | 688 | char *myport; |
| 632 | 689 | xasprintf(&myport, "%d", PORT); | |
| 633 | /* TODO: -v clashing with -v/-variable. Commenting out help text since verbose | 690 | printf(UT_HOST_PORT, 'p', myport); |
| 634 | is unused up to now */ | 691 | |
| 635 | /* printf (UT_VERBOSE); */ | 692 | printf(" %s\n", "-u, --ups=STRING"); |
| 636 | 693 | printf(" %s\n", _("Name of UPS")); | |
| 637 | printf ("\n"); | 694 | printf(" %s\n", "-T, --temperature"); |
| 638 | printf ("%s\n", _("This plugin attempts to determine the status of a UPS (Uninterruptible Power")); | 695 | printf(" %s\n", _("Output of temperatures in Celsius")); |
| 639 | printf ("%s\n", _("Supply) on a local or remote host. If the UPS is online or calibrating, the")); | 696 | printf(" %s\n", "-v, --variable=STRING"); |
| 640 | printf ("%s\n", _("plugin will return an OK state. If the battery is on it will return a WARNING")); | 697 | printf(" %s %s\n", _("Valid values for STRING are"), |
| 641 | printf ("%s\n", _("state. If the UPS is off or has a low battery the plugin will return a CRITICAL")); | 698 | "LINE, TEMP, BATTPCT, LOADPCT or REALPOWER"); |
| 642 | printf ("%s\n", _("state.")); | 699 | |
| 643 | 700 | printf(UT_WARN_CRIT); | |
| 644 | printf ("\n"); | 701 | |
| 645 | printf ("%s\n", _("Notes:")); | 702 | printf(UT_CONN_TIMEOUT, DEFAULT_SOCKET_TIMEOUT); |
| 646 | printf (" %s\n", _("You may also specify a variable to check (such as temperature, utility voltage,")); | 703 | |
| 647 | printf (" %s\n", _("battery load, etc.) as well as warning and critical thresholds for the value")); | 704 | /* TODO: -v clashing with -v/-variable. Commenting out help text since |
| 648 | printf (" %s\n", _("of that variable. If the remote host has multiple UPS that are being monitored")); | 705 | verbose is unused up to now */ |
| 649 | printf (" %s\n", _("you will have to use the --ups option to specify which UPS to check.")); | 706 | /* printf (UT_VERBOSE); */ |
| 650 | printf ("\n"); | 707 | |
| 651 | printf (" %s\n", _("This plugin requires that the UPSD daemon distributed with Russell Kroll's")); | 708 | printf("\n"); |
| 652 | printf (" %s\n", _("Network UPS Tools be installed on the remote host. If you do not have the")); | 709 | printf("%s\n", _("This plugin attempts to determine the status of a UPS " |
| 653 | printf (" %s\n", _("package installed on your system, you can download it from")); | 710 | "(Uninterruptible Power")); |
| 654 | printf (" %s\n", _("http://www.networkupstools.org")); | 711 | printf("%s\n", _("Supply) on a local or remote host. If the UPS is online " |
| 655 | 712 | "or calibrating, the")); | |
| 656 | printf (UT_SUPPORT); | 713 | printf("%s\n", _("plugin will return an OK state. If the battery is on it " |
| 714 | "will return a WARNING")); | ||
| 715 | printf("%s\n", _("state. If the UPS is off or has a low battery the plugin " | ||
| 716 | "will return a CRITICAL")); | ||
| 717 | printf("%s\n", _("state.")); | ||
| 718 | |||
| 719 | printf("\n"); | ||
| 720 | printf("%s\n", _("Notes:")); | ||
| 721 | printf(" %s\n", _("You may also specify a variable to check (such as " | ||
| 722 | "temperature, utility voltage,")); | ||
| 723 | printf(" %s\n", _("battery load, etc.) as well as warning and critical " | ||
| 724 | "thresholds for the value")); | ||
| 725 | printf(" %s\n", _("of that variable. If the remote host has multiple UPS " | ||
| 726 | "that are being monitored")); | ||
| 727 | printf(" %s\n", _("you will have to use the --ups option to specify which " | ||
| 728 | "UPS to check.")); | ||
| 729 | printf("\n"); | ||
| 730 | printf(" %s\n", _("This plugin requires that the UPSD daemon distributed " | ||
| 731 | "with Russell Kroll's")); | ||
| 732 | printf(" %s\n", _("Network UPS Tools be installed on the remote host. If " | ||
| 733 | "you do not have the")); | ||
| 734 | printf(" %s\n", | ||
| 735 | _("package installed on your system, you can download it from")); | ||
| 736 | printf(" %s\n", _("http://www.networkupstools.org")); | ||
| 737 | |||
| 738 | printf(UT_SUPPORT); | ||
| 657 | } | 739 | } |
| 658 | 740 | ||
| 659 | 741 | void print_usage(void) { | |
| 660 | void | 742 | printf("%s\n", _("Usage:")); |
| 661 | print_usage (void) | 743 | printf("%s -H host -u ups [-p port] [-v variable] [-w warn_value] [-c " |
| 662 | { | 744 | "crit_value] [-to to_sec] [-T]\n", |
| 663 | printf ("%s\n", _("Usage:")); | 745 | progname); |
| 664 | printf ("%s -H host -u ups [-p port] [-v variable] [-w warn_value] [-c crit_value] [-to to_sec] [-T]\n", progname); | ||
| 665 | } | 746 | } |
diff --git a/plugins/check_users.c b/plugins/check_users.c index 2a9ee986..89b95369 100644 --- a/plugins/check_users.c +++ b/plugins/check_users.c | |||
| @@ -179,7 +179,7 @@ main (int argc, char **argv) | |||
| 179 | printf (_("USERS %s - %d users currently logged in |%s\n"), | 179 | printf (_("USERS %s - %d users currently logged in |%s\n"), |
| 180 | state_text(result), users, | 180 | state_text(result), users, |
| 181 | sperfdata_int("users", users, "", warning_range, | 181 | sperfdata_int("users", users, "", warning_range, |
| 182 | critical_range, TRUE, 0, FALSE, 0)); | 182 | critical_range, true, 0, false, 0)); |
| 183 | } | 183 | } |
| 184 | 184 | ||
| 185 | return result; | 185 | return result; |
| @@ -202,7 +202,7 @@ process_arguments (int argc, char **argv) | |||
| 202 | if (argc < 2) | 202 | if (argc < 2) |
| 203 | usage ("\n"); | 203 | usage ("\n"); |
| 204 | 204 | ||
| 205 | while (1) { | 205 | while (true) { |
| 206 | c = getopt_long (argc, argv, "+hVvc:w:", longopts, &option); | 206 | c = getopt_long (argc, argv, "+hVvc:w:", longopts, &option); |
| 207 | 207 | ||
| 208 | if (c == -1 || c == EOF || c == 1) | 208 | if (c == -1 || c == EOF || c == 1) |
| @@ -227,18 +227,23 @@ process_arguments (int argc, char **argv) | |||
| 227 | } | 227 | } |
| 228 | 228 | ||
| 229 | c = optind; | 229 | c = optind; |
| 230 | |||
| 230 | if (warning_range == NULL && argc > c) | 231 | if (warning_range == NULL && argc > c) |
| 231 | warning_range = argv[c++]; | 232 | warning_range = argv[c++]; |
| 233 | |||
| 232 | if (critical_range == NULL && argc > c) | 234 | if (critical_range == NULL && argc > c) |
| 233 | critical_range = argv[c++]; | 235 | critical_range = argv[c++]; |
| 234 | 236 | ||
| 235 | /* this will abort in case of invalid ranges */ | 237 | /* this will abort in case of invalid ranges */ |
| 236 | set_thresholds (&thlds, warning_range, critical_range); | 238 | set_thresholds (&thlds, warning_range, critical_range); |
| 237 | 239 | ||
| 238 | if (thlds->warning->end < 0) | 240 | if (!thlds->warning) { |
| 239 | usage4 (_("Warning threshold must be a positive integer")); | 241 | usage4 (_("Warning threshold must be a valid range expression")); |
| 240 | if (thlds->critical->end < 0) | 242 | } |
| 241 | usage4 (_("Critical threshold must be a positive integer")); | 243 | |
| 244 | if (!thlds->critical) { | ||
| 245 | usage4 (_("Critical threshold must be a valid range expression")); | ||
| 246 | } | ||
| 242 | 247 | ||
| 243 | return OK; | 248 | return OK; |
| 244 | } | 249 | } |
| @@ -261,10 +266,10 @@ print_help (void) | |||
| 261 | printf (UT_HELP_VRSN); | 266 | printf (UT_HELP_VRSN); |
| 262 | printf (UT_EXTRA_OPTS); | 267 | printf (UT_EXTRA_OPTS); |
| 263 | 268 | ||
| 264 | printf (" %s\n", "-w, --warning=INTEGER"); | 269 | printf (" %s\n", "-w, --warning=RANGE_EXPRESSION"); |
| 265 | printf (" %s\n", _("Set WARNING status if more than INTEGER users are logged in")); | 270 | printf (" %s\n", _("Set WARNING status if number of logged in users violates RANGE_EXPRESSION")); |
| 266 | printf (" %s\n", "-c, --critical=INTEGER"); | 271 | printf (" %s\n", "-c, --critical=RANGE_EXPRESSION"); |
| 267 | printf (" %s\n", _("Set CRITICAL status if more than INTEGER users are logged in")); | 272 | printf (" %s\n", _("Set CRITICAL status if number of logged in users violates RANGE_EXPRESSION")); |
| 268 | 273 | ||
| 269 | printf (UT_SUPPORT); | 274 | printf (UT_SUPPORT); |
| 270 | } | 275 | } |
diff --git a/plugins/common.h b/plugins/common.h index 0f08e2f6..833479ce 100644 --- a/plugins/common.h +++ b/plugins/common.h | |||
| @@ -184,14 +184,6 @@ enum { | |||
| 184 | ERROR = -1 | 184 | ERROR = -1 |
| 185 | }; | 185 | }; |
| 186 | 186 | ||
| 187 | /* AIX seems to have this defined somewhere else */ | ||
| 188 | #ifndef FALSE | ||
| 189 | enum { | ||
| 190 | FALSE, | ||
| 191 | TRUE | ||
| 192 | }; | ||
| 193 | #endif | ||
| 194 | |||
| 195 | enum { | 187 | enum { |
| 196 | STATE_OK, | 188 | STATE_OK, |
| 197 | STATE_WARNING, | 189 | STATE_WARNING, |
| @@ -225,18 +217,4 @@ enum { | |||
| 225 | # define __attribute__(x) /* do nothing */ | 217 | # define __attribute__(x) /* do nothing */ |
| 226 | #endif | 218 | #endif |
| 227 | 219 | ||
| 228 | /* Try sysconf(_SC_OPEN_MAX) first, as it can be higher than OPEN_MAX. | ||
| 229 | * If that fails and the macro isn't defined, we fall back to an educated | ||
| 230 | * guess. There's no guarantee that our guess is adequate and the program | ||
| 231 | * will die with SIGSEGV if it isn't and the upper boundary is breached. */ | ||
| 232 | #define DEFAULT_MAXFD 256 /* fallback value if no max open files value is set */ | ||
| 233 | #define MAXFD_LIMIT 8192 /* upper limit of open files */ | ||
| 234 | #ifdef _SC_OPEN_MAX | ||
| 235 | static long maxfd = 0; | ||
| 236 | #elif defined(OPEN_MAX) | ||
| 237 | # define maxfd OPEN_MAX | ||
| 238 | #else /* sysconf macro unavailable, so guess (may be wildly inaccurate) */ | ||
| 239 | # define maxfd DEFAULT_MAXFD | ||
| 240 | #endif | ||
| 241 | |||
| 242 | #endif /* _COMMON_H_ */ | 220 | #endif /* _COMMON_H_ */ |
diff --git a/plugins/negate.c b/plugins/negate.c index 50f62d33..c5fe7e13 100644 --- a/plugins/negate.c +++ b/plugins/negate.c | |||
| @@ -47,7 +47,7 @@ static const char **process_arguments (int, char **); | |||
| 47 | void validate_arguments (char **); | 47 | void validate_arguments (char **); |
| 48 | void print_help (void); | 48 | void print_help (void); |
| 49 | void print_usage (void); | 49 | void print_usage (void); |
| 50 | int subst_text = FALSE; | 50 | bool subst_text = false; |
| 51 | 51 | ||
| 52 | static int state[4] = { | 52 | static int state[4] = { |
| 53 | STATE_OK, | 53 | STATE_OK, |
| @@ -63,7 +63,6 @@ main (int argc, char **argv) | |||
| 63 | char *sub; | 63 | char *sub; |
| 64 | char **command_line; | 64 | char **command_line; |
| 65 | output chld_out, chld_err; | 65 | output chld_out, chld_err; |
| 66 | int i; | ||
| 67 | 66 | ||
| 68 | setlocale (LC_ALL, ""); | 67 | setlocale (LC_ALL, ""); |
| 69 | bindtextdomain (PACKAGE, LOCALEDIR); | 68 | bindtextdomain (PACKAGE, LOCALEDIR); |
| @@ -86,7 +85,7 @@ main (int argc, char **argv) | |||
| 86 | result = cmd_run_array (command_line, &chld_out, &chld_err, 0); | 85 | result = cmd_run_array (command_line, &chld_out, &chld_err, 0); |
| 87 | } | 86 | } |
| 88 | if (chld_err.lines > 0) { | 87 | if (chld_err.lines > 0) { |
| 89 | for (i = 0; i < chld_err.lines; i++) { | 88 | for (size_t i = 0; i < chld_err.lines; i++) { |
| 90 | fprintf (stderr, "%s\n", chld_err.line[i]); | 89 | fprintf (stderr, "%s\n", chld_err.line[i]); |
| 91 | } | 90 | } |
| 92 | } | 91 | } |
| @@ -95,7 +94,7 @@ main (int argc, char **argv) | |||
| 95 | if (chld_out.lines == 0) | 94 | if (chld_out.lines == 0) |
| 96 | die (max_state_alt (result, STATE_UNKNOWN), _("No data returned from command\n")); | 95 | die (max_state_alt (result, STATE_UNKNOWN), _("No data returned from command\n")); |
| 97 | 96 | ||
| 98 | for (i = 0; i < chld_out.lines; i++) { | 97 | for (size_t i = 0; i < chld_out.lines; i++) { |
| 99 | if (subst_text && result >= 0 && result <= 4 && result != state[result]) { | 98 | if (subst_text && result >= 0 && result <= 4 && result != state[result]) { |
| 100 | /* Loop over each match found */ | 99 | /* Loop over each match found */ |
| 101 | while ((sub = strstr (chld_out.line[i], state_text (result)))) { | 100 | while ((sub = strstr (chld_out.line[i], state_text (result)))) { |
| @@ -122,7 +121,7 @@ static const char ** | |||
| 122 | process_arguments (int argc, char **argv) | 121 | process_arguments (int argc, char **argv) |
| 123 | { | 122 | { |
| 124 | int c; | 123 | int c; |
| 125 | int permute = TRUE; | 124 | bool permute = true; |
| 126 | 125 | ||
| 127 | int option = 0; | 126 | int option = 0; |
| 128 | static struct option longopts[] = { | 127 | static struct option longopts[] = { |
| @@ -168,26 +167,26 @@ process_arguments (int argc, char **argv) | |||
| 168 | case 'o': /* replacement for OK */ | 167 | case 'o': /* replacement for OK */ |
| 169 | if ((state[STATE_OK] = mp_translate_state(optarg)) == ERROR) | 168 | if ((state[STATE_OK] = mp_translate_state(optarg)) == ERROR) |
| 170 | usage4 (_("Ok must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3).")); | 169 | usage4 (_("Ok must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3).")); |
| 171 | permute = FALSE; | 170 | permute = false; |
| 172 | break; | 171 | break; |
| 173 | 172 | ||
| 174 | case 'w': /* replacement for WARNING */ | 173 | case 'w': /* replacement for WARNING */ |
| 175 | if ((state[STATE_WARNING] = mp_translate_state(optarg)) == ERROR) | 174 | if ((state[STATE_WARNING] = mp_translate_state(optarg)) == ERROR) |
| 176 | usage4 (_("Warning must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3).")); | 175 | usage4 (_("Warning must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3).")); |
| 177 | permute = FALSE; | 176 | permute = false; |
| 178 | break; | 177 | break; |
| 179 | case 'c': /* replacement for CRITICAL */ | 178 | case 'c': /* replacement for CRITICAL */ |
| 180 | if ((state[STATE_CRITICAL] = mp_translate_state(optarg)) == ERROR) | 179 | if ((state[STATE_CRITICAL] = mp_translate_state(optarg)) == ERROR) |
| 181 | usage4 (_("Critical must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3).")); | 180 | usage4 (_("Critical must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3).")); |
| 182 | permute = FALSE; | 181 | permute = false; |
| 183 | break; | 182 | break; |
| 184 | case 'u': /* replacement for UNKNOWN */ | 183 | case 'u': /* replacement for UNKNOWN */ |
| 185 | if ((state[STATE_UNKNOWN] = mp_translate_state(optarg)) == ERROR) | 184 | if ((state[STATE_UNKNOWN] = mp_translate_state(optarg)) == ERROR) |
| 186 | usage4 (_("Unknown must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3).")); | 185 | usage4 (_("Unknown must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3).")); |
| 187 | permute = FALSE; | 186 | permute = false; |
| 188 | break; | 187 | break; |
| 189 | case 's': /* Substitute status text */ | 188 | case 's': /* Substitute status text */ |
| 190 | subst_text = TRUE; | 189 | subst_text = true; |
| 191 | break; | 190 | break; |
| 192 | } | 191 | } |
| 193 | } | 192 | } |
| @@ -221,8 +220,10 @@ print_help (void) | |||
| 221 | 220 | ||
| 222 | printf (COPYRIGHT, copyright, email); | 221 | printf (COPYRIGHT, copyright, email); |
| 223 | 222 | ||
| 224 | printf ("%s\n", _("Negates the status of a plugin (returns OK for CRITICAL and vice-versa).")); | 223 | printf ("%s\n", _("Negates only the return code of a plugin (returns OK for CRITICAL and vice-versa) by default.")); |
| 225 | printf ("%s\n", _("Additional switches can be used to control which state becomes what.")); | 224 | printf ("%s\n", _("Additional switches can be used to control:\n")); |
| 225 | printf ("\t - which state becomes what\n"); | ||
| 226 | printf ("\t - changing the plugin output text to match the return code"); | ||
| 226 | 227 | ||
| 227 | printf ("\n\n"); | 228 | printf ("\n\n"); |
| 228 | 229 | ||
diff --git a/plugins/netutils.c b/plugins/netutils.c index 1bb4f076..c6af248e 100644 --- a/plugins/netutils.c +++ b/plugins/netutils.c | |||
| @@ -34,7 +34,7 @@ unsigned int socket_timeout = DEFAULT_SOCKET_TIMEOUT; | |||
| 34 | unsigned int socket_timeout_state = STATE_CRITICAL; | 34 | unsigned int socket_timeout_state = STATE_CRITICAL; |
| 35 | 35 | ||
| 36 | int econn_refuse_state = STATE_CRITICAL; | 36 | int econn_refuse_state = STATE_CRITICAL; |
| 37 | int was_refused = FALSE; | 37 | bool was_refused = false; |
| 38 | #if USE_IPV6 | 38 | #if USE_IPV6 |
| 39 | int address_family = AF_UNSPEC; | 39 | int address_family = AF_UNSPEC; |
| 40 | #else | 40 | #else |
| @@ -215,14 +215,14 @@ np_net_connect (const char *host_name, int port, int *sd, int proto) | |||
| 215 | result = connect (*sd, r->ai_addr, r->ai_addrlen); | 215 | result = connect (*sd, r->ai_addr, r->ai_addrlen); |
| 216 | 216 | ||
| 217 | if (result == 0) { | 217 | if (result == 0) { |
| 218 | was_refused = FALSE; | 218 | was_refused = false; |
| 219 | break; | 219 | break; |
| 220 | } | 220 | } |
| 221 | 221 | ||
| 222 | if (result < 0) { | 222 | if (result < 0) { |
| 223 | switch (errno) { | 223 | switch (errno) { |
| 224 | case ECONNREFUSED: | 224 | case ECONNREFUSED: |
| 225 | was_refused = TRUE; | 225 | was_refused = true; |
| 226 | break; | 226 | break; |
| 227 | } | 227 | } |
| 228 | } | 228 | } |
| @@ -246,7 +246,7 @@ np_net_connect (const char *host_name, int port, int *sd, int proto) | |||
| 246 | } | 246 | } |
| 247 | result = connect(*sd, (struct sockaddr *)&su, sizeof(su)); | 247 | result = connect(*sd, (struct sockaddr *)&su, sizeof(su)); |
| 248 | if (result < 0 && errno == ECONNREFUSED) | 248 | if (result < 0 && errno == ECONNREFUSED) |
| 249 | was_refused = TRUE; | 249 | was_refused = true; |
| 250 | } | 250 | } |
| 251 | 251 | ||
| 252 | if (result == 0) | 252 | if (result == 0) |
| @@ -326,13 +326,11 @@ send_request (int sd, int proto, const char *send_buffer, char *recv_buffer, int | |||
| 326 | } | 326 | } |
| 327 | 327 | ||
| 328 | 328 | ||
| 329 | int | 329 | bool is_host (const char *address) { |
| 330 | is_host (const char *address) | ||
| 331 | { | ||
| 332 | if (is_addr (address) || is_hostname (address)) | 330 | if (is_addr (address) || is_hostname (address)) |
| 333 | return (TRUE); | 331 | return (true); |
| 334 | 332 | ||
| 335 | return (FALSE); | 333 | return (false); |
| 336 | } | 334 | } |
| 337 | 335 | ||
| 338 | void | 336 | void |
| @@ -342,20 +340,18 @@ host_or_die(const char *str) | |||
| 342 | usage_va(_("Invalid hostname/address - %s"), str); | 340 | usage_va(_("Invalid hostname/address - %s"), str); |
| 343 | } | 341 | } |
| 344 | 342 | ||
| 345 | int | 343 | bool is_addr (const char *address) { |
| 346 | is_addr (const char *address) | ||
| 347 | { | ||
| 348 | #ifdef USE_IPV6 | 344 | #ifdef USE_IPV6 |
| 349 | if (address_family == AF_INET && is_inet_addr (address)) | 345 | if (address_family == AF_INET && is_inet_addr (address)) |
| 350 | return TRUE; | 346 | return true; |
| 351 | else if (address_family == AF_INET6 && is_inet6_addr (address)) | 347 | else if (address_family == AF_INET6 && is_inet6_addr (address)) |
| 352 | return TRUE; | 348 | return true; |
| 353 | #else | 349 | #else |
| 354 | if (is_inet_addr (address)) | 350 | if (is_inet_addr (address)) |
| 355 | return (TRUE); | 351 | return (true); |
| 356 | #endif | 352 | #endif |
| 357 | 353 | ||
| 358 | return (FALSE); | 354 | return (false); |
| 359 | } | 355 | } |
| 360 | 356 | ||
| 361 | int | 357 | int |
| @@ -370,10 +366,10 @@ dns_lookup (const char *in, struct sockaddr_storage *ss, int family) | |||
| 370 | 366 | ||
| 371 | retval = getaddrinfo (in, NULL, &hints, &res); | 367 | retval = getaddrinfo (in, NULL, &hints, &res); |
| 372 | if (retval != 0) | 368 | if (retval != 0) |
| 373 | return FALSE; | 369 | return false; |
| 374 | 370 | ||
| 375 | if (ss != NULL) | 371 | if (ss != NULL) |
| 376 | memcpy (ss, res->ai_addr, res->ai_addrlen); | 372 | memcpy (ss, res->ai_addr, res->ai_addrlen); |
| 377 | freeaddrinfo (res); | 373 | freeaddrinfo (res); |
| 378 | return TRUE; | 374 | return true; |
| 379 | } | 375 | } |
diff --git a/plugins/netutils.h b/plugins/netutils.h index d7ee0ddd..a95057e0 100644 --- a/plugins/netutils.h +++ b/plugins/netutils.h | |||
| @@ -73,8 +73,8 @@ int send_request (int sd, int proto, const char *send_buffer, char *recv_buffer, | |||
| 73 | 73 | ||
| 74 | 74 | ||
| 75 | /* "is_*" wrapper macros and functions */ | 75 | /* "is_*" wrapper macros and functions */ |
| 76 | int is_host (const char *); | 76 | bool is_host (const char *); |
| 77 | int is_addr (const char *); | 77 | bool is_addr (const char *); |
| 78 | int dns_lookup (const char *, struct sockaddr_storage *, int); | 78 | int dns_lookup (const char *, struct sockaddr_storage *, int); |
| 79 | void host_or_die(const char *str); | 79 | void host_or_die(const char *str); |
| 80 | #define resolve_host_or_addr(addr, family) dns_lookup(addr, NULL, family) | 80 | #define resolve_host_or_addr(addr, family) dns_lookup(addr, NULL, family) |
| @@ -89,10 +89,10 @@ void host_or_die(const char *str); | |||
| 89 | extern unsigned int socket_timeout; | 89 | extern unsigned int socket_timeout; |
| 90 | extern unsigned int socket_timeout_state; | 90 | extern unsigned int socket_timeout_state; |
| 91 | extern int econn_refuse_state; | 91 | extern int econn_refuse_state; |
| 92 | extern int was_refused; | 92 | extern bool was_refused; |
| 93 | extern int address_family; | 93 | extern int address_family; |
| 94 | 94 | ||
| 95 | RETSIGTYPE socket_timeout_alarm_handler (int) __attribute__((noreturn)); | 95 | void socket_timeout_alarm_handler (int) __attribute__((noreturn)); |
| 96 | 96 | ||
| 97 | /* SSL-Related functionality */ | 97 | /* SSL-Related functionality */ |
| 98 | #ifdef HAVE_SSL | 98 | #ifdef HAVE_SSL |
diff --git a/plugins/popen.c b/plugins/popen.c index 723817d5..54e63bc5 100644 --- a/plugins/popen.c +++ b/plugins/popen.c | |||
| @@ -38,8 +38,9 @@ | |||
| 38 | * | 38 | * |
| 39 | *****************************************************************************/ | 39 | *****************************************************************************/ |
| 40 | 40 | ||
| 41 | #include "common.h" | 41 | #include "./common.h" |
| 42 | #include "utils.h" | 42 | #include "./utils.h" |
| 43 | #include "../lib/maxfd.h" | ||
| 43 | 44 | ||
| 44 | /* extern so plugin has pid to kill exec'd process on timeouts */ | 45 | /* extern so plugin has pid to kill exec'd process on timeouts */ |
| 45 | extern pid_t *childpid; | 46 | extern pid_t *childpid; |
| @@ -49,9 +50,9 @@ extern FILE *child_process; | |||
| 49 | FILE *spopen (const char *); | 50 | FILE *spopen (const char *); |
| 50 | int spclose (FILE *); | 51 | int spclose (FILE *); |
| 51 | #ifdef REDHAT_SPOPEN_ERROR | 52 | #ifdef REDHAT_SPOPEN_ERROR |
| 52 | RETSIGTYPE popen_sigchld_handler (int); | 53 | void popen_sigchld_handler (int); |
| 53 | #endif | 54 | #endif |
| 54 | RETSIGTYPE popen_timeout_alarm_handler (int); | 55 | void popen_timeout_alarm_handler (int); |
| 55 | 56 | ||
| 56 | #include <stdarg.h> /* ANSI C header file */ | 57 | #include <stdarg.h> /* ANSI C header file */ |
| 57 | #include <fcntl.h> | 58 | #include <fcntl.h> |
| @@ -104,7 +105,7 @@ spopen (const char *cmdstring) | |||
| 104 | #endif | 105 | #endif |
| 105 | 106 | ||
| 106 | env[0] = strdup("LC_ALL=C"); | 107 | env[0] = strdup("LC_ALL=C"); |
| 107 | env[1] = '\0'; | 108 | env[1] = NULL; |
| 108 | 109 | ||
| 109 | /* if no command was passed, return with no error */ | 110 | /* if no command was passed, return with no error */ |
| 110 | if (cmdstring == NULL) | 111 | if (cmdstring == NULL) |
| @@ -177,8 +178,7 @@ spopen (const char *cmdstring) | |||
| 177 | } | 178 | } |
| 178 | argv[i] = NULL; | 179 | argv[i] = NULL; |
| 179 | 180 | ||
| 180 | if(maxfd == 0) | 181 | long maxfd = mp_open_max(); |
| 181 | maxfd = open_max(); | ||
| 182 | 182 | ||
| 183 | if (childpid == NULL) { /* first time through */ | 183 | if (childpid == NULL) { /* first time through */ |
| 184 | if ((childpid = calloc ((size_t)maxfd, sizeof (pid_t))) == NULL) | 184 | if ((childpid = calloc ((size_t)maxfd, sizeof (pid_t))) == NULL) |
| @@ -266,7 +266,7 @@ spclose (FILE * fp) | |||
| 266 | } | 266 | } |
| 267 | 267 | ||
| 268 | #ifdef REDHAT_SPOPEN_ERROR | 268 | #ifdef REDHAT_SPOPEN_ERROR |
| 269 | RETSIGTYPE | 269 | void |
| 270 | popen_sigchld_handler (int signo) | 270 | popen_sigchld_handler (int signo) |
| 271 | { | 271 | { |
| 272 | if (signo == SIGCHLD) | 272 | if (signo == SIGCHLD) |
| @@ -274,7 +274,7 @@ popen_sigchld_handler (int signo) | |||
| 274 | } | 274 | } |
| 275 | #endif | 275 | #endif |
| 276 | 276 | ||
| 277 | RETSIGTYPE | 277 | void |
| 278 | popen_timeout_alarm_handler (int signo) | 278 | popen_timeout_alarm_handler (int signo) |
| 279 | { | 279 | { |
| 280 | int fh; | 280 | int fh; |
diff --git a/plugins/popen.h b/plugins/popen.h index a5dd8fa7..1ea69632 100644 --- a/plugins/popen.h +++ b/plugins/popen.h | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | 5 | ||
| 6 | FILE *spopen (const char *); | 6 | FILE *spopen (const char *); |
| 7 | int spclose (FILE *); | 7 | int spclose (FILE *); |
| 8 | RETSIGTYPE popen_timeout_alarm_handler (int); | 8 | void popen_timeout_alarm_handler (int); |
| 9 | 9 | ||
| 10 | pid_t *childpid=NULL; | 10 | pid_t *childpid=NULL; |
| 11 | int *child_stderr_array=NULL; | 11 | int *child_stderr_array=NULL; |
diff --git a/plugins/runcmd.c b/plugins/runcmd.c index 102191e4..ed49bb99 100644 --- a/plugins/runcmd.c +++ b/plugins/runcmd.c | |||
| @@ -60,6 +60,8 @@ | |||
| 60 | # define SIG_ERR ((Sigfunc *)-1) | 60 | # define SIG_ERR ((Sigfunc *)-1) |
| 61 | #endif | 61 | #endif |
| 62 | 62 | ||
| 63 | #include "../lib/maxfd.h" | ||
| 64 | |||
| 63 | /* This variable must be global, since there's no way the caller | 65 | /* This variable must be global, since there's no way the caller |
| 64 | * can forcibly slay a dead or ungainly running program otherwise. | 66 | * can forcibly slay a dead or ungainly running program otherwise. |
| 65 | * Multithreading apps and plugins can initialize it (via NP_RUNCMD_INIT) | 67 | * Multithreading apps and plugins can initialize it (via NP_RUNCMD_INIT) |
| @@ -88,8 +90,7 @@ extern void die (int, const char *, ...) | |||
| 88 | * through this api and thus achieve async-safeness throughout the api */ | 90 | * through this api and thus achieve async-safeness throughout the api */ |
| 89 | void np_runcmd_init(void) | 91 | void np_runcmd_init(void) |
| 90 | { | 92 | { |
| 91 | if(maxfd == 0) | 93 | long maxfd = mp_open_max(); |
| 92 | maxfd = open_max(); | ||
| 93 | if(!np_pids) np_pids = calloc(maxfd, sizeof(pid_t)); | 94 | if(!np_pids) np_pids = calloc(maxfd, sizeof(pid_t)); |
| 94 | } | 95 | } |
| 95 | 96 | ||
| @@ -114,7 +115,7 @@ np_runcmd_open(const char *cmdstring, int *pfd, int *pfderr) | |||
| 114 | if(!np_pids) NP_RUNCMD_INIT; | 115 | if(!np_pids) NP_RUNCMD_INIT; |
| 115 | 116 | ||
| 116 | env[0] = strdup("LC_ALL=C"); | 117 | env[0] = strdup("LC_ALL=C"); |
| 117 | env[1] = '\0'; | 118 | env[1] = NULL; |
| 118 | 119 | ||
| 119 | /* make copy of command string so strtok() doesn't silently modify it */ | 120 | /* make copy of command string so strtok() doesn't silently modify it */ |
| 120 | /* (the calling program may want to access it later) */ | 121 | /* (the calling program may want to access it later) */ |
| @@ -192,6 +193,7 @@ np_runcmd_open(const char *cmdstring, int *pfd, int *pfderr) | |||
| 192 | /* close all descriptors in np_pids[] | 193 | /* close all descriptors in np_pids[] |
| 193 | * This is executed in a separate address space (pure child), | 194 | * This is executed in a separate address space (pure child), |
| 194 | * so we don't have to worry about async safety */ | 195 | * so we don't have to worry about async safety */ |
| 196 | long maxfd = mp_open_max(); | ||
| 195 | for (i = 0; i < maxfd; i++) | 197 | for (i = 0; i < maxfd; i++) |
| 196 | if(np_pids[i] > 0) | 198 | if(np_pids[i] > 0) |
| 197 | close (i); | 199 | close (i); |
| @@ -219,6 +221,7 @@ np_runcmd_close(int fd) | |||
| 219 | pid_t pid; | 221 | pid_t pid; |
| 220 | 222 | ||
| 221 | /* make sure this fd was opened by popen() */ | 223 | /* make sure this fd was opened by popen() */ |
| 224 | long maxfd = mp_open_max(); | ||
| 222 | if(fd < 0 || fd > maxfd || !np_pids || (pid = np_pids[fd]) == 0) | 225 | if(fd < 0 || fd > maxfd || !np_pids || (pid = np_pids[fd]) == 0) |
| 223 | return -1; | 226 | return -1; |
| 224 | 227 | ||
| @@ -237,12 +240,12 @@ np_runcmd_close(int fd) | |||
| 237 | void | 240 | void |
| 238 | runcmd_timeout_alarm_handler (int signo) | 241 | runcmd_timeout_alarm_handler (int signo) |
| 239 | { | 242 | { |
| 240 | size_t i; | ||
| 241 | 243 | ||
| 242 | if (signo == SIGALRM) | 244 | if (signo == SIGALRM) |
| 243 | puts(_("CRITICAL - Plugin timed out while executing system call")); | 245 | puts(_("CRITICAL - Plugin timed out while executing system call")); |
| 244 | 246 | ||
| 245 | if(np_pids) for(i = 0; i < maxfd; i++) { | 247 | long maxfd = mp_open_max(); |
| 248 | if(np_pids) for(long int i = 0; i < maxfd; i++) { | ||
| 246 | if(np_pids[i] != 0) kill(np_pids[i], SIGKILL); | 249 | if(np_pids[i] != 0) kill(np_pids[i], SIGKILL); |
| 247 | } | 250 | } |
| 248 | 251 | ||
diff --git a/plugins/sslutils.c b/plugins/sslutils.c index 666a0120..6bc0ba81 100644 --- a/plugins/sslutils.c +++ b/plugins/sslutils.c | |||
| @@ -31,9 +31,8 @@ | |||
| 31 | #include "netutils.h" | 31 | #include "netutils.h" |
| 32 | 32 | ||
| 33 | #ifdef HAVE_SSL | 33 | #ifdef HAVE_SSL |
| 34 | static SSL_CTX *c=NULL; | 34 | static SSL_CTX *ctx=NULL; |
| 35 | static SSL *s=NULL; | 35 | static SSL *s=NULL; |
| 36 | static int initialized=0; | ||
| 37 | 36 | ||
| 38 | int np_net_ssl_init(int sd) { | 37 | int np_net_ssl_init(int sd) { |
| 39 | return np_net_ssl_init_with_hostname(sd, NULL); | 38 | return np_net_ssl_init_with_hostname(sd, NULL); |
| @@ -48,24 +47,24 @@ int np_net_ssl_init_with_hostname_and_version(int sd, char *host_name, int versi | |||
| 48 | } | 47 | } |
| 49 | 48 | ||
| 50 | int np_net_ssl_init_with_hostname_version_and_cert(int sd, char *host_name, int version, char *cert, char *privkey) { | 49 | int np_net_ssl_init_with_hostname_version_and_cert(int sd, char *host_name, int version, char *cert, char *privkey) { |
| 51 | const SSL_METHOD *method = NULL; | ||
| 52 | long options = 0; | 50 | long options = 0; |
| 53 | 51 | ||
| 52 | if ((ctx = SSL_CTX_new(TLS_client_method())) == NULL) { | ||
| 53 | printf("%s\n", _("CRITICAL - Cannot create SSL context.")); | ||
| 54 | return STATE_CRITICAL; | ||
| 55 | } | ||
| 56 | |||
| 54 | switch (version) { | 57 | switch (version) { |
| 55 | case MP_SSLv2: /* SSLv2 protocol */ | 58 | case MP_SSLv2: /* SSLv2 protocol */ |
| 56 | #if defined(USE_GNUTLS) || defined(OPENSSL_NO_SSL2) | ||
| 57 | printf("%s\n", _("UNKNOWN - SSL protocol version 2 is not supported by your SSL library.")); | 59 | printf("%s\n", _("UNKNOWN - SSL protocol version 2 is not supported by your SSL library.")); |
| 58 | return STATE_UNKNOWN; | 60 | return STATE_UNKNOWN; |
| 59 | #else | ||
| 60 | method = SSLv2_client_method(); | ||
| 61 | break; | ||
| 62 | #endif | ||
| 63 | case MP_SSLv3: /* SSLv3 protocol */ | 61 | case MP_SSLv3: /* SSLv3 protocol */ |
| 64 | #if defined(OPENSSL_NO_SSL3) | 62 | #if defined(OPENSSL_NO_SSL3) |
| 65 | printf("%s\n", _("UNKNOWN - SSL protocol version 3 is not supported by your SSL library.")); | 63 | printf("%s\n", _("UNKNOWN - SSL protocol version 3 is not supported by your SSL library.")); |
| 66 | return STATE_UNKNOWN; | 64 | return STATE_UNKNOWN; |
| 67 | #else | 65 | #else |
| 68 | method = SSLv3_client_method(); | 66 | SSL_CTX_set_min_proto_version(ctx, SSL3_VERSION); |
| 67 | SSL_CTX_set_max_proto_version(ctx, SSL3_VERSION); | ||
| 69 | break; | 68 | break; |
| 70 | #endif | 69 | #endif |
| 71 | case MP_TLSv1: /* TLSv1 protocol */ | 70 | case MP_TLSv1: /* TLSv1 protocol */ |
| @@ -73,7 +72,8 @@ int np_net_ssl_init_with_hostname_version_and_cert(int sd, char *host_name, int | |||
| 73 | printf("%s\n", _("UNKNOWN - TLS protocol version 1 is not supported by your SSL library.")); | 72 | printf("%s\n", _("UNKNOWN - TLS protocol version 1 is not supported by your SSL library.")); |
| 74 | return STATE_UNKNOWN; | 73 | return STATE_UNKNOWN; |
| 75 | #else | 74 | #else |
| 76 | method = TLSv1_client_method(); | 75 | SSL_CTX_set_min_proto_version(ctx, TLS1_VERSION); |
| 76 | SSL_CTX_set_max_proto_version(ctx, TLS1_VERSION); | ||
| 77 | break; | 77 | break; |
| 78 | #endif | 78 | #endif |
| 79 | case MP_TLSv1_1: /* TLSv1.1 protocol */ | 79 | case MP_TLSv1_1: /* TLSv1.1 protocol */ |
| @@ -81,7 +81,8 @@ int np_net_ssl_init_with_hostname_version_and_cert(int sd, char *host_name, int | |||
| 81 | printf("%s\n", _("UNKNOWN - TLS protocol version 1.1 is not supported by your SSL library.")); | 81 | printf("%s\n", _("UNKNOWN - TLS protocol version 1.1 is not supported by your SSL library.")); |
| 82 | return STATE_UNKNOWN; | 82 | return STATE_UNKNOWN; |
| 83 | #else | 83 | #else |
| 84 | method = TLSv1_1_client_method(); | 84 | SSL_CTX_set_min_proto_version(ctx, TLS1_1_VERSION); |
| 85 | SSL_CTX_set_max_proto_version(ctx, TLS1_1_VERSION); | ||
| 85 | break; | 86 | break; |
| 86 | #endif | 87 | #endif |
| 87 | case MP_TLSv1_2: /* TLSv1.2 protocol */ | 88 | case MP_TLSv1_2: /* TLSv1.2 protocol */ |
| @@ -89,7 +90,8 @@ int np_net_ssl_init_with_hostname_version_and_cert(int sd, char *host_name, int | |||
| 89 | printf("%s\n", _("UNKNOWN - TLS protocol version 1.2 is not supported by your SSL library.")); | 90 | printf("%s\n", _("UNKNOWN - TLS protocol version 1.2 is not supported by your SSL library.")); |
| 90 | return STATE_UNKNOWN; | 91 | return STATE_UNKNOWN; |
| 91 | #else | 92 | #else |
| 92 | method = TLSv1_2_client_method(); | 93 | SSL_CTX_set_min_proto_version(ctx, TLS1_2_VERSION); |
| 94 | SSL_CTX_set_max_proto_version(ctx, TLS1_2_VERSION); | ||
| 93 | break; | 95 | break; |
| 94 | #endif | 96 | #endif |
| 95 | case MP_TLSv1_2_OR_NEWER: | 97 | case MP_TLSv1_2_OR_NEWER: |
| @@ -97,56 +99,43 @@ int np_net_ssl_init_with_hostname_version_and_cert(int sd, char *host_name, int | |||
| 97 | printf("%s\n", _("UNKNOWN - Disabling TLSv1.1 is not supported by your SSL library.")); | 99 | printf("%s\n", _("UNKNOWN - Disabling TLSv1.1 is not supported by your SSL library.")); |
| 98 | return STATE_UNKNOWN; | 100 | return STATE_UNKNOWN; |
| 99 | #else | 101 | #else |
| 100 | options |= SSL_OP_NO_TLSv1_1; | 102 | SSL_CTX_set_min_proto_version(ctx, TLS1_2_VERSION); |
| 103 | break; | ||
| 101 | #endif | 104 | #endif |
| 102 | /* FALLTHROUGH */ | ||
| 103 | case MP_TLSv1_1_OR_NEWER: | 105 | case MP_TLSv1_1_OR_NEWER: |
| 104 | #if !defined(SSL_OP_NO_TLSv1) | 106 | #if !defined(SSL_OP_NO_TLSv1) |
| 105 | printf("%s\n", _("UNKNOWN - Disabling TLSv1 is not supported by your SSL library.")); | 107 | printf("%s\n", _("UNKNOWN - Disabling TLSv1 is not supported by your SSL library.")); |
| 106 | return STATE_UNKNOWN; | 108 | return STATE_UNKNOWN; |
| 107 | #else | 109 | #else |
| 108 | options |= SSL_OP_NO_TLSv1; | 110 | SSL_CTX_set_min_proto_version(ctx, TLS1_1_VERSION); |
| 111 | break; | ||
| 109 | #endif | 112 | #endif |
| 110 | /* FALLTHROUGH */ | ||
| 111 | case MP_TLSv1_OR_NEWER: | 113 | case MP_TLSv1_OR_NEWER: |
| 112 | #if defined(SSL_OP_NO_SSLv3) | 114 | #if defined(SSL_OP_NO_SSLv3) |
| 113 | options |= SSL_OP_NO_SSLv3; | 115 | SSL_CTX_set_min_proto_version(ctx, TLS1_VERSION); |
| 116 | break; | ||
| 114 | #endif | 117 | #endif |
| 115 | /* FALLTHROUGH */ | ||
| 116 | case MP_SSLv3_OR_NEWER: | 118 | case MP_SSLv3_OR_NEWER: |
| 117 | #if defined(SSL_OP_NO_SSLv2) | 119 | #if defined(SSL_OP_NO_SSLv2) |
| 118 | options |= SSL_OP_NO_SSLv2; | 120 | SSL_CTX_set_min_proto_version(ctx, SSL3_VERSION); |
| 121 | break; | ||
| 119 | #endif | 122 | #endif |
| 120 | case MP_SSLv2_OR_NEWER: | ||
| 121 | /* FALLTHROUGH */ | ||
| 122 | default: /* Default to auto negotiation */ | ||
| 123 | method = SSLv23_client_method(); | ||
| 124 | } | ||
| 125 | if (!initialized) { | ||
| 126 | /* Initialize SSL context */ | ||
| 127 | SSLeay_add_ssl_algorithms(); | ||
| 128 | SSL_load_error_strings(); | ||
| 129 | OpenSSL_add_all_algorithms(); | ||
| 130 | initialized = 1; | ||
| 131 | } | ||
| 132 | if ((c = SSL_CTX_new(method)) == NULL) { | ||
| 133 | printf("%s\n", _("CRITICAL - Cannot create SSL context.")); | ||
| 134 | return STATE_CRITICAL; | ||
| 135 | } | 123 | } |
| 124 | |||
| 136 | if (cert && privkey) { | 125 | if (cert && privkey) { |
| 137 | #ifdef USE_OPENSSL | 126 | #ifdef USE_OPENSSL |
| 138 | if (!SSL_CTX_use_certificate_chain_file(c, cert)) { | 127 | if (!SSL_CTX_use_certificate_chain_file(ctx, cert)) { |
| 139 | #elif USE_GNUTLS | 128 | #elif USE_GNUTLS |
| 140 | if (!SSL_CTX_use_certificate_file(c, cert, SSL_FILETYPE_PEM)) { | 129 | if (!SSL_CTX_use_certificate_file(ctx, cert, SSL_FILETYPE_PEM)) { |
| 141 | #else | 130 | #else |
| 142 | #error Unported for unknown SSL library | 131 | #error Unported for unknown SSL library |
| 143 | #endif | 132 | #endif |
| 144 | printf ("%s\n", _("CRITICAL - Unable to open certificate chain file!\n")); | 133 | printf ("%s\n", _("CRITICAL - Unable to open certificate chain file!\n")); |
| 145 | return STATE_CRITICAL; | 134 | return STATE_CRITICAL; |
| 146 | } | 135 | } |
| 147 | SSL_CTX_use_PrivateKey_file(c, privkey, SSL_FILETYPE_PEM); | 136 | SSL_CTX_use_PrivateKey_file(ctx, privkey, SSL_FILETYPE_PEM); |
| 148 | #ifdef USE_OPENSSL | 137 | #ifdef USE_OPENSSL |
| 149 | if (!SSL_CTX_check_private_key(c)) { | 138 | if (!SSL_CTX_check_private_key(ctx)) { |
| 150 | printf ("%s\n", _("CRITICAL - Private key does not seem to match certificate!\n")); | 139 | printf ("%s\n", _("CRITICAL - Private key does not seem to match certificate!\n")); |
| 151 | return STATE_CRITICAL; | 140 | return STATE_CRITICAL; |
| 152 | } | 141 | } |
| @@ -155,9 +144,9 @@ int np_net_ssl_init_with_hostname_version_and_cert(int sd, char *host_name, int | |||
| 155 | #ifdef SSL_OP_NO_TICKET | 144 | #ifdef SSL_OP_NO_TICKET |
| 156 | options |= SSL_OP_NO_TICKET; | 145 | options |= SSL_OP_NO_TICKET; |
| 157 | #endif | 146 | #endif |
| 158 | SSL_CTX_set_options(c, options); | 147 | SSL_CTX_set_options(ctx, options); |
| 159 | SSL_CTX_set_mode(c, SSL_MODE_AUTO_RETRY); | 148 | SSL_CTX_set_mode(ctx, SSL_MODE_AUTO_RETRY); |
| 160 | if ((s = SSL_new(c)) != NULL) { | 149 | if ((s = SSL_new(ctx)) != NULL) { |
| 161 | #ifdef SSL_set_tlsext_host_name | 150 | #ifdef SSL_set_tlsext_host_name |
| 162 | if (host_name != NULL) | 151 | if (host_name != NULL) |
| 163 | SSL_set_tlsext_host_name(s, host_name); | 152 | SSL_set_tlsext_host_name(s, host_name); |
| @@ -184,9 +173,9 @@ void np_net_ssl_cleanup() { | |||
| 184 | #endif | 173 | #endif |
| 185 | SSL_shutdown(s); | 174 | SSL_shutdown(s); |
| 186 | SSL_free(s); | 175 | SSL_free(s); |
| 187 | if (c) { | 176 | if (ctx) { |
| 188 | SSL_CTX_free(c); | 177 | SSL_CTX_free(ctx); |
| 189 | c=NULL; | 178 | ctx=NULL; |
| 190 | } | 179 | } |
| 191 | s=NULL; | 180 | s=NULL; |
| 192 | } | 181 | } |
diff --git a/plugins/t/check_curl.t b/plugins/t/check_curl.t index eae98cc1..7a930a4e 100644 --- a/plugins/t/check_curl.t +++ b/plugins/t/check_curl.t | |||
| @@ -205,9 +205,9 @@ SKIP: { | |||
| 205 | like ( $res->output, '/time_connect=[\d\.]+/', 'Extended Performance Data Output OK' ); | 205 | like ( $res->output, '/time_connect=[\d\.]+/', 'Extended Performance Data Output OK' ); |
| 206 | like ( $res->output, '/time_ssl=[\d\.]+/', 'Extended Performance Data SSL Output OK' ); | 206 | like ( $res->output, '/time_ssl=[\d\.]+/', 'Extended Performance Data SSL Output OK' ); |
| 207 | 207 | ||
| 208 | $res = NPTest->testCmd( "./$plugin -H www.mozilla.com -u /firefox -f curl" ); | 208 | $res = NPTest->testCmd( "./$plugin -H monitoring-plugins.org -u /download.html -f follow" ); |
| 209 | is( $res->return_code, 0, "Redirection based on location is okay"); | 209 | is( $res->return_code, 0, "Redirection based on location is okay"); |
| 210 | 210 | ||
| 211 | $res = NPTest->testCmd( "./$plugin -H www.mozilla.com --extended-perfdata" ); | 211 | $res = NPTest->testCmd( "./$plugin -H monitoring-plugins.org --extended-perfdata" ); |
| 212 | like ( $res->output, '/time_connect=[\d\.]+/', 'Extended Performance Data Output OK' ); | 212 | like ( $res->output, '/time_connect=[\d\.]+/', 'Extended Performance Data Output OK' ); |
| 213 | } | 213 | } |
diff --git a/plugins/t/check_disk.t b/plugins/t/check_disk.t index ca035ce7..9eb77ce4 100644 --- a/plugins/t/check_disk.t +++ b/plugins/t/check_disk.t | |||
| @@ -23,11 +23,11 @@ my $mountpoint2_valid = getTestParameter( "NP_MOUNTPOINT2_VALID", "Path to anoth | |||
| 23 | if ($mountpoint_valid eq "" or $mountpoint2_valid eq "") { | 23 | if ($mountpoint_valid eq "" or $mountpoint2_valid eq "") { |
| 24 | plan skip_all => "Need 2 mountpoints to test"; | 24 | plan skip_all => "Need 2 mountpoints to test"; |
| 25 | } else { | 25 | } else { |
| 26 | plan tests => 88; | 26 | plan tests => 94; |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | $result = NPTest->testCmd( | 29 | $result = NPTest->testCmd( |
| 30 | "./check_disk -w 1% -c 1% -p $mountpoint_valid -w 1% -c 1% -p $mountpoint2_valid" | 30 | "./check_disk -w 1% -c 1% -p $mountpoint_valid -w 1% -c 1% -p $mountpoint2_valid" |
| 31 | ); | 31 | ); |
| 32 | cmp_ok( $result->return_code, "==", 0, "Checking two mountpoints (must have at least 1% free in space and inodes)"); | 32 | cmp_ok( $result->return_code, "==", 0, "Checking two mountpoints (must have at least 1% free in space and inodes)"); |
| 33 | my $c = 0; | 33 | my $c = 0; |
| @@ -44,7 +44,7 @@ my @perf_data = sort(split(/ /, $result->perf_output)); | |||
| 44 | # Calculate avg_free free on mountpoint1 and mountpoint2 | 44 | # Calculate avg_free free on mountpoint1 and mountpoint2 |
| 45 | # because if you check in the middle, you should get different errors | 45 | # because if you check in the middle, you should get different errors |
| 46 | $_ = $result->output; | 46 | $_ = $result->output; |
| 47 | my ($free_on_mp1, $free_on_mp2) = (m/\((\d+)%.*\((\d+)%/); | 47 | my ($free_on_mp1, $free_on_mp2) = (m/\((\d+\.\d+)%.*\((\d+\.\d+)%/); |
| 48 | die "Cannot parse output: $_" unless ($free_on_mp1 && $free_on_mp2); | 48 | die "Cannot parse output: $_" unless ($free_on_mp1 && $free_on_mp2); |
| 49 | my $avg_free = ceil(($free_on_mp1+$free_on_mp2)/2); | 49 | my $avg_free = ceil(($free_on_mp1+$free_on_mp2)/2); |
| 50 | my ($more_free, $less_free); | 50 | my ($more_free, $less_free); |
| @@ -103,8 +103,8 @@ is ($crit_percth_data, int((1-10/100)*$total_percth_data), "Wrong critical in pe | |||
| 103 | 103 | ||
| 104 | 104 | ||
| 105 | # Check when order of mount points are reversed, that perf data remains same | 105 | # Check when order of mount points are reversed, that perf data remains same |
| 106 | $result = NPTest->testCmd( | 106 | $result = NPTest->testCmd( |
| 107 | "./check_disk -w 1% -c 1% -p $mountpoint2_valid -w 1% -c 1% -p $mountpoint_valid" | 107 | "./check_disk -w 1% -c 1% -p $mountpoint2_valid -w 1% -c 1% -p $mountpoint_valid" |
| 108 | ); | 108 | ); |
| 109 | @_ = sort(split(/ /, $result->perf_output)); | 109 | @_ = sort(split(/ /, $result->perf_output)); |
| 110 | is_deeply( \@perf_data, \@_, "perf data for both filesystems same when reversed"); | 110 | is_deeply( \@perf_data, \@_, "perf data for both filesystems same when reversed"); |
| @@ -119,8 +119,12 @@ like ( $result->only_output, qr/$more_free/, "Have disk name in text"); | |||
| 119 | 119 | ||
| 120 | $result = NPTest->testCmd( "./check_disk -w 1 -c 1 -p $more_free -p $less_free" ); | 120 | $result = NPTest->testCmd( "./check_disk -w 1 -c 1 -p $more_free -p $less_free" ); |
| 121 | cmp_ok( $result->return_code, '==', 0, "At least 1 MB available on $more_free and $less_free"); | 121 | cmp_ok( $result->return_code, '==', 0, "At least 1 MB available on $more_free and $less_free"); |
| 122 | |||
| 122 | $_ = $result->output; | 123 | $_ = $result->output; |
| 124 | |||
| 123 | my ($free_mb_on_mp1, $free_mb_on_mp2) = (m/(\d+)MiB .* (\d+)MiB /g); | 125 | my ($free_mb_on_mp1, $free_mb_on_mp2) = (m/(\d+)MiB .* (\d+)MiB /g); |
| 126 | die "Cannot parse output: $_" unless ($free_mb_on_mp1 && $free_mb_on_mp2); | ||
| 127 | |||
| 124 | my $free_mb_on_all = $free_mb_on_mp1 + $free_mb_on_mp2; | 128 | my $free_mb_on_all = $free_mb_on_mp1 + $free_mb_on_mp2; |
| 125 | 129 | ||
| 126 | 130 | ||
| @@ -134,8 +138,8 @@ cmp_ok( $result->return_code, '==', 0, "Old syntax okay" ); | |||
| 134 | $result = NPTest->testCmd( "./check_disk -w 1% -c 1% -p $more_free" ); | 138 | $result = NPTest->testCmd( "./check_disk -w 1% -c 1% -p $more_free" ); |
| 135 | cmp_ok( $result->return_code, "==", 0, "At least 1% free" ); | 139 | cmp_ok( $result->return_code, "==", 0, "At least 1% free" ); |
| 136 | 140 | ||
| 137 | $result = NPTest->testCmd( | 141 | $result = NPTest->testCmd( |
| 138 | "./check_disk -w 1% -c 1% -p $more_free -w 100% -c 100% -p $less_free" | 142 | "./check_disk -w 1% -c 1% -p $more_free -w 100% -c 100% -p $less_free" |
| 139 | ); | 143 | ); |
| 140 | cmp_ok( $result->return_code, "==", 2, "Get critical on less_free mountpoint $less_free" ); | 144 | cmp_ok( $result->return_code, "==", 2, "Get critical on less_free mountpoint $less_free" ); |
| 141 | like( $result->output, $failureOutput, "Right output" ); | 145 | like( $result->output, $failureOutput, "Right output" ); |
| @@ -151,14 +155,14 @@ $result = NPTest->testCmd( | |||
| 151 | ); | 155 | ); |
| 152 | cmp_ok( $result->return_code, '==', 0, "Get ok on more_free mountpoint, when checking avg_free"); | 156 | cmp_ok( $result->return_code, '==', 0, "Get ok on more_free mountpoint, when checking avg_free"); |
| 153 | 157 | ||
| 154 | $result = NPTest->testCmd( | 158 | $result = NPTest->testCmd( |
| 155 | "./check_disk -w $avg_free% -c 0% -p $less_free -w $avg_free% -c $avg_free% -p $more_free" | 159 | "./check_disk -w $avg_free% -c 0% -p $less_free -w $avg_free% -c $avg_free% -p $more_free" |
| 156 | ); | 160 | ); |
| 157 | cmp_ok( $result->return_code, "==", 1, "Combining above two tests, get warning"); | 161 | cmp_ok( $result->return_code, "==", 1, "Combining above two tests, get warning"); |
| 158 | my $all_disks = $result->output; | 162 | my $all_disks = $result->output; |
| 159 | 163 | ||
| 160 | $result = NPTest->testCmd( | 164 | $result = NPTest->testCmd( |
| 161 | "./check_disk -e -w $avg_free% -c 0% -p $less_free -w $avg_free% -c $avg_free% -p $more_free" | 165 | "./check_disk -e -w $avg_free% -c 0% -p $less_free -w $avg_free% -c $avg_free% -p $more_free" |
| 162 | ); | 166 | ); |
| 163 | isnt( $result->output, $all_disks, "-e gives different output"); | 167 | isnt( $result->output, $all_disks, "-e gives different output"); |
| 164 | 168 | ||
| @@ -240,7 +244,7 @@ TODO: { | |||
| 240 | cmp_ok( $result->return_code, '==', 3, "Invalid command line options" ); | 244 | cmp_ok( $result->return_code, '==', 3, "Invalid command line options" ); |
| 241 | } | 245 | } |
| 242 | 246 | ||
| 243 | $result = NPTest->testCmd( | 247 | $result = NPTest->testCmd( |
| 244 | "./check_disk -p $mountpoint_valid -w 10% -c 15%" | 248 | "./check_disk -p $mountpoint_valid -w 10% -c 15%" |
| 245 | ); | 249 | ); |
| 246 | cmp_ok( $result->return_code, "==", 3, "Invalid options: -p must come after thresholds" ); | 250 | cmp_ok( $result->return_code, "==", 3, "Invalid options: -p must come after thresholds" ); |
| @@ -311,8 +315,8 @@ $result = NPTest->testCmd( "./check_disk -w 0% -c 0% -C -w 0% -c 0% -p $mountpoi | |||
| 311 | like( $result->output, '/;.*;\|/', "-C selects partitions if -p is not given"); | 315 | like( $result->output, '/;.*;\|/', "-C selects partitions if -p is not given"); |
| 312 | 316 | ||
| 313 | # grouping: exit crit if the sum of free megs on mp1+mp2 is less than warn/crit | 317 | # grouping: exit crit if the sum of free megs on mp1+mp2 is less than warn/crit |
| 314 | $result = NPTest->testCmd( "./check_disk -w ". ($free_mb_on_all + 1) ." -c ". ($free_mb_on_all + 1) ."-g group -p $mountpoint_valid -p $mountpoint2_valid" ); | 318 | $result = NPTest->testCmd( "./check_disk -w ". ($free_mb_on_all + 1) ." -c ". ($free_mb_on_all + 1) ." -g group -p $mountpoint_valid -p $mountpoint2_valid" ); |
| 315 | cmp_ok( $result->return_code, '==', 2, "grouping: exit crit if the sum of free megs on mp1+mp2 is less than warn/crit"); | 319 | cmp_ok( $result->return_code, '==', 2, "grouping: exit crit if the sum of free megs on mp1+mp2 is less than warn/crit\nInstead received: " . $result->output); |
| 316 | 320 | ||
| 317 | # grouping: exit warning if the sum of free megs on mp1+mp2 is between -w and -c | 321 | # grouping: exit warning if the sum of free megs on mp1+mp2 is between -w and -c |
| 318 | $result = NPTest->testCmd( "./check_disk -w ". ($free_mb_on_all + 1) ." -c ". ($free_mb_on_all - 1) ." -g group -p $mountpoint_valid -p $mountpoint2_valid" ); | 322 | $result = NPTest->testCmd( "./check_disk -w ". ($free_mb_on_all + 1) ." -c ". ($free_mb_on_all - 1) ." -g group -p $mountpoint_valid -p $mountpoint2_valid" ); |
| @@ -322,7 +326,7 @@ cmp_ok( $result->return_code, '==', 1, "grouping: exit warning if the sum of fre | |||
| 322 | $result = NPTest->testCmd( "./check_disk -w ". ($free_mb_on_all - 1) ." -c ". ($free_mb_on_all - 1) ." -g group -p $mountpoint_valid -p $mountpoint2_valid" ); | 326 | $result = NPTest->testCmd( "./check_disk -w ". ($free_mb_on_all - 1) ." -c ". ($free_mb_on_all - 1) ." -g group -p $mountpoint_valid -p $mountpoint2_valid" ); |
| 323 | cmp_ok( $result->return_code, '==', 0, "grouping: exit ok if the sum of free megs on mp1+mp2 is more than warn/crit"); | 327 | cmp_ok( $result->return_code, '==', 0, "grouping: exit ok if the sum of free megs on mp1+mp2 is more than warn/crit"); |
| 324 | 328 | ||
| 325 | # grouping: exit unknown if group name is given after -p | 329 | # grouping: exit unknown if group name is given after -p |
| 326 | $result = NPTest->testCmd( "./check_disk -w ". ($free_mb_on_all - 1) ." -c ". ($free_mb_on_all - 1) ." -p $mountpoint_valid -g group -p $mountpoint2_valid" ); | 330 | $result = NPTest->testCmd( "./check_disk -w ". ($free_mb_on_all - 1) ." -c ". ($free_mb_on_all - 1) ." -p $mountpoint_valid -g group -p $mountpoint2_valid" ); |
| 327 | cmp_ok( $result->return_code, '==', 3, "Invalid options: -p must come after groupname"); | 331 | cmp_ok( $result->return_code, '==', 3, "Invalid options: -p must come after groupname"); |
| 328 | 332 | ||
| @@ -355,17 +359,17 @@ like( $result->output, qr/$mountpoint2_valid/,"ignore: output data does have $mo | |||
| 355 | # ignore-missing: exit okay, when fs is not accessible | 359 | # ignore-missing: exit okay, when fs is not accessible |
| 356 | $result = NPTest->testCmd( "./check_disk --ignore-missing -w 0% -c 0% -p /bob"); | 360 | $result = NPTest->testCmd( "./check_disk --ignore-missing -w 0% -c 0% -p /bob"); |
| 357 | cmp_ok( $result->return_code, '==', 0, "ignore-missing: return okay for not existing filesystem /bob"); | 361 | cmp_ok( $result->return_code, '==', 0, "ignore-missing: return okay for not existing filesystem /bob"); |
| 358 | like( $result->output, '/^DISK OK - No disks were found for provided parameters; - ignored paths: /bob;.*$/', 'Output OK'); | 362 | like( $result->output, '/^DISK OK - No disks were found for provided parameters - ignored paths: /bob;.*$/', 'Output OK'); |
| 359 | 363 | ||
| 360 | # ignore-missing: exit okay, when regex does not match | 364 | # ignore-missing: exit okay, when regex does not match |
| 361 | $result = NPTest->testCmd( "./check_disk --ignore-missing -w 0% -c 0% -r /bob"); | 365 | $result = NPTest->testCmd( "./check_disk --ignore-missing -w 0% -c 0% -r /bob"); |
| 362 | cmp_ok( $result->return_code, '==', 0, "ignore-missing: return okay for regular expression not matching"); | 366 | cmp_ok( $result->return_code, '==', 0, "ignore-missing: return okay for regular expression not matching"); |
| 363 | like( $result->output, '/^DISK OK - No disks were found for provided parameters;.*$/', 'Output OK'); | 367 | like( $result->output, '/^DISK OK - No disks were found for provided parameters.*$/', 'Output OK'); |
| 364 | 368 | ||
| 365 | # ignore-missing: exit okay, when fs with exact match (-E) is not found | 369 | # ignore-missing: exit okay, when fs with exact match (-E) is not found |
| 366 | $result = NPTest->testCmd( "./check_disk --ignore-missing -w 0% -c 0% -E -p /etc"); | 370 | $result = NPTest->testCmd( "./check_disk --ignore-missing -w 0% -c 0% -E -p /etc"); |
| 367 | cmp_ok( $result->return_code, '==', 0, "ignore-missing: return okay when exact match does not find fs"); | 371 | cmp_ok( $result->return_code, '==', 0, "ignore-missing: return okay when exact match does not find fs"); |
| 368 | like( $result->output, '/^DISK OK - No disks were found for provided parameters; - ignored paths: /etc;.*$/', 'Output OK'); | 372 | like( $result->output, '/^DISK OK - No disks were found for provided parameters - ignored paths: /etc;.*$/', 'Output OK'); |
| 369 | 373 | ||
| 370 | # ignore-missing: exit okay, when checking one existing fs and one non-existing fs (regex) | 374 | # ignore-missing: exit okay, when checking one existing fs and one non-existing fs (regex) |
| 371 | $result = NPTest->testCmd( "./check_disk --ignore-missing -w 0% -c 0% -r '/bob' -r '^/\$'"); | 375 | $result = NPTest->testCmd( "./check_disk --ignore-missing -w 0% -c 0% -r '/bob' -r '^/\$'"); |
| @@ -375,4 +379,19 @@ like( $result->output, '/^DISK OK - free space: \/ .*$/', 'Output OK'); | |||
| 375 | # ignore-missing: exit okay, when checking one existing fs and one non-existing fs (path) | 379 | # ignore-missing: exit okay, when checking one existing fs and one non-existing fs (path) |
| 376 | $result = NPTest->testCmd( "./check_disk --ignore-missing -w 0% -c 0% -p '/bob' -p '/'"); | 380 | $result = NPTest->testCmd( "./check_disk --ignore-missing -w 0% -c 0% -p '/bob' -p '/'"); |
| 377 | cmp_ok( $result->return_code, '==', 0, "ignore-missing: return okay for regular expression not matching"); | 381 | cmp_ok( $result->return_code, '==', 0, "ignore-missing: return okay for regular expression not matching"); |
| 378 | like( $result->output, '/^DISK OK - free space: / .*; - ignored paths: /bob;.*$/', 'Output OK'); \ No newline at end of file | 382 | like( $result->output, '/^DISK OK - free space: / .*; - ignored paths: /bob;.*$/', 'Output OK'); |
| 383 | |||
| 384 | # ignore-missing: exit okay, when checking one non-existing fs (path) and one ignored | ||
| 385 | $result = NPTest->testCmd( "./check_disk -n -w 0% -c 0% -r /dummy -i /dummy2"); | ||
| 386 | cmp_ok( $result->return_code, '==', 0, "ignore-missing: return okay for regular expression not matching"); | ||
| 387 | like( $result->output, '/^DISK OK - No disks were found for provided parameters\|$/', 'Output OK'); | ||
| 388 | |||
| 389 | # ignore-missing: exit okay, when regex match does not find anything | ||
| 390 | $result = NPTest->testCmd( "./check_disk -n -e -l -w 10% -c 5% -W 10% -K 5% -r /dummy"); | ||
| 391 | cmp_ok( $result->return_code, '==', 0, "ignore-missing: return okay for regular expression not matching"); | ||
| 392 | like( $result->output, '/^DISK OK\|$/', 'Output OK'); | ||
| 393 | |||
| 394 | # ignore-missing: exit okay, when regex match does not find anything | ||
| 395 | $result = NPTest->testCmd( "./check_disk -n -l -w 10% -c 5% -W 10% -K 5% -r /dummy"); | ||
| 396 | cmp_ok( $result->return_code, '==', 0, "ignore-missing: return okay for regular expression not matching"); | ||
| 397 | like( $result->output, '/^DISK OK - No disks were found for provided parameters\|$/', 'Output OK'); | ||
diff --git a/plugins/t/check_http.t b/plugins/t/check_http.t index 1f2fbdfd..6ab4a5b6 100644 --- a/plugins/t/check_http.t +++ b/plugins/t/check_http.t | |||
| @@ -166,10 +166,10 @@ SKIP: { | |||
| 166 | like ( $res->output, '/time_connect=[\d\.]+/', 'Extended Performance Data Output OK' ); | 166 | like ( $res->output, '/time_connect=[\d\.]+/', 'Extended Performance Data Output OK' ); |
| 167 | like ( $res->output, '/time_ssl=[\d\.]+/', 'Extended Performance Data SSL Output OK' ); | 167 | like ( $res->output, '/time_ssl=[\d\.]+/', 'Extended Performance Data SSL Output OK' ); |
| 168 | 168 | ||
| 169 | $res = NPTest->testCmd( "./$plugin -H www.mozilla.com -u /firefox -f follow" ); | 169 | $res = NPTest->testCmd( "./$plugin -H monitoring-plugins.org -u /download.html -f follow" ); |
| 170 | is( $res->return_code, 0, "Redirection based on location is okay"); | 170 | is( $res->return_code, 0, "Redirection based on location is okay"); |
| 171 | 171 | ||
| 172 | $res = NPTest->testCmd( "./$plugin -H www.mozilla.com --extended-perfdata" ); | 172 | $res = NPTest->testCmd( "./$plugin -H monitoring-plugins.org --extended-perfdata" ); |
| 173 | like ( $res->output, '/time_connect=[\d\.]+/', 'Extended Performance Data Output OK' ); | 173 | like ( $res->output, '/time_connect=[\d\.]+/', 'Extended Performance Data Output OK' ); |
| 174 | } | 174 | } |
| 175 | 175 | ||
diff --git a/plugins/t/check_imap.t b/plugins/t/check_imap.t index 7c74e564..cf2f81c8 100644 --- a/plugins/t/check_imap.t +++ b/plugins/t/check_imap.t | |||
| @@ -25,7 +25,7 @@ $t = NPTest->testCmd( "./check_imap $host_tcp_imap -p 143 -wt 9 -ct 9 -to 10 -e | |||
| 25 | cmp_ok( $t->return_code, '==', 0, "Check old parameter options" ); | 25 | cmp_ok( $t->return_code, '==', 0, "Check old parameter options" ); |
| 26 | 26 | ||
| 27 | $t = NPTest->testCmd( "./check_imap $host_nonresponsive" ); | 27 | $t = NPTest->testCmd( "./check_imap $host_nonresponsive" ); |
| 28 | cmp_ok( $t->return_code, '==', 2, "Get error with non reponsive host" ); | 28 | cmp_ok( $t->return_code, '==', 2, "Get error with non responsive host" ); |
| 29 | 29 | ||
| 30 | $t = NPTest->testCmd( "./check_imap $hostname_invalid" ); | 30 | $t = NPTest->testCmd( "./check_imap $hostname_invalid" ); |
| 31 | cmp_ok( $t->return_code, '==', 2, "Invalid hostname" ); | 31 | cmp_ok( $t->return_code, '==', 2, "Invalid hostname" ); |
diff --git a/plugins/t/check_ssh.t b/plugins/t/check_ssh.t index a5cd23ce..907d33a8 100644 --- a/plugins/t/check_ssh.t +++ b/plugins/t/check_ssh.t | |||
| @@ -8,34 +8,116 @@ use strict; | |||
| 8 | use Test::More; | 8 | use Test::More; |
| 9 | use NPTest; | 9 | use NPTest; |
| 10 | 10 | ||
| 11 | my $res; | ||
| 12 | |||
| 11 | # Required parameters | 13 | # Required parameters |
| 12 | my $ssh_host = getTestParameter("NP_SSH_HOST", "A host providing SSH service", "localhost"); | 14 | my $ssh_host = getTestParameter("NP_SSH_HOST", |
| 13 | my $host_nonresponsive = getTestParameter("NP_HOST_NONRESPONSIVE", "The hostname of system not responsive to network requests", "10.0.0.1" ); | 15 | "A host providing SSH service", |
| 14 | my $hostname_invalid = getTestParameter("NP_HOSTNAME_INVALID", "An invalid (not known to DNS) hostname", "nosuchhost" ); | 16 | "localhost"); |
| 17 | |||
| 18 | my $host_nonresponsive = getTestParameter("NP_HOST_NONRESPONSIVE", | ||
| 19 | "The hostname of system not responsive to network requests", | ||
| 20 | "10.0.0.1" ); | ||
| 21 | |||
| 22 | my $hostname_invalid = getTestParameter("NP_HOSTNAME_INVALID", | ||
| 23 | "An invalid (not known to DNS) hostname", | ||
| 24 | "nosuchhost" ); | ||
| 25 | |||
| 26 | |||
| 27 | plan tests => 14 + 6; | ||
| 28 | |||
| 29 | SKIP: { | ||
| 30 | skip "SSH_HOST must be defined", 6 unless $ssh_host; | ||
| 31 | my $result = NPTest->testCmd( | ||
| 32 | "./check_ssh -H $ssh_host" | ||
| 33 | ); | ||
| 34 | cmp_ok($result->return_code, '==', 0, "Exit with return code 0 (OK)"); | ||
| 35 | like($result->output, '/^SSH OK - /', "Status text if command returned none (OK)"); | ||
| 36 | |||
| 37 | |||
| 38 | $result = NPTest->testCmd( | ||
| 39 | "./check_ssh -H $host_nonresponsive -t 2" | ||
| 40 | ); | ||
| 41 | cmp_ok($result->return_code, '==', 2, "Exit with return code 0 (OK)"); | ||
| 42 | like($result->output, '/^CRITICAL - Socket timeout after 2 seconds/', "Status text if command returned none (OK)"); | ||
| 43 | |||
| 44 | |||
| 45 | |||
| 46 | $result = NPTest->testCmd( | ||
| 47 | "./check_ssh -H $hostname_invalid -t 2" | ||
| 48 | ); | ||
| 49 | cmp_ok($result->return_code, '==', 3, "Exit with return code 0 (OK)"); | ||
| 50 | like($result->output, '/^check_ssh: Invalid hostname/', "Status text if command returned none (OK)"); | ||
| 51 | |||
| 15 | 52 | ||
| 53 | } | ||
| 54 | SKIP: { | ||
| 16 | 55 | ||
| 17 | plan skip_all => "SSH_HOST must be defined" unless $ssh_host; | 56 | skip "No netcat available", 14 unless (system("which nc > /dev/null") == 0); |
| 18 | plan tests => 6; | ||
| 19 | 57 | ||
| 58 | # netcat on linux (on debian) will just keep the socket open if not advised otherwise | ||
| 59 | # therefore we add -q to close it after two seconds after receiving the EOF from input | ||
| 60 | my $nc_flags = "-l 5003 -N"; | ||
| 61 | #A valid protocol version control string has the form | ||
| 62 | # SSH-protoversion-softwareversion SP comments CR LF | ||
| 63 | # | ||
| 64 | # where `comments` is optional, protoversion is the SSH protocol version and | ||
| 65 | # softwareversion is an arbitrary string representing the server software version | ||
| 66 | open(NC, "echo 'SSH-2.0-nagiosplug.ssh.0.1' | nc ${nc_flags}|"); | ||
| 67 | sleep 0.1; | ||
| 68 | $res = NPTest->testCmd( "./check_ssh -H localhost -p 5003" ); | ||
| 69 | cmp_ok( $res->return_code, '==', 0, "Got SSH protocol version control string"); | ||
| 70 | like( $res->output, '/^SSH OK - nagiosplug.ssh.0.1 \(protocol 2.0\)/', "Output OK"); | ||
| 71 | close NC; | ||
| 20 | 72 | ||
| 21 | my $result = NPTest->testCmd( | 73 | open(NC, "echo 'SSH-2.0-3.2.9.1' | nc ${nc_flags}|"); |
| 22 | "./check_ssh -H $ssh_host" | 74 | sleep 0.1; |
| 23 | ); | 75 | $res = NPTest->testCmd( "./check_ssh -H localhost -p 5003" ); |
| 24 | cmp_ok($result->return_code, '==', 0, "Exit with return code 0 (OK)"); | 76 | cmp_ok( $res->return_code, "==", 0, "Got SSH protocol version control string with non-alpha softwareversion string"); |
| 25 | like($result->output, '/^SSH OK - /', "Status text if command returned none (OK)"); | 77 | like( $res->output, '/^SSH OK - 3.2.9.1 \(protocol 2.0\)/', "Output OK for non-alpha softwareversion string"); |
| 78 | close NC; | ||
| 26 | 79 | ||
| 80 | open(NC, "echo 'SSH-2.0-nagiosplug.ssh.0.1 this is a comment' | nc ${nc_flags} |"); | ||
| 81 | sleep 0.1; | ||
| 82 | $res = NPTest->testCmd( "./check_ssh -H localhost -p 5003 -r nagiosplug.ssh.0.1" ); | ||
| 83 | cmp_ok( $res->return_code, '==', 0, "Got SSH protocol version control string, and parsed comment appropriately"); | ||
| 84 | like( $res->output, '/^SSH OK - nagiosplug.ssh.0.1 \(protocol 2.0\)/', "Output OK"); | ||
| 85 | close NC; | ||
| 27 | 86 | ||
| 28 | $result = NPTest->testCmd( | 87 | open(NC, "echo 'SSH-' | nc ${nc_flags}|"); |
| 29 | "./check_ssh -H $host_nonresponsive -t 2" | 88 | sleep 0.1; |
| 30 | ); | 89 | $res = NPTest->testCmd( "./check_ssh -H localhost -p 5003" ); |
| 31 | cmp_ok($result->return_code, '==', 2, "Exit with return code 0 (OK)"); | 90 | cmp_ok( $res->return_code, '==', 2, "Got invalid SSH protocol version control string"); |
| 32 | like($result->output, '/^CRITICAL - Socket timeout after 2 seconds/', "Status text if command returned none (OK)"); | 91 | like( $res->output, '/^SSH CRITICAL/', "Output OK"); |
| 92 | close NC; | ||
| 33 | 93 | ||
| 94 | open(NC, "echo '' | nc ${nc_flags}|"); | ||
| 95 | sleep 0.1; | ||
| 96 | $res = NPTest->testCmd( "./check_ssh -H localhost -p 5003" ); | ||
| 97 | cmp_ok( $res->return_code, '==', 2, "No version control string received"); | ||
| 98 | like( $res->output, '/^SSH CRITICAL - No version control string received/', "Output OK"); | ||
| 99 | close NC; | ||
| 34 | 100 | ||
| 101 | open(NC, "echo 'Not a version control string' | nc ${nc_flags}|"); | ||
| 102 | sleep 0.1; | ||
| 103 | $res = NPTest->testCmd( "./check_ssh -H localhost -p 5003" ); | ||
| 104 | cmp_ok( $res->return_code, '==', 2, "No version control string received"); | ||
| 105 | like( $res->output, '/^SSH CRITICAL - No version control string received/', "Output OK"); | ||
| 106 | close NC; | ||
| 35 | 107 | ||
| 36 | $result = NPTest->testCmd( | ||
| 37 | "./check_ssh -H $hostname_invalid -t 2" | ||
| 38 | ); | ||
| 39 | cmp_ok($result->return_code, '==', 3, "Exit with return code 0 (OK)"); | ||
| 40 | like($result->output, '/^check_ssh: Invalid hostname/', "Status text if command returned none (OK)"); | ||
| 41 | 108 | ||
| 109 | #RFC 4253 permits servers to send any number of data lines prior to sending the protocol version control string | ||
| 110 | open(NC, "{ echo 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; sleep 0.5; | ||
| 111 | echo 'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB'; sleep 0.5; | ||
| 112 | echo 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC'; sleep 0.2; | ||
| 113 | echo 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD'; sleep 0.3; | ||
| 114 | printf 'EEEEEEEEEEEEEEEEEE'; sleep 0.2; | ||
| 115 | printf 'EEEEEEEEEEEEEEEEEE\n'; sleep 0.2; | ||
| 116 | echo 'Some\nPrepended\nData\nLines\n'; sleep 0.2; | ||
| 117 | echo 'SSH-2.0-nagiosplug.ssh.0.2';} | nc ${nc_flags}|"); | ||
| 118 | sleep 0.1; | ||
| 119 | $res = NPTest->testCmd( "./check_ssh -H localhost -p 5003" ); | ||
| 120 | cmp_ok( $res->return_code, '==', 0, "Got delayed SSH protocol version control string"); | ||
| 121 | like( $res->output, '/^SSH OK - nagiosplug.ssh.0.2 \(protocol 2.0\)/', "Output OK"); | ||
| 122 | close NC; | ||
| 123 | } | ||
diff --git a/plugins/t/check_swap.t b/plugins/t/check_swap.t index de9e0f05..18780386 100644 --- a/plugins/t/check_swap.t +++ b/plugins/t/check_swap.t | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | # | 5 | # |
| 6 | 6 | ||
| 7 | use strict; | 7 | use strict; |
| 8 | use Test::More tests => 8; | 8 | use Test::More tests => 14; |
| 9 | use NPTest; | 9 | use NPTest; |
| 10 | 10 | ||
| 11 | my $successOutput = '/^SWAP OK - [0-9]+\% free \([0-9]+MB out of [0-9]+MB\)/'; | 11 | my $successOutput = '/^SWAP OK - [0-9]+\% free \([0-9]+MB out of [0-9]+MB\)/'; |
| @@ -14,6 +14,10 @@ my $warnOutput = '/^SWAP WARNING - [0-9]+\% free \([0-9]+MB out of [0-9]+MB\) | |||
| 14 | 14 | ||
| 15 | my $result; | 15 | my $result; |
| 16 | 16 | ||
| 17 | $result = NPTest->testCmd( "./check_swap" ); # Always OK | ||
| 18 | cmp_ok( $result->return_code, "==", 0, "Always OK" ); | ||
| 19 | like( $result->output, $successOutput, "Right output" ); | ||
| 20 | |||
| 17 | $result = NPTest->testCmd( "./check_swap -w 1048576 -c 1048576" ); # 1 MB free | 21 | $result = NPTest->testCmd( "./check_swap -w 1048576 -c 1048576" ); # 1 MB free |
| 18 | cmp_ok( $result->return_code, "==", 0, "At least 1MB free" ); | 22 | cmp_ok( $result->return_code, "==", 0, "At least 1MB free" ); |
| 19 | like( $result->output, $successOutput, "Right output" ); | 23 | like( $result->output, $successOutput, "Right output" ); |
| @@ -29,3 +33,11 @@ like( $result->output, $failureOutput, "Right output" ); | |||
| 29 | $result = NPTest->testCmd( "./check_swap -w 100% -c 1%" ); # 100% (always warn) | 33 | $result = NPTest->testCmd( "./check_swap -w 100% -c 1%" ); # 100% (always warn) |
| 30 | cmp_ok( $result->return_code, "==", 1, 'Get warning because not 100% free' ); | 34 | cmp_ok( $result->return_code, "==", 1, 'Get warning because not 100% free' ); |
| 31 | like( $result->output, $warnOutput, "Right output" ); | 35 | like( $result->output, $warnOutput, "Right output" ); |
| 36 | |||
| 37 | $result = NPTest->testCmd( "./check_swap -w 100%" ); # 100% (single threshold, always warn) | ||
| 38 | cmp_ok( $result->return_code, "==", 1, 'Get warning because not 100% free' ); | ||
| 39 | like( $result->output, $warnOutput, "Right output" ); | ||
| 40 | |||
| 41 | $result = NPTest->testCmd( "./check_swap -c 100%" ); # 100% (single threshold, always critical) | ||
| 42 | cmp_ok( $result->return_code, "==", 2, 'Get critical because not 100% free' ); | ||
| 43 | like( $result->output, $failureOutput, "Right output" ); | ||
diff --git a/plugins/t/check_users.t b/plugins/t/check_users.t index 088f3b52..21c3e53d 100644 --- a/plugins/t/check_users.t +++ b/plugins/t/check_users.t | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | # | 2 | # |
| 3 | # Logged in Users Tests via check_users | 3 | # Logged in Users Tests via check_users |
| 4 | # | 4 | # |
| 5 | # Trick: This ckeck requires at least 1 user logged in. These commands should | 5 | # Trick: This check requires at least 1 user logged in. These commands should |
| 6 | # leave a session open forever in the background: | 6 | # leave a session open forever in the background: |
| 7 | # | 7 | # |
| 8 | # $ ssh -tt localhost </dev/null >/dev/null 2>/dev/null & | 8 | # $ ssh -tt localhost </dev/null >/dev/null 2>/dev/null & |
| @@ -13,10 +13,11 @@ use Test; | |||
| 13 | use NPTest; | 13 | use NPTest; |
| 14 | 14 | ||
| 15 | use vars qw($tests); | 15 | use vars qw($tests); |
| 16 | BEGIN {$tests = 8; plan tests => $tests} | 16 | BEGIN {$tests = 12; plan tests => $tests} |
| 17 | 17 | ||
| 18 | my $successOutput = '/^USERS OK - [0-9]+ users currently logged in/'; | 18 | my $successOutput = '/^USERS OK - [0-9]+ users currently logged in/'; |
| 19 | my $failureOutput = '/^USERS CRITICAL - [0-9]+ users currently logged in/'; | 19 | my $failureOutput = '/^USERS CRITICAL - [0-9]+ users currently logged in/'; |
| 20 | my $wrongOptionOutput = '/Usage:/'; | ||
| 20 | 21 | ||
| 21 | my $t; | 22 | my $t; |
| 22 | 23 | ||
| @@ -24,6 +25,8 @@ $t += checkCmd( "./check_users 1000 1000", 0, $successOutput ); | |||
| 24 | $t += checkCmd( "./check_users 0 0", 2, $failureOutput ); | 25 | $t += checkCmd( "./check_users 0 0", 2, $failureOutput ); |
| 25 | $t += checkCmd( "./check_users -w 0:1000 -c 0:1000", 0, $successOutput ); | 26 | $t += checkCmd( "./check_users -w 0:1000 -c 0:1000", 0, $successOutput ); |
| 26 | $t += checkCmd( "./check_users -w 0:0 -c 0:0", 2, $failureOutput ); | 27 | $t += checkCmd( "./check_users -w 0:0 -c 0:0", 2, $failureOutput ); |
| 28 | $t += checkCmd( "./check_users -w 0:1000", 3, $wrongOptionOutput); | ||
| 29 | $t += checkCmd( "./check_users", 3, $wrongOptionOutput); | ||
| 27 | 30 | ||
| 28 | exit(0) if defined($Test::Harness::VERSION); | 31 | exit(0) if defined($Test::Harness::VERSION); |
| 29 | exit($tests - $t); | 32 | exit($tests - $t); |
diff --git a/plugins/tests/check_curl.t b/plugins/tests/check_curl.t index 72f2b7c2..eaa9f518 100755 --- a/plugins/tests/check_curl.t +++ b/plugins/tests/check_curl.t | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | # Country Name (2 letter code) [AU]:DE | 9 | # Country Name (2 letter code) [AU]:DE |
| 10 | # State or Province Name (full name) [Some-State]:Bavaria | 10 | # State or Province Name (full name) [Some-State]:Bavaria |
| 11 | # Locality Name (eg, city) []:Munich | 11 | # Locality Name (eg, city) []:Munich |
| 12 | # Organization Name (eg, company) [Internet Widgits Pty Ltd]:Monitoring Plugins | 12 | # Organization Name (eg, company) [Internet Widgets Pty Ltd]:Monitoring Plugins |
| 13 | # Organizational Unit Name (eg, section) []: | 13 | # Organizational Unit Name (eg, section) []: |
| 14 | # Common Name (e.g. server FQDN or YOUR name) []:Monitoring Plugins | 14 | # Common Name (e.g. server FQDN or YOUR name) []:Monitoring Plugins |
| 15 | # Email Address []:devel@monitoring-plugins.org | 15 | # Email Address []:devel@monitoring-plugins.org |
| @@ -21,7 +21,7 @@ use FindBin qw($Bin); | |||
| 21 | 21 | ||
| 22 | $ENV{'LC_TIME'} = "C"; | 22 | $ENV{'LC_TIME'} = "C"; |
| 23 | 23 | ||
| 24 | my $common_tests = 73; | 24 | my $common_tests = 75; |
| 25 | my $ssl_only_tests = 8; | 25 | my $ssl_only_tests = 8; |
| 26 | # Check that all dependent modules are available | 26 | # Check that all dependent modules are available |
| 27 | eval "use HTTP::Daemon 6.01;"; | 27 | eval "use HTTP::Daemon 6.01;"; |
| @@ -178,6 +178,11 @@ sub run_server { | |||
| 178 | $c->send_basic_header; | 178 | $c->send_basic_header; |
| 179 | $c->send_crlf; | 179 | $c->send_crlf; |
| 180 | $c->send_response(HTTP::Response->new( 200, 'OK', undef, 'redirected' )); | 180 | $c->send_response(HTTP::Response->new( 200, 'OK', undef, 'redirected' )); |
| 181 | } elsif ($r->url->path eq "/redirect_rel") { | ||
| 182 | $c->send_basic_header(302); | ||
| 183 | $c->send_header("Location", "/redirect2" ); | ||
| 184 | $c->send_crlf; | ||
| 185 | $c->send_response('moved to /redirect2'); | ||
| 181 | } elsif ($r->url->path eq "/redir_timeout") { | 186 | } elsif ($r->url->path eq "/redir_timeout") { |
| 182 | $c->send_redirect( "/timeout" ); | 187 | $c->send_redirect( "/timeout" ); |
| 183 | } elsif ($r->url->path eq "/timeout") { | 188 | } elsif ($r->url->path eq "/timeout") { |
| @@ -471,9 +476,12 @@ sub run_common_tests { | |||
| 471 | is( $result->return_code, 0, $cmd); | 476 | is( $result->return_code, 0, $cmd); |
| 472 | like( $result->output, '/^HTTP OK: HTTP/1.1 200 OK - \d+ bytes in [\d\.]+ second/', "Output correct: ".$result->output ); | 477 | like( $result->output, '/^HTTP OK: HTTP/1.1 200 OK - \d+ bytes in [\d\.]+ second/', "Output correct: ".$result->output ); |
| 473 | 478 | ||
| 474 | # These tests may block | 479 | $cmd = "$command -f follow -u /redirect_rel -s redirected"; |
| 475 | print "ALRM\n"; | 480 | $result = NPTest->testCmd( $cmd ); |
| 481 | is( $result->return_code, 0, $cmd); | ||
| 482 | like( $result->output, '/^HTTP OK: HTTP/1.1 200 OK - \d+ bytes in [\d\.]+ second/', "Output correct: ".$result->output ); | ||
| 476 | 483 | ||
| 484 | # These tests may block | ||
| 477 | # stickyport - on full urlS port is set back to 80 otherwise | 485 | # stickyport - on full urlS port is set back to 80 otherwise |
| 478 | $cmd = "$command -f stickyport -u /redir_external -t 5 -s redirected"; | 486 | $cmd = "$command -f stickyport -u /redir_external -t 5 -s redirected"; |
| 479 | eval { | 487 | eval { |
diff --git a/plugins/tests/check_http.t b/plugins/tests/check_http.t index 6078b274..6eaf85b2 100755 --- a/plugins/tests/check_http.t +++ b/plugins/tests/check_http.t | |||
| @@ -13,7 +13,7 @@ use IO::Socket::INET; | |||
| 13 | 13 | ||
| 14 | $ENV{'LC_TIME'} = "C"; | 14 | $ENV{'LC_TIME'} = "C"; |
| 15 | 15 | ||
| 16 | my $common_tests = 71; | 16 | my $common_tests = 73; |
| 17 | my $virtual_port_tests = 8; | 17 | my $virtual_port_tests = 8; |
| 18 | my $ssl_only_tests = 12; | 18 | my $ssl_only_tests = 12; |
| 19 | my $chunked_encoding_special_tests = 1; | 19 | my $chunked_encoding_special_tests = 1; |
| @@ -199,6 +199,11 @@ sub run_server { | |||
| 199 | $c->send_basic_header; | 199 | $c->send_basic_header; |
| 200 | $c->send_crlf; | 200 | $c->send_crlf; |
| 201 | $c->send_response(HTTP::Response->new( 200, 'OK', undef, 'redirected' )); | 201 | $c->send_response(HTTP::Response->new( 200, 'OK', undef, 'redirected' )); |
| 202 | } elsif ($r->url->path eq "/redirect_rel") { | ||
| 203 | $c->send_basic_header(302); | ||
| 204 | $c->send_header("Location", "/redirect2" ); | ||
| 205 | $c->send_crlf; | ||
| 206 | $c->send_response('moved to /redirect2'); | ||
| 202 | } elsif ($r->url->path eq "/redir_timeout") { | 207 | } elsif ($r->url->path eq "/redir_timeout") { |
| 203 | $c->send_redirect( "/timeout" ); | 208 | $c->send_redirect( "/timeout" ); |
| 204 | } elsif ($r->url->path eq "/timeout") { | 209 | } elsif ($r->url->path eq "/timeout") { |
| @@ -515,6 +520,11 @@ sub run_common_tests { | |||
| 515 | is( $result->return_code, 0, $cmd); | 520 | is( $result->return_code, 0, $cmd); |
| 516 | like( $result->output, '/^HTTP OK: HTTP/1.1 200 OK - \d+ bytes in [\d\.]+ second/', "Output correct: ".$result->output ); | 521 | like( $result->output, '/^HTTP OK: HTTP/1.1 200 OK - \d+ bytes in [\d\.]+ second/', "Output correct: ".$result->output ); |
| 517 | 522 | ||
| 523 | $cmd = "$command -f follow -u /redirect_rel -s redirected"; | ||
| 524 | $result = NPTest->testCmd( $cmd ); | ||
| 525 | is( $result->return_code, 0, $cmd); | ||
| 526 | like( $result->output, '/^HTTP OK: HTTP/1.1 200 OK - \d+ bytes in [\d\.]+ second/', "Output correct: ".$result->output ); | ||
| 527 | |||
| 518 | # These tests may block | 528 | # These tests may block |
| 519 | print "ALRM\n"; | 529 | print "ALRM\n"; |
| 520 | 530 | ||
diff --git a/plugins/utils.c b/plugins/utils.c index b4214c61..77d6a6f9 100644 --- a/plugins/utils.c +++ b/plugins/utils.c | |||
| @@ -23,13 +23,15 @@ | |||
| 23 | *****************************************************************************/ | 23 | *****************************************************************************/ |
| 24 | 24 | ||
| 25 | #include "common.h" | 25 | #include "common.h" |
| 26 | #include "utils.h" | 26 | #include "./utils.h" |
| 27 | #include "utils_base.h" | 27 | #include "utils_base.h" |
| 28 | #include <stdarg.h> | 28 | #include <stdarg.h> |
| 29 | #include <limits.h> | 29 | #include <limits.h> |
| 30 | #include <string.h> | 30 | #include <string.h> |
| 31 | #include <errno.h> | 31 | #include <errno.h> |
| 32 | 32 | ||
| 33 | #include <stdbool.h> | ||
| 34 | |||
| 33 | #include <arpa/inet.h> | 35 | #include <arpa/inet.h> |
| 34 | 36 | ||
| 35 | extern void print_usage (void); | 37 | extern void print_usage (void); |
| @@ -147,98 +149,107 @@ print_revision (const char *command_name, const char *revision) | |||
| 147 | command_name, revision, PACKAGE, VERSION); | 149 | command_name, revision, PACKAGE, VERSION); |
| 148 | } | 150 | } |
| 149 | 151 | ||
| 150 | int | 152 | bool is_numeric (char *number) { |
| 151 | is_numeric (char *number) | ||
| 152 | { | ||
| 153 | char tmp[1]; | 153 | char tmp[1]; |
| 154 | float x; | 154 | float x; |
| 155 | 155 | ||
| 156 | if (!number) | 156 | if (!number) |
| 157 | return FALSE; | 157 | return false; |
| 158 | else if (sscanf (number, "%f%c", &x, tmp) == 1) | 158 | else if (sscanf (number, "%f%c", &x, tmp) == 1) |
| 159 | return TRUE; | 159 | return true; |
| 160 | else | 160 | else |
| 161 | return FALSE; | 161 | return false; |
| 162 | } | 162 | } |
| 163 | 163 | ||
| 164 | int | 164 | bool is_positive (char *number) { |
| 165 | is_positive (char *number) | ||
| 166 | { | ||
| 167 | if (is_numeric (number) && atof (number) > 0.0) | 165 | if (is_numeric (number) && atof (number) > 0.0) |
| 168 | return TRUE; | 166 | return true; |
| 169 | else | 167 | else |
| 170 | return FALSE; | 168 | return false; |
| 171 | } | 169 | } |
| 172 | 170 | ||
| 173 | int | 171 | bool is_negative (char *number) { |
| 174 | is_negative (char *number) | ||
| 175 | { | ||
| 176 | if (is_numeric (number) && atof (number) < 0.0) | 172 | if (is_numeric (number) && atof (number) < 0.0) |
| 177 | return TRUE; | 173 | return true; |
| 178 | else | 174 | else |
| 179 | return FALSE; | 175 | return false; |
| 180 | } | 176 | } |
| 181 | 177 | ||
| 182 | int | 178 | bool is_nonnegative (char *number) { |
| 183 | is_nonnegative (char *number) | ||
| 184 | { | ||
| 185 | if (is_numeric (number) && atof (number) >= 0.0) | 179 | if (is_numeric (number) && atof (number) >= 0.0) |
| 186 | return TRUE; | 180 | return true; |
| 187 | else | 181 | else |
| 188 | return FALSE; | 182 | return false; |
| 189 | } | 183 | } |
| 190 | 184 | ||
| 191 | int | 185 | bool is_percentage (char *number) { |
| 192 | is_percentage (char *number) | ||
| 193 | { | ||
| 194 | int x; | 186 | int x; |
| 195 | if (is_numeric (number) && (x = atof (number)) >= 0 && x <= 100) | 187 | if (is_numeric (number) && (x = atof (number)) >= 0 && x <= 100) |
| 196 | return TRUE; | 188 | return true; |
| 197 | else | 189 | else |
| 198 | return FALSE; | 190 | return false; |
| 199 | } | 191 | } |
| 200 | 192 | ||
| 201 | int | 193 | bool is_percentage_expression (const char str[]) { |
| 202 | is_integer (char *number) | 194 | if (!str) { |
| 203 | { | 195 | return false; |
| 196 | } | ||
| 197 | |||
| 198 | size_t len = strlen(str); | ||
| 199 | |||
| 200 | if (str[len-1] != '%') { | ||
| 201 | return false; | ||
| 202 | } | ||
| 203 | |||
| 204 | char *foo = calloc(sizeof(char), len + 1); | ||
| 205 | |||
| 206 | if (!foo) { | ||
| 207 | die (STATE_UNKNOWN, _("calloc failed \n")); | ||
| 208 | } | ||
| 209 | |||
| 210 | strcpy(foo, str); | ||
| 211 | foo[len-1] = '\0'; | ||
| 212 | |||
| 213 | bool result = is_numeric(foo); | ||
| 214 | |||
| 215 | free(foo); | ||
| 216 | |||
| 217 | return result; | ||
| 218 | } | ||
| 219 | |||
| 220 | bool is_integer (char *number) { | ||
| 204 | long int n; | 221 | long int n; |
| 205 | 222 | ||
| 206 | if (!number || (strspn (number, "-0123456789 ") != strlen (number))) | 223 | if (!number || (strspn (number, "-0123456789 ") != strlen (number))) |
| 207 | return FALSE; | 224 | return false; |
| 208 | 225 | ||
| 209 | n = strtol (number, NULL, 10); | 226 | n = strtol (number, NULL, 10); |
| 210 | 227 | ||
| 211 | if (errno != ERANGE && n >= INT_MIN && n <= INT_MAX) | 228 | if (errno != ERANGE && n >= INT_MIN && n <= INT_MAX) |
| 212 | return TRUE; | 229 | return true; |
| 213 | else | 230 | else |
| 214 | return FALSE; | 231 | return false; |
| 215 | } | 232 | } |
| 216 | 233 | ||
| 217 | int | 234 | bool is_intpos (char *number) { |
| 218 | is_intpos (char *number) | ||
| 219 | { | ||
| 220 | if (is_integer (number) && atoi (number) > 0) | 235 | if (is_integer (number) && atoi (number) > 0) |
| 221 | return TRUE; | 236 | return true; |
| 222 | else | 237 | else |
| 223 | return FALSE; | 238 | return false; |
| 224 | } | 239 | } |
| 225 | 240 | ||
| 226 | int | 241 | bool is_intneg (char *number) { |
| 227 | is_intneg (char *number) | ||
| 228 | { | ||
| 229 | if (is_integer (number) && atoi (number) < 0) | 242 | if (is_integer (number) && atoi (number) < 0) |
| 230 | return TRUE; | 243 | return true; |
| 231 | else | 244 | else |
| 232 | return FALSE; | 245 | return false; |
| 233 | } | 246 | } |
| 234 | 247 | ||
| 235 | int | 248 | bool is_intnonneg (char *number) { |
| 236 | is_intnonneg (char *number) | ||
| 237 | { | ||
| 238 | if (is_integer (number) && atoi (number) >= 0) | 249 | if (is_integer (number) && atoi (number) >= 0) |
| 239 | return TRUE; | 250 | return true; |
| 240 | else | 251 | else |
| 241 | return FALSE; | 252 | return false; |
| 242 | } | 253 | } |
| 243 | 254 | ||
| 244 | /* | 255 | /* |
| @@ -246,19 +257,27 @@ is_intnonneg (char *number) | |||
| 246 | * On success the number will be written to the _target_ address, if _target_ is not set | 257 | * On success the number will be written to the _target_ address, if _target_ is not set |
| 247 | * to NULL. | 258 | * to NULL. |
| 248 | */ | 259 | */ |
| 249 | int is_int64(char *number, int64_t *target) { | 260 | bool is_int64(char *number, int64_t *target) { |
| 250 | errno = 0; | 261 | errno = 0; |
| 251 | uint64_t tmp = strtoll(number, NULL, 10); | 262 | char *endptr = { 0 }; |
| 263 | |||
| 264 | int64_t tmp = strtoll(number, &endptr, 10); | ||
| 252 | if (errno != 0) { | 265 | if (errno != 0) { |
| 266 | return false; | ||
| 267 | } | ||
| 268 | |||
| 269 | if (*endptr == '\0') { | ||
| 253 | return 0; | 270 | return 0; |
| 254 | } | 271 | } |
| 272 | |||
| 255 | if (tmp < INT64_MIN || tmp > INT64_MAX) { | 273 | if (tmp < INT64_MIN || tmp > INT64_MAX) { |
| 256 | return 0; | 274 | return false; |
| 257 | } | 275 | } |
| 276 | |||
| 258 | if (target != NULL) { | 277 | if (target != NULL) { |
| 259 | *target = tmp; | 278 | *target = tmp; |
| 260 | } | 279 | } |
| 261 | return 1; | 280 | return true; |
| 262 | } | 281 | } |
| 263 | 282 | ||
| 264 | /* | 283 | /* |
| @@ -266,40 +285,45 @@ int is_int64(char *number, int64_t *target) { | |||
| 266 | * On success the number will be written to the _target_ address, if _target_ is not set | 285 | * On success the number will be written to the _target_ address, if _target_ is not set |
| 267 | * to NULL. | 286 | * to NULL. |
| 268 | */ | 287 | */ |
| 269 | int is_uint64(char *number, uint64_t *target) { | 288 | bool is_uint64(char *number, uint64_t *target) { |
| 270 | errno = 0; | 289 | errno = 0; |
| 271 | uint64_t tmp = strtoll(number, NULL, 10); | 290 | char *endptr = { 0 }; |
| 291 | unsigned long long tmp = strtoull(number, &endptr, 10); | ||
| 292 | |||
| 272 | if (errno != 0) { | 293 | if (errno != 0) { |
| 273 | return 0; | 294 | return false; |
| 274 | } | 295 | } |
| 275 | if (tmp < 0 || tmp > UINT64_MAX) { | 296 | |
| 276 | return 0; | 297 | if (*endptr != '\0') { |
| 298 | return false; | ||
| 299 | } | ||
| 300 | |||
| 301 | if (tmp > UINT64_MAX) { | ||
| 302 | return false; | ||
| 277 | } | 303 | } |
| 304 | |||
| 278 | if (target != NULL) { | 305 | if (target != NULL) { |
| 279 | *target = tmp; | 306 | *target = (uint64_t)tmp; |
| 280 | } | 307 | } |
| 281 | return 1; | 308 | |
| 309 | return true; | ||
| 282 | } | 310 | } |
| 283 | 311 | ||
| 284 | int | 312 | bool is_intpercent (char *number) { |
| 285 | is_intpercent (char *number) | ||
| 286 | { | ||
| 287 | int i; | 313 | int i; |
| 288 | if (is_integer (number) && (i = atoi (number)) >= 0 && i <= 100) | 314 | if (is_integer (number) && (i = atoi (number)) >= 0 && i <= 100) |
| 289 | return TRUE; | 315 | return true; |
| 290 | else | 316 | else |
| 291 | return FALSE; | 317 | return false; |
| 292 | } | 318 | } |
| 293 | 319 | ||
| 294 | int | 320 | bool is_option (char *str) { |
| 295 | is_option (char *str) | ||
| 296 | { | ||
| 297 | if (!str) | 321 | if (!str) |
| 298 | return FALSE; | 322 | return false; |
| 299 | else if (strspn (str, "-") == 1 || strspn (str, "-") == 2) | 323 | else if (strspn (str, "-") == 1 || strspn (str, "-") == 2) |
| 300 | return TRUE; | 324 | return true; |
| 301 | else | 325 | else |
| 302 | return FALSE; | 326 | return false; |
| 303 | } | 327 | } |
| 304 | 328 | ||
| 305 | #ifdef NEED_GETTIMEOFDAY | 329 | #ifdef NEED_GETTIMEOFDAY |
| @@ -804,19 +828,3 @@ char *sperfdata_int (const char *label, | |||
| 804 | 828 | ||
| 805 | return data; | 829 | return data; |
| 806 | } | 830 | } |
| 807 | |||
| 808 | int | ||
| 809 | open_max (void) | ||
| 810 | { | ||
| 811 | errno = 0; | ||
| 812 | if (maxfd > 0) | ||
| 813 | return(maxfd); | ||
| 814 | |||
| 815 | if ((maxfd = sysconf (_SC_OPEN_MAX)) < 0) { | ||
| 816 | if (errno == 0) | ||
| 817 | maxfd = DEFAULT_MAXFD; /* it's indeterminate */ | ||
| 818 | else | ||
| 819 | die (STATE_UNKNOWN, _("sysconf error for _SC_OPEN_MAX\n")); | ||
| 820 | } | ||
| 821 | return(maxfd); | ||
| 822 | } | ||
diff --git a/plugins/utils.h b/plugins/utils.h index c76b3216..f939e337 100644 --- a/plugins/utils.h +++ b/plugins/utils.h | |||
| @@ -16,6 +16,8 @@ suite of plugins. */ | |||
| 16 | /* now some functions etc are being defined in ../lib/utils_base.c */ | 16 | /* now some functions etc are being defined in ../lib/utils_base.c */ |
| 17 | #include "utils_base.h" | 17 | #include "utils_base.h" |
| 18 | 18 | ||
| 19 | #include <stdbool.h> | ||
| 20 | |||
| 19 | 21 | ||
| 20 | #ifdef NP_EXTRA_OPTS | 22 | #ifdef NP_EXTRA_OPTS |
| 21 | /* Include extra-opts functions if compiled in */ | 23 | /* Include extra-opts functions if compiled in */ |
| @@ -34,21 +36,22 @@ extern time_t start_time, end_time; | |||
| 34 | 36 | ||
| 35 | /* Test input types */ | 37 | /* Test input types */ |
| 36 | 38 | ||
| 37 | int is_integer (char *); | 39 | bool is_integer (char *); |
| 38 | int is_intpos (char *); | 40 | bool is_intpos (char *); |
| 39 | int is_intneg (char *); | 41 | bool is_intneg (char *); |
| 40 | int is_intnonneg (char *); | 42 | bool is_intnonneg (char *); |
| 41 | int is_intpercent (char *); | 43 | bool is_intpercent (char *); |
| 42 | int is_uint64(char *number, uint64_t *target); | 44 | bool is_uint64(char *number, uint64_t *target); |
| 43 | int is_int64(char *number, int64_t *target); | 45 | bool is_int64(char *number, int64_t *target); |
| 44 | 46 | ||
| 45 | int is_numeric (char *); | 47 | bool is_numeric (char *); |
| 46 | int is_positive (char *); | 48 | bool is_positive (char *); |
| 47 | int is_negative (char *); | 49 | bool is_negative (char *); |
| 48 | int is_nonnegative (char *); | 50 | bool is_nonnegative (char *); |
| 49 | int is_percentage (char *); | 51 | bool is_percentage (char *); |
| 52 | bool is_percentage_expression (const char[]); | ||
| 50 | 53 | ||
| 51 | int is_option (char *); | 54 | bool is_option (char *); |
| 52 | 55 | ||
| 53 | /* Generalized timer that will do milliseconds if available */ | 56 | /* Generalized timer that will do milliseconds if available */ |
| 54 | #ifndef HAVE_STRUCT_TIMEVAL | 57 | #ifndef HAVE_STRUCT_TIMEVAL |
| @@ -106,8 +109,6 @@ char *sperfdata (const char *, double, const char *, char *, char *, | |||
| 106 | char *sperfdata_int (const char *, int, const char *, char *, char *, | 109 | char *sperfdata_int (const char *, int, const char *, char *, char *, |
| 107 | int, int, int, int); | 110 | int, int, int, int); |
| 108 | 111 | ||
| 109 | int open_max (void); | ||
| 110 | |||
| 111 | /* The idea here is that, although not every plugin will use all of these, | 112 | /* The idea here is that, although not every plugin will use all of these, |
| 112 | most will or should. Therefore, for consistency, these very common | 113 | most will or should. Therefore, for consistency, these very common |
| 113 | options should have only these meanings throughout the overall suite */ | 114 | options should have only these meanings throughout the overall suite */ |
diff --git a/po/ChangeLog b/po/ChangeLog deleted file mode 100644 index 10741022..00000000 --- a/po/ChangeLog +++ /dev/null | |||
| @@ -1,11 +0,0 @@ | |||
| 1 | 2003-07-02 gettextize <bug-gnu-gettext@gnu.org> | ||
| 2 | |||
| 3 | * Makefile.in.in: New file, from gettext-0.11.4. | ||
| 4 | * boldquot.sed: New file, from gettext-0.11.4. | ||
| 5 | * en@boldquot.header: New file, from gettext-0.11.4. | ||
| 6 | * en@quot.header: New file, from gettext-0.11.4. | ||
| 7 | * insert-header.sin: New file, from gettext-0.11.4. | ||
| 8 | * quot.sed: New file, from gettext-0.11.4. | ||
| 9 | * remove-potcdate.sin: New file, from gettext-0.11.4. | ||
| 10 | * Rules-quot: New file, from gettext-0.11.4. | ||
| 11 | |||
diff --git a/po/LINGUAS b/po/LINGUAS deleted file mode 100644 index 1ce0c392..00000000 --- a/po/LINGUAS +++ /dev/null | |||
| @@ -1,2 +0,0 @@ | |||
| 1 | fr de | ||
| 2 | |||
diff --git a/po/Makefile.in.in b/po/Makefile.in.in deleted file mode 100644 index 82864b26..00000000 --- a/po/Makefile.in.in +++ /dev/null | |||
| @@ -1,395 +0,0 @@ | |||
| 1 | # -*- buffer-read-only: t -*- vi: set ro: | ||
| 2 | # DO NOT EDIT! GENERATED AUTOMATICALLY! | ||
| 3 | # Makefile for PO directory in any package using GNU gettext. | ||
| 4 | # Copyright (C) 1995-1997, 2000-2006 by Ulrich Drepper <drepper@gnu.ai.mit.edu> | ||
| 5 | # | ||
| 6 | # This file can be copied and used freely without restrictions. It can | ||
| 7 | # be used in projects which are not available under the GNU General Public | ||
| 8 | # License but which still want to provide support for the GNU gettext | ||
| 9 | # functionality. | ||
| 10 | # Please note that the actual code of GNU gettext is covered by the GNU | ||
| 11 | # General Public License and is *not* in the public domain. | ||
| 12 | # | ||
| 13 | # Origin: gettext-0.15 | ||
| 14 | |||
| 15 | PACKAGE = @PACKAGE@ | ||
| 16 | VERSION = @VERSION@ | ||
| 17 | PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ | ||
| 18 | |||
| 19 | SHELL = /bin/sh | ||
| 20 | @SET_MAKE@ | ||
| 21 | |||
| 22 | srcdir = @srcdir@ | ||
| 23 | top_srcdir = @top_srcdir@ | ||
| 24 | VPATH = @srcdir@ | ||
| 25 | |||
| 26 | prefix = @prefix@ | ||
| 27 | exec_prefix = @exec_prefix@ | ||
| 28 | datarootdir = @datarootdir@ | ||
| 29 | datadir = @datadir@ | ||
| 30 | localedir = @localedir@ | ||
| 31 | gettextsrcdir = $(datadir)/gettext/po | ||
| 32 | |||
| 33 | INSTALL = @INSTALL@ | ||
| 34 | INSTALL_DATA = @INSTALL_DATA@ | ||
| 35 | mkinstalldirs = $(SHELL) @install_sh@ -d | ||
| 36 | mkdir_p = @MKDIR_P@ | ||
| 37 | |||
| 38 | GMSGFMT_ = @GMSGFMT@ | ||
| 39 | GMSGFMT_no = @GMSGFMT@ | ||
| 40 | GMSGFMT_yes = @GMSGFMT_015@ | ||
| 41 | GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) | ||
| 42 | MSGFMT_ = @MSGFMT@ | ||
| 43 | MSGFMT_no = @MSGFMT@ | ||
| 44 | MSGFMT_yes = @MSGFMT_015@ | ||
| 45 | MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) | ||
| 46 | XGETTEXT_ = @XGETTEXT@ | ||
| 47 | XGETTEXT_no = @XGETTEXT@ | ||
| 48 | XGETTEXT_yes = @XGETTEXT_015@ | ||
| 49 | XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) | ||
| 50 | MSGMERGE = msgmerge | ||
| 51 | MSGMERGE_UPDATE = @MSGMERGE@ --update | ||
| 52 | MSGINIT = msginit | ||
| 53 | MSGCONV = msgconv | ||
| 54 | MSGFILTER = msgfilter | ||
| 55 | |||
| 56 | POFILES = @POFILES@ | ||
| 57 | GMOFILES = @GMOFILES@ | ||
| 58 | UPDATEPOFILES = @UPDATEPOFILES@ | ||
| 59 | DUMMYPOFILES = @DUMMYPOFILES@ | ||
| 60 | DISTFILES.common = Makefile.in.in remove-potcdate.sin \ | ||
| 61 | $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) | ||
| 62 | DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ | ||
| 63 | $(POFILES) $(GMOFILES) \ | ||
| 64 | $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) | ||
| 65 | |||
| 66 | POTFILES = \ | ||
| 67 | |||
| 68 | CATALOGS = @CATALOGS@ | ||
| 69 | |||
| 70 | # Makevars gets inserted here. (Don't remove this line!) | ||
| 71 | |||
| 72 | .SUFFIXES: | ||
| 73 | .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update | ||
| 74 | |||
| 75 | .po.mo: | ||
| 76 | @echo "$(MSGFMT) -c -o $@ $<"; \ | ||
| 77 | $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ | ||
| 78 | |||
| 79 | .po.gmo: | ||
| 80 | @lang=`echo $* | sed -e 's,.*/,,'`; \ | ||
| 81 | test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ | ||
| 82 | echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ | ||
| 83 | cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo | ||
| 84 | |||
| 85 | .sin.sed: | ||
| 86 | sed -e '/^#/d' $< > t-$@ | ||
| 87 | mv t-$@ $@ | ||
| 88 | |||
| 89 | |||
| 90 | all: all-@USE_NLS@ | ||
| 91 | |||
| 92 | all-yes: stamp-po | ||
| 93 | all-no: | ||
| 94 | |||
| 95 | # $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no | ||
| 96 | # internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because | ||
| 97 | # we don't want to bother translators with empty POT files). We assume that | ||
| 98 | # LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. | ||
| 99 | # In this case, stamp-po is a nop (i.e. a phony target). | ||
| 100 | |||
| 101 | # stamp-po is a timestamp denoting the last time at which the CATALOGS have | ||
| 102 | # been loosely updated. Its purpose is that when a developer or translator | ||
| 103 | # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, | ||
| 104 | # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent | ||
| 105 | # invocations of "make" will do nothing. This timestamp would not be necessary | ||
| 106 | # if updating the $(CATALOGS) would always touch them; however, the rule for | ||
| 107 | # $(POFILES) has been designed to not touch files that don't need to be | ||
| 108 | # changed. | ||
| 109 | stamp-po: $(srcdir)/$(DOMAIN).pot | ||
| 110 | test ! -f $(srcdir)/$(DOMAIN).pot || \ | ||
| 111 | test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) | ||
| 112 | @test ! -f $(srcdir)/$(DOMAIN).pot || { \ | ||
| 113 | echo "touch stamp-po" && \ | ||
| 114 | echo timestamp > stamp-poT && \ | ||
| 115 | mv stamp-poT stamp-po; \ | ||
| 116 | } | ||
| 117 | |||
| 118 | # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', | ||
| 119 | # otherwise packages like GCC can not be built if only parts of the source | ||
| 120 | # have been downloaded. | ||
| 121 | |||
| 122 | # This target rebuilds $(DOMAIN).pot; it is an expensive operation. | ||
| 123 | # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. | ||
| 124 | $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed | ||
| 125 | if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ | ||
| 126 | msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ | ||
| 127 | else \ | ||
| 128 | msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ | ||
| 129 | fi; \ | ||
| 130 | $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ | ||
| 131 | --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ | ||
| 132 | --files-from=$(srcdir)/POTFILES.in \ | ||
| 133 | --copyright-holder='$(COPYRIGHT_HOLDER)' \ | ||
| 134 | --msgid-bugs-address="$$msgid_bugs_address" | ||
| 135 | test ! -f $(DOMAIN).po || { \ | ||
| 136 | if test -f $(srcdir)/$(DOMAIN).pot; then \ | ||
| 137 | sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ | ||
| 138 | sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ | ||
| 139 | if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ | ||
| 140 | rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ | ||
| 141 | else \ | ||
| 142 | rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ | ||
| 143 | mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ | ||
| 144 | fi; \ | ||
| 145 | else \ | ||
| 146 | mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ | ||
| 147 | fi; \ | ||
| 148 | } | ||
| 149 | |||
| 150 | # This rule has no dependencies: we don't need to update $(DOMAIN).pot at | ||
| 151 | # every "make" invocation, only create it when it is missing. | ||
| 152 | # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. | ||
| 153 | $(srcdir)/$(DOMAIN).pot: | ||
| 154 | $(MAKE) $(DOMAIN).pot-update | ||
| 155 | |||
| 156 | # This target rebuilds a PO file if $(DOMAIN).pot has changed. | ||
| 157 | # Note that a PO file is not touched if it doesn't need to be changed. | ||
| 158 | $(POFILES): $(srcdir)/$(DOMAIN).pot | ||
| 159 | @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ | ||
| 160 | if test -f "$(srcdir)/$${lang}.po"; then \ | ||
| 161 | test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ | ||
| 162 | echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ | ||
| 163 | cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ | ||
| 164 | else \ | ||
| 165 | $(MAKE) $${lang}.po-create; \ | ||
| 166 | fi | ||
| 167 | |||
| 168 | |||
| 169 | install: install-exec install-data | ||
| 170 | install-exec: | ||
| 171 | install-data: install-data-@USE_NLS@ | ||
| 172 | if test "$(PACKAGE)" = "gettext-tools"; then \ | ||
| 173 | $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ | ||
| 174 | for file in $(DISTFILES.common) Makevars.template; do \ | ||
| 175 | $(INSTALL_DATA) $(srcdir)/$$file \ | ||
| 176 | $(DESTDIR)$(gettextsrcdir)/$$file; \ | ||
| 177 | done; \ | ||
| 178 | for file in Makevars; do \ | ||
| 179 | rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ | ||
| 180 | done; \ | ||
| 181 | else \ | ||
| 182 | : ; \ | ||
| 183 | fi | ||
| 184 | install-data-no: all | ||
| 185 | install-data-yes: all | ||
| 186 | $(mkdir_p) $(DESTDIR)$(datadir) | ||
| 187 | @catalogs='$(CATALOGS)'; \ | ||
| 188 | for cat in $$catalogs; do \ | ||
| 189 | cat=`basename $$cat`; \ | ||
| 190 | lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ | ||
| 191 | dir=$(localedir)/$$lang/LC_MESSAGES; \ | ||
| 192 | $(mkdir_p) $(DESTDIR)$$dir; \ | ||
| 193 | if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ | ||
| 194 | $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ | ||
| 195 | echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ | ||
| 196 | for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ | ||
| 197 | if test -n "$$lc"; then \ | ||
| 198 | if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ | ||
| 199 | link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ | ||
| 200 | mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ | ||
| 201 | mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ | ||
| 202 | (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ | ||
| 203 | for file in *; do \ | ||
| 204 | if test -f $$file; then \ | ||
| 205 | ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ | ||
| 206 | fi; \ | ||
| 207 | done); \ | ||
| 208 | rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ | ||
| 209 | else \ | ||
| 210 | if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ | ||
| 211 | :; \ | ||
| 212 | else \ | ||
| 213 | rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ | ||
| 214 | mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ | ||
| 215 | fi; \ | ||
| 216 | fi; \ | ||
| 217 | rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ | ||
| 218 | ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ | ||
| 219 | ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ | ||
| 220 | cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ | ||
| 221 | echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ | ||
| 222 | fi; \ | ||
| 223 | done; \ | ||
| 224 | done | ||
| 225 | |||
| 226 | install-strip: install | ||
| 227 | |||
| 228 | installdirs: installdirs-exec installdirs-data | ||
| 229 | installdirs-exec: | ||
| 230 | installdirs-data: installdirs-data-@USE_NLS@ | ||
| 231 | if test "$(PACKAGE)" = "gettext-tools"; then \ | ||
| 232 | $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ | ||
| 233 | else \ | ||
| 234 | : ; \ | ||
| 235 | fi | ||
| 236 | installdirs-data-no: | ||
| 237 | installdirs-data-yes: | ||
| 238 | $(mkdir_p) $(DESTDIR)$(datadir) | ||
| 239 | @catalogs='$(CATALOGS)'; \ | ||
| 240 | for cat in $$catalogs; do \ | ||
| 241 | cat=`basename $$cat`; \ | ||
| 242 | lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ | ||
| 243 | dir=$(localedir)/$$lang/LC_MESSAGES; \ | ||
| 244 | $(mkdir_p) $(DESTDIR)$$dir; \ | ||
| 245 | for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ | ||
| 246 | if test -n "$$lc"; then \ | ||
| 247 | if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ | ||
| 248 | link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ | ||
| 249 | mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ | ||
| 250 | mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ | ||
| 251 | (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ | ||
| 252 | for file in *; do \ | ||
| 253 | if test -f $$file; then \ | ||
| 254 | ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ | ||
| 255 | fi; \ | ||
| 256 | done); \ | ||
| 257 | rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ | ||
| 258 | else \ | ||
| 259 | if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ | ||
| 260 | :; \ | ||
| 261 | else \ | ||
| 262 | rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ | ||
| 263 | mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ | ||
| 264 | fi; \ | ||
| 265 | fi; \ | ||
| 266 | fi; \ | ||
| 267 | done; \ | ||
| 268 | done | ||
| 269 | |||
| 270 | # Define this as empty until I found a useful application. | ||
| 271 | installcheck: | ||
| 272 | |||
| 273 | uninstall: uninstall-exec uninstall-data | ||
| 274 | uninstall-exec: | ||
| 275 | uninstall-data: uninstall-data-@USE_NLS@ | ||
| 276 | if test "$(PACKAGE)" = "gettext-tools"; then \ | ||
| 277 | for file in $(DISTFILES.common) Makevars.template; do \ | ||
| 278 | rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ | ||
| 279 | done; \ | ||
| 280 | else \ | ||
| 281 | : ; \ | ||
| 282 | fi | ||
| 283 | uninstall-data-no: | ||
| 284 | uninstall-data-yes: | ||
| 285 | catalogs='$(CATALOGS)'; \ | ||
| 286 | for cat in $$catalogs; do \ | ||
| 287 | cat=`basename $$cat`; \ | ||
| 288 | lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ | ||
| 289 | for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ | ||
| 290 | rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ | ||
| 291 | done; \ | ||
| 292 | done | ||
| 293 | |||
| 294 | check: all | ||
| 295 | |||
| 296 | info dvi ps pdf html tags TAGS ctags CTAGS ID: | ||
| 297 | |||
| 298 | mostlyclean: | ||
| 299 | rm -f remove-potcdate.sed | ||
| 300 | rm -f stamp-poT | ||
| 301 | rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po | ||
| 302 | rm -fr *.o | ||
| 303 | |||
| 304 | clean: mostlyclean | ||
| 305 | |||
| 306 | distclean: clean | ||
| 307 | rm -f Makefile Makefile.in POTFILES *.mo | ||
| 308 | |||
| 309 | maintainer-clean: distclean | ||
| 310 | @echo "This command is intended for maintainers to use;" | ||
| 311 | @echo "it deletes files that may require special tools to rebuild." | ||
| 312 | rm -f stamp-po $(GMOFILES) | ||
| 313 | |||
| 314 | distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) | ||
| 315 | dist distdir: | ||
| 316 | $(MAKE) update-po | ||
| 317 | @$(MAKE) dist2 | ||
| 318 | # This is a separate target because 'update-po' must be executed before. | ||
| 319 | dist2: stamp-po $(DISTFILES) | ||
| 320 | dists="$(DISTFILES)"; \ | ||
| 321 | if test "$(PACKAGE)" = "gettext-tools"; then \ | ||
| 322 | dists="$$dists Makevars.template"; \ | ||
| 323 | fi; \ | ||
| 324 | if test -f $(srcdir)/$(DOMAIN).pot; then \ | ||
| 325 | dists="$$dists $(DOMAIN).pot stamp-po"; \ | ||
| 326 | fi; \ | ||
| 327 | if test -f $(srcdir)/ChangeLog; then \ | ||
| 328 | dists="$$dists ChangeLog"; \ | ||
| 329 | fi; \ | ||
| 330 | for i in 0 1 2 3 4 5 6 7 8 9; do \ | ||
| 331 | if test -f $(srcdir)/ChangeLog.$$i; then \ | ||
| 332 | dists="$$dists ChangeLog.$$i"; \ | ||
| 333 | fi; \ | ||
| 334 | done; \ | ||
| 335 | if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ | ||
| 336 | for file in $$dists; do \ | ||
| 337 | if test -f $$file; then \ | ||
| 338 | cp -p $$file $(distdir) || exit 1; \ | ||
| 339 | else \ | ||
| 340 | cp -p $(srcdir)/$$file $(distdir) || exit 1; \ | ||
| 341 | fi; \ | ||
| 342 | done | ||
| 343 | |||
| 344 | update-po: Makefile | ||
| 345 | $(MAKE) $(DOMAIN).pot-update | ||
| 346 | test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) | ||
| 347 | $(MAKE) update-gmo | ||
| 348 | |||
| 349 | # General rule for creating PO files. | ||
| 350 | |||
| 351 | .nop.po-create: | ||
| 352 | @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ | ||
| 353 | echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ | ||
| 354 | exit 1 | ||
| 355 | |||
| 356 | # General rule for updating PO files. | ||
| 357 | |||
| 358 | .nop.po-update: | ||
| 359 | @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ | ||
| 360 | if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ | ||
| 361 | tmpdir=`pwd`; \ | ||
| 362 | echo "$$lang:"; \ | ||
| 363 | test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ | ||
| 364 | echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ | ||
| 365 | cd $(srcdir); \ | ||
| 366 | if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ | ||
| 367 | if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ | ||
| 368 | rm -f $$tmpdir/$$lang.new.po; \ | ||
| 369 | else \ | ||
| 370 | if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ | ||
| 371 | :; \ | ||
| 372 | else \ | ||
| 373 | echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ | ||
| 374 | exit 1; \ | ||
| 375 | fi; \ | ||
| 376 | fi; \ | ||
| 377 | else \ | ||
| 378 | echo "msgmerge for $$lang.po failed!" 1>&2; \ | ||
| 379 | rm -f $$tmpdir/$$lang.new.po; \ | ||
| 380 | fi | ||
| 381 | |||
| 382 | $(DUMMYPOFILES): | ||
| 383 | |||
| 384 | update-gmo: Makefile $(GMOFILES) | ||
| 385 | @: | ||
| 386 | |||
| 387 | Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ | ||
| 388 | cd $(top_builddir) \ | ||
| 389 | && $(SHELL) ./config.status $(subdir)/$@.in po-directories | ||
| 390 | |||
| 391 | force: | ||
| 392 | |||
| 393 | # Tell versions [3.59,3.63) of GNU make not to export all variables. | ||
| 394 | # Otherwise a system limit (for SysV at least) may be exceeded. | ||
| 395 | .NOEXPORT: | ||
diff --git a/po/Makevars b/po/Makevars deleted file mode 100644 index b35f5adc..00000000 --- a/po/Makevars +++ /dev/null | |||
| @@ -1,29 +0,0 @@ | |||
| 1 | # Makefile variables for PO directory in any package using GNU gettext. | ||
| 2 | |||
| 3 | # Usually the message domain is the same as the package name. | ||
| 4 | DOMAIN = $(PACKAGE) | ||
| 5 | |||
| 6 | # These two variables depend on the location of this directory. | ||
| 7 | subdir = po | ||
| 8 | top_builddir = .. | ||
| 9 | |||
| 10 | # These options get passed to xgettext. | ||
| 11 | XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --flag=error:3:c-format --flag=error_at_line:5:c-format --flag=asprintf:2:c-format --flag=vasprintf:2:c-format --no-location | ||
| 12 | |||
| 13 | # This is the copyright holder that gets inserted into the header of the | ||
| 14 | # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding | ||
| 15 | # package. (Note that the msgstr strings, extracted from the package's | ||
| 16 | # sources, belong to the copyright holder of the package.) Translators are | ||
| 17 | # expected to transfer the copyright for their translations to this person | ||
| 18 | # or entity, or to disclaim their copyright. The empty string stands for | ||
| 19 | # the public domain; in this case the translators are expected to disclaim | ||
| 20 | # their copyright. | ||
| 21 | COPYRIGHT_HOLDER = Monitoring Plugins Development Team | ||
| 22 | |||
| 23 | # This is the list of locale categories, beyond LC_MESSAGES, for which the | ||
| 24 | # message catalogs shall be used. It is usually empty. | ||
| 25 | EXTRA_LOCALE_CATEGORIES = | ||
| 26 | |||
| 27 | # Email address were to send bug report for the .po translation files | ||
| 28 | PACKAGE_BUGREPORT = devel@monitoring-plugins.org | ||
| 29 | |||
diff --git a/po/POTFILES.in b/po/POTFILES.in deleted file mode 100644 index 6e491d78..00000000 --- a/po/POTFILES.in +++ /dev/null | |||
| @@ -1,44 +0,0 @@ | |||
| 1 | plugins/check_by_ssh.c | ||
| 2 | plugins/check_cluster.c | ||
| 3 | plugins/check_dig.c | ||
| 4 | plugins/check_disk.c | ||
| 5 | plugins/check_dns.c | ||
| 6 | plugins/check_dummy.c | ||
| 7 | plugins/check_fping.c | ||
| 8 | plugins/check_game.c | ||
| 9 | plugins/check_hpjd.c | ||
| 10 | plugins/check_http.c | ||
| 11 | plugins/check_ldap.c | ||
| 12 | plugins/check_load.c | ||
| 13 | plugins/check_mrtg.c | ||
| 14 | plugins/check_mrtgtraf.c | ||
| 15 | plugins/check_mysql.c | ||
| 16 | plugins/check_nagios.c | ||
| 17 | plugins/check_nt.c | ||
| 18 | plugins/check_ntp.c | ||
| 19 | plugins/check_ntp_peer.c | ||
| 20 | plugins/check_ntp_time.c | ||
| 21 | plugins/check_nwstat.c | ||
| 22 | plugins/check_overcr.c | ||
| 23 | plugins/check_pgsql.c | ||
| 24 | plugins/check_ping.c | ||
| 25 | plugins/check_procs.c | ||
| 26 | plugins/check_radius.c | ||
| 27 | plugins/check_real.c | ||
| 28 | plugins/check_smtp.c | ||
| 29 | plugins/check_snmp.c | ||
| 30 | plugins/check_ssh.c | ||
| 31 | plugins/check_swap.c | ||
| 32 | plugins/check_tcp.c | ||
| 33 | plugins/check_time.c | ||
| 34 | plugins/check_ups.c | ||
| 35 | plugins/check_users.c | ||
| 36 | plugins/check_ide_smart.c | ||
| 37 | plugins/negate.c | ||
| 38 | plugins/netutils.c | ||
| 39 | plugins/popen.c | ||
| 40 | plugins/urlize.c | ||
| 41 | plugins/utils.c | ||
| 42 | plugins/utils.h | ||
| 43 | plugins-root/check_dhcp.c | ||
| 44 | plugins-root/check_icmp.c | ||
diff --git a/po/de.po b/po/de.po deleted file mode 100644 index d5972032..00000000 --- a/po/de.po +++ /dev/null | |||
| @@ -1,5393 +0,0 @@ | |||
| 1 | # translation of de.po to | ||
| 2 | # German Language Translation File. | ||
| 3 | # This file is distributed under the same license as the nagios-plugins package. | ||
| 4 | # Copyright (C) 2023 Nagios Plugin Development Group. | ||
| 5 | # Karl DeBisschop <kdebisschop@users.sourceforge.net>, 2003, 2004. | ||
| 6 | # | ||
| 7 | # | ||
| 8 | msgid "" | ||
| 9 | msgstr "" | ||
| 10 | "Project-Id-Version: PACKAGE VERSION\n" | ||
| 11 | "Report-Msgid-Bugs-To: devel@monitoring-plugins.org\n" | ||
| 12 | "POT-Creation-Date: 2023-09-05 00:31+0200\n" | ||
| 13 | "PO-Revision-Date: 2004-12-23 17:46+0100\n" | ||
| 14 | "Last-Translator: \n" | ||
| 15 | "Language-Team: Monitoring Plugin Development Team <devel@monitoring-plugins.org>\n" | ||
| 16 | "Language: de\n" | ||
| 17 | "MIME-Version: 1.0\n" | ||
| 18 | "Content-Type: text/plain; charset=UTF-8\n" | ||
| 19 | "Content-Transfer-Encoding: 8bit\n" | ||
| 20 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" | ||
| 21 | "X-Generator: KBabel 1.3.1\n" | ||
| 22 | |||
| 23 | msgid "Could not parse arguments" | ||
| 24 | msgstr "Argumente konnten nicht ausgewertet werden" | ||
| 25 | |||
| 26 | msgid "Cannot catch SIGALRM" | ||
| 27 | msgstr "Konnte SIGALRM nicht erhalten" | ||
| 28 | |||
| 29 | #, c-format | ||
| 30 | msgid "SSH connection failed: %s\n" | ||
| 31 | msgstr "" | ||
| 32 | |||
| 33 | #, c-format | ||
| 34 | msgid "Remote command execution failed: %s\n" | ||
| 35 | msgstr "" | ||
| 36 | |||
| 37 | #, c-format | ||
| 38 | msgid "%s - check_by_ssh: Remote command '%s' returned status %d\n" | ||
| 39 | msgstr "" | ||
| 40 | |||
| 41 | #, c-format | ||
| 42 | msgid "SSH WARNING: could not open %s\n" | ||
| 43 | msgstr "SSH WARNING: Konnte %s nicht öffnen\n" | ||
| 44 | |||
| 45 | #, c-format | ||
| 46 | msgid "%s: Error parsing output\n" | ||
| 47 | msgstr "" | ||
| 48 | |||
| 49 | msgid "Timeout interval must be a positive integer" | ||
| 50 | msgstr "Timeout interval muss ein positiver Integer sein" | ||
| 51 | |||
| 52 | msgid "Port must be a positive integer" | ||
| 53 | msgstr "Port muss ein positiver Integer sein" | ||
| 54 | |||
| 55 | #, fuzzy | ||
| 56 | msgid "skip-stdout argument must be an integer" | ||
| 57 | msgstr "skip-stdout argument muss ein Integer sein" | ||
| 58 | |||
| 59 | #, fuzzy | ||
| 60 | msgid "skip-stderr argument must be an integer" | ||
| 61 | msgstr "skip-stderr argument muss ein Integer sein" | ||
| 62 | |||
| 63 | #, c-format | ||
| 64 | msgid "%s: You must provide a host name\n" | ||
| 65 | msgstr "%s: Hostname muss angegeben werden\n" | ||
| 66 | |||
| 67 | msgid "No remotecmd" | ||
| 68 | msgstr "Kein remotecm" | ||
| 69 | |||
| 70 | #, c-format | ||
| 71 | msgid "%s: Argument limit of %d exceeded\n" | ||
| 72 | msgstr "" | ||
| 73 | |||
| 74 | #, fuzzy | ||
| 75 | msgid "Can not (re)allocate 'commargv' buffer\n" | ||
| 76 | msgstr "Konnte·url·nicht·zuweisen\n" | ||
| 77 | |||
| 78 | #, c-format | ||
| 79 | msgid "" | ||
| 80 | "%s: In passive mode, you must provide a service name for each command.\n" | ||
| 81 | msgstr "" | ||
| 82 | "%s: Im passive mode muss ein Servicename für jeden Befehl angegeben werden.\n" | ||
| 83 | |||
| 84 | #, fuzzy, c-format | ||
| 85 | msgid "" | ||
| 86 | "%s: In passive mode, you must provide the host short name from the " | ||
| 87 | "monitoring configs.\n" | ||
| 88 | msgstr "" | ||
| 89 | "%s: Im passive mode muss der \"host short name\" aus der Nagios " | ||
| 90 | "Konfiguration angegeben werden\n" | ||
| 91 | |||
| 92 | #, fuzzy, c-format | ||
| 93 | msgid "This plugin uses SSH to execute commands on a remote host" | ||
| 94 | msgstr "" | ||
| 95 | "Dieses Plugin nutzt SSH um Befehle auf dem entfernten Rechner auszuführen\n" | ||
| 96 | "\n" | ||
| 97 | |||
| 98 | msgid "tell ssh to use Protocol 1 [optional]" | ||
| 99 | msgstr "" | ||
| 100 | |||
| 101 | msgid "tell ssh to use Protocol 2 [optional]" | ||
| 102 | msgstr "" | ||
| 103 | |||
| 104 | msgid "Ignore all or (if specified) first n lines on STDOUT [optional]" | ||
| 105 | msgstr "" | ||
| 106 | |||
| 107 | msgid "Ignore all or (if specified) first n lines on STDERR [optional]" | ||
| 108 | msgstr "" | ||
| 109 | |||
| 110 | msgid "Exit with an warning, if there is an output on STDERR" | ||
| 111 | msgstr "" | ||
| 112 | |||
| 113 | msgid "" | ||
| 114 | "tells ssh to fork rather than create a tty [optional]. This will always " | ||
| 115 | "return OK if ssh is executed" | ||
| 116 | msgstr "" | ||
| 117 | |||
| 118 | msgid "command to execute on the remote machine" | ||
| 119 | msgstr "" | ||
| 120 | |||
| 121 | msgid "SSH user name on remote host [optional]" | ||
| 122 | msgstr "" | ||
| 123 | |||
| 124 | msgid "identity of an authorized key [optional]" | ||
| 125 | msgstr "" | ||
| 126 | |||
| 127 | msgid "external command file for monitoring [optional]" | ||
| 128 | msgstr "" | ||
| 129 | |||
| 130 | msgid "list of monitoring service names, separated by ':' [optional]" | ||
| 131 | msgstr "" | ||
| 132 | |||
| 133 | msgid "short name of host in the monitoring configuration [optional]" | ||
| 134 | msgstr "" | ||
| 135 | |||
| 136 | msgid "Call ssh with '-o OPTION' (may be used multiple times) [optional]" | ||
| 137 | msgstr "" | ||
| 138 | |||
| 139 | msgid "Tell ssh to use this configfile [optional]" | ||
| 140 | msgstr "" | ||
| 141 | |||
| 142 | msgid "Tell ssh to suppress warning and diagnostic messages [optional]" | ||
| 143 | msgstr "" | ||
| 144 | |||
| 145 | msgid "Make connection problems return UNKNOWN instead of CRITICAL" | ||
| 146 | msgstr "" | ||
| 147 | |||
| 148 | msgid "The most common mode of use is to refer to a local identity file with" | ||
| 149 | msgstr "" | ||
| 150 | |||
| 151 | msgid "the '-i' option. In this mode, the identity pair should have a null" | ||
| 152 | msgstr "" | ||
| 153 | |||
| 154 | msgid "passphrase and the public key should be listed in the authorized_keys" | ||
| 155 | msgstr "" | ||
| 156 | |||
| 157 | msgid "file of the remote host. Usually the key will be restricted to running" | ||
| 158 | msgstr "" | ||
| 159 | |||
| 160 | msgid "only one command on the remote server. If the remote SSH server tracks" | ||
| 161 | msgstr "" | ||
| 162 | |||
| 163 | msgid "invocation arguments, the one remote program may be an agent that can" | ||
| 164 | msgstr "" | ||
| 165 | |||
| 166 | msgid "execute additional commands as proxy" | ||
| 167 | msgstr "" | ||
| 168 | |||
| 169 | msgid "To use passive mode, provide multiple '-C' options, and provide" | ||
| 170 | msgstr "" | ||
| 171 | |||
| 172 | msgid "" | ||
| 173 | "all of -O, -s, and -n options (servicelist order must match '-C'options)" | ||
| 174 | msgstr "" | ||
| 175 | |||
| 176 | msgid "Examples:" | ||
| 177 | msgstr "" | ||
| 178 | |||
| 179 | msgid "Usage:" | ||
| 180 | msgstr "" | ||
| 181 | |||
| 182 | #, c-format | ||
| 183 | msgid "Host/Service Cluster Plugin for Monitoring" | ||
| 184 | msgstr "" | ||
| 185 | |||
| 186 | msgid "Options:" | ||
| 187 | msgstr "" | ||
| 188 | |||
| 189 | msgid "Check service cluster status" | ||
| 190 | msgstr "" | ||
| 191 | |||
| 192 | msgid "Check host cluster status" | ||
| 193 | msgstr "" | ||
| 194 | |||
| 195 | msgid "Optional prepended text output (i.e. \"Host cluster\")" | ||
| 196 | msgstr "" | ||
| 197 | |||
| 198 | msgid "Specifies the range of hosts or services in cluster that must be in a" | ||
| 199 | msgstr "" | ||
| 200 | |||
| 201 | msgid "non-OK state in order to return a WARNING status level" | ||
| 202 | msgstr "" | ||
| 203 | |||
| 204 | msgid "non-OK state in order to return a CRITICAL status level" | ||
| 205 | msgstr "" | ||
| 206 | |||
| 207 | msgid "The status codes of the hosts or services in the cluster, separated by" | ||
| 208 | msgstr "" | ||
| 209 | |||
| 210 | msgid "commas" | ||
| 211 | msgstr "" | ||
| 212 | |||
| 213 | msgid "Notes:" | ||
| 214 | msgstr "" | ||
| 215 | |||
| 216 | msgid "" | ||
| 217 | "Will alert critical if there are 3 or more service data points in a non-OK" | ||
| 218 | msgstr "" | ||
| 219 | |||
| 220 | msgid "state." | ||
| 221 | msgstr "" | ||
| 222 | |||
| 223 | #, c-format | ||
| 224 | msgid "Looking for: '%s'\n" | ||
| 225 | msgstr "" | ||
| 226 | |||
| 227 | msgid "dig returned an error status" | ||
| 228 | msgstr "dig hat einen Fehler zurückgegeben" | ||
| 229 | |||
| 230 | msgid "Server not found in ANSWER SECTION" | ||
| 231 | msgstr "Server nicht gefunden in ANSWER SECTION" | ||
| 232 | |||
| 233 | msgid "No ANSWER SECTION found" | ||
| 234 | msgstr "Keine ANSWER SECTION gefunden" | ||
| 235 | |||
| 236 | #, fuzzy | ||
| 237 | msgid "Probably a non-existent host/domain" | ||
| 238 | msgstr "nicht existierender Host/Domain" | ||
| 239 | |||
| 240 | #, fuzzy, c-format | ||
| 241 | msgid "Port must be a positive integer - %s" | ||
| 242 | msgstr "Port muss ein positiver Integer sein - %s" | ||
| 243 | |||
| 244 | #, fuzzy, c-format | ||
| 245 | msgid "Warning interval must be a positive integer - %s" | ||
| 246 | msgstr "Warning interval muss ein positiver Integer sein - %s" | ||
| 247 | |||
| 248 | #, fuzzy, c-format | ||
| 249 | msgid "Critical interval must be a positive integer - %s" | ||
| 250 | msgstr "Critical interval muss ein positiver Integer sein - %s" | ||
| 251 | |||
| 252 | #, fuzzy, c-format | ||
| 253 | msgid "Timeout interval must be a positive integer - %s" | ||
| 254 | msgstr "Timeout interval muss ein positiver Integer sein - %s" | ||
| 255 | |||
| 256 | #, fuzzy, c-format | ||
| 257 | msgid "This plugin tests the DNS service on the specified host using dig" | ||
| 258 | msgstr "Testet den DNS Dienst auf dem angegebenen Host mit dig" | ||
| 259 | |||
| 260 | msgid "Force dig to only use IPv4 query transport" | ||
| 261 | msgstr "" | ||
| 262 | |||
| 263 | msgid "Force dig to only use IPv6 query transport" | ||
| 264 | msgstr "" | ||
| 265 | |||
| 266 | #, fuzzy | ||
| 267 | msgid "Machine name to lookup" | ||
| 268 | msgstr "zu prüfender Hostname" | ||
| 269 | |||
| 270 | #, fuzzy | ||
| 271 | msgid "Record type to lookup (default: A)" | ||
| 272 | msgstr "abzufragender Datensatztyp (Default: A)" | ||
| 273 | |||
| 274 | #, fuzzy | ||
| 275 | msgid "" | ||
| 276 | "An address expected to be in the answer section. If not set, uses whatever" | ||
| 277 | msgstr "" | ||
| 278 | "Adresse die in der ANSWER SECTION erwartet wird.wenn nicht gesetzt, " | ||
| 279 | "ubernommen aus -l" | ||
| 280 | |||
| 281 | msgid "was in -l" | ||
| 282 | msgstr "" | ||
| 283 | |||
| 284 | msgid "Pass STRING as argument(s) to dig" | ||
| 285 | msgstr "" | ||
| 286 | |||
| 287 | #, fuzzy, c-format | ||
| 288 | msgid "DISK %s: %s not found\n" | ||
| 289 | msgstr "%s [%s nicht gefunden]" | ||
| 290 | |||
| 291 | #, c-format | ||
| 292 | msgid "CRITICAL" | ||
| 293 | msgstr "CRITICAL" | ||
| 294 | |||
| 295 | #, c-format | ||
| 296 | msgid "unit type %s not known\n" | ||
| 297 | msgstr "unbekannter unit type: %s\n" | ||
| 298 | |||
| 299 | #, c-format | ||
| 300 | msgid "failed allocating storage for '%s'\n" | ||
| 301 | msgstr "konnte keinen Speicher für '%s' reservieren\n" | ||
| 302 | |||
| 303 | #, c-format | ||
| 304 | msgid "UNKNOWN" | ||
| 305 | msgstr "UNKNOWN" | ||
| 306 | |||
| 307 | msgid "Must set a threshold value before using -p\n" | ||
| 308 | msgstr "" | ||
| 309 | |||
| 310 | msgid "Must set -E before selecting paths\n" | ||
| 311 | msgstr "" | ||
| 312 | |||
| 313 | msgid "Must set group value before selecting paths\n" | ||
| 314 | msgstr "" | ||
| 315 | |||
| 316 | msgid "" | ||
| 317 | "Paths need to be selected before using -i/-I. Use -A to select all paths " | ||
| 318 | "explicitly" | ||
| 319 | msgstr "" | ||
| 320 | |||
| 321 | msgid "Could not compile regular expression" | ||
| 322 | msgstr "" | ||
| 323 | |||
| 324 | msgid "Must set a threshold value before using -r/-R\n" | ||
| 325 | msgstr "" | ||
| 326 | |||
| 327 | msgid "Regular expression did not match any path or disk" | ||
| 328 | msgstr "" | ||
| 329 | |||
| 330 | #, fuzzy | ||
| 331 | msgid "Unknown argument" | ||
| 332 | msgstr "Unbekanntes Argument" | ||
| 333 | |||
| 334 | #, c-format | ||
| 335 | msgid " for %s\n" | ||
| 336 | msgstr "" | ||
| 337 | |||
| 338 | #, fuzzy | ||
| 339 | msgid "" | ||
| 340 | "This plugin checks the amount of used disk space on a mounted file system" | ||
| 341 | msgstr "" | ||
| 342 | "Dieses Plugin prüft den freien Speicher auf einem gemounteten Filesystem" | ||
| 343 | |||
| 344 | #, fuzzy | ||
| 345 | msgid "" | ||
| 346 | "and generates an alert if free space is less than one of the threshold values" | ||
| 347 | msgstr "" | ||
| 348 | "und erzeugt einen Alarm wenn einer der angegebenen Schwellwerte " | ||
| 349 | "unterschritten wird." | ||
| 350 | |||
| 351 | msgid "Exit with WARNING status if less than INTEGER units of disk are free" | ||
| 352 | msgstr "" | ||
| 353 | |||
| 354 | msgid "Exit with WARNING status if less than PERCENT of disk space is free" | ||
| 355 | msgstr "" | ||
| 356 | |||
| 357 | msgid "Exit with CRITICAL status if less than INTEGER units of disk are free" | ||
| 358 | msgstr "" | ||
| 359 | |||
| 360 | msgid "Exit with CRITICAL status if less than PERCENT of disk space is free" | ||
| 361 | msgstr "" | ||
| 362 | |||
| 363 | msgid "Exit with WARNING status if less than PERCENT of inode space is free" | ||
| 364 | msgstr "" | ||
| 365 | |||
| 366 | msgid "Exit with CRITICAL status if less than PERCENT of inode space is free" | ||
| 367 | msgstr "" | ||
| 368 | |||
| 369 | msgid "" | ||
| 370 | "Mount point or block device as emitted by the mount(8) command (may be " | ||
| 371 | "repeated)" | ||
| 372 | msgstr "" | ||
| 373 | |||
| 374 | msgid "Ignore device (only works if -p unspecified)" | ||
| 375 | msgstr "" | ||
| 376 | |||
| 377 | msgid "Clear thresholds" | ||
| 378 | msgstr "" | ||
| 379 | |||
| 380 | msgid "For paths or partitions specified with -p, only check for exact paths" | ||
| 381 | msgstr "" | ||
| 382 | |||
| 383 | msgid "Display only devices/mountpoints with errors" | ||
| 384 | msgstr "" | ||
| 385 | |||
| 386 | msgid "Don't account root-reserved blocks into freespace in perfdata" | ||
| 387 | msgstr "" | ||
| 388 | |||
| 389 | msgid "Display inode usage in perfdata" | ||
| 390 | msgstr "" | ||
| 391 | |||
| 392 | msgid "" | ||
| 393 | "Group paths. Thresholds apply to (free-)space of all partitions together" | ||
| 394 | msgstr "" | ||
| 395 | |||
| 396 | msgid "Same as '--units kB'" | ||
| 397 | msgstr "" | ||
| 398 | |||
| 399 | msgid "Only check local filesystems" | ||
| 400 | msgstr "" | ||
| 401 | |||
| 402 | msgid "" | ||
| 403 | "Only check local filesystems against thresholds. Yet call stat on remote " | ||
| 404 | "filesystems" | ||
| 405 | msgstr "" | ||
| 406 | |||
| 407 | msgid "to test if they are accessible (e.g. to detect Stale NFS Handles)" | ||
| 408 | msgstr "" | ||
| 409 | |||
| 410 | msgid "Display the (block) device instead of the mount point" | ||
| 411 | msgstr "" | ||
| 412 | |||
| 413 | msgid "Same as '--units MB'" | ||
| 414 | msgstr "" | ||
| 415 | |||
| 416 | msgid "Explicitly select all paths. This is equivalent to -R '.*'" | ||
| 417 | msgstr "" | ||
| 418 | |||
| 419 | msgid "" | ||
| 420 | "Case insensitive regular expression for path/partition (may be repeated)" | ||
| 421 | msgstr "" | ||
| 422 | |||
| 423 | msgid "Regular expression for path or partition (may be repeated)" | ||
| 424 | msgstr "" | ||
| 425 | |||
| 426 | msgid "" | ||
| 427 | "Regular expression to ignore selected path/partition (case insensitive) (may " | ||
| 428 | "be repeated)" | ||
| 429 | msgstr "" | ||
| 430 | |||
| 431 | msgid "" | ||
| 432 | "Regular expression to ignore selected path or partition (may be repeated)" | ||
| 433 | msgstr "" | ||
| 434 | |||
| 435 | msgid "" | ||
| 436 | "Return OK if no filesystem matches, filesystem does not exist or is " | ||
| 437 | "inaccessible." | ||
| 438 | msgstr "" | ||
| 439 | |||
| 440 | msgid "(Provide this option before -p / -r / --ereg-path if used)" | ||
| 441 | msgstr "" | ||
| 442 | |||
| 443 | msgid "Choose bytes, kB, MB, GB, TB (default: MB)" | ||
| 444 | msgstr "" | ||
| 445 | |||
| 446 | msgid "Ignore all filesystems of indicated type (may be repeated)" | ||
| 447 | msgstr "" | ||
| 448 | |||
| 449 | msgid "Check only filesystems of indicated type (may be repeated)" | ||
| 450 | msgstr "" | ||
| 451 | |||
| 452 | msgid "Checks /tmp and /var at 10% and 5%, and / at 100MB and 50MB" | ||
| 453 | msgstr "" | ||
| 454 | |||
| 455 | msgid "" | ||
| 456 | "Checks all filesystems not matching -r at 100M and 50M. The fs matching the -" | ||
| 457 | "r regex" | ||
| 458 | msgstr "" | ||
| 459 | |||
| 460 | msgid "" | ||
| 461 | "are grouped which means the freespace thresholds are applied to all disks " | ||
| 462 | "together" | ||
| 463 | msgstr "" | ||
| 464 | |||
| 465 | msgid "" | ||
| 466 | "Checks /foo for 1000M/500M and /bar for 5/3%. All remaining volumes use " | ||
| 467 | "100M/50M" | ||
| 468 | msgstr "" | ||
| 469 | |||
| 470 | #, c-format | ||
| 471 | msgid "%s %s: %s\n" | ||
| 472 | msgstr "" | ||
| 473 | |||
| 474 | msgid "is not accessible" | ||
| 475 | msgstr "" | ||
| 476 | |||
| 477 | #, fuzzy | ||
| 478 | msgid "nslookup returned an error status" | ||
| 479 | msgstr "nslookup hat einen Fehler zurückgegeben" | ||
| 480 | |||
| 481 | msgid "Warning plugin error" | ||
| 482 | msgstr "Warnung Plugin Fehler" | ||
| 483 | |||
| 484 | #, fuzzy, c-format | ||
| 485 | msgid "DNS CRITICAL - '%s' returned empty server string\n" | ||
| 486 | msgstr "DNS CRITICAL - '%s' hat einen leeren Hostnamen zurückgegeben\n" | ||
| 487 | |||
| 488 | #, fuzzy, c-format | ||
| 489 | msgid "DNS CRITICAL - No response from DNS %s\n" | ||
| 490 | msgstr "Keine Antwort von DNS %s\n" | ||
| 491 | |||
| 492 | #, c-format | ||
| 493 | msgid "DNS CRITICAL - '%s' returned empty host name string\n" | ||
| 494 | msgstr "DNS CRITICAL - '%s' hat einen leeren Hostnamen zurückgegeben\n" | ||
| 495 | |||
| 496 | msgid "Non-authoritative answer:" | ||
| 497 | msgstr "" | ||
| 498 | |||
| 499 | #, fuzzy, c-format | ||
| 500 | msgid "Domain '%s' was not found by the server\n" | ||
| 501 | msgstr "Domäne %s wurde vom Server nicht gefunden\n" | ||
| 502 | |||
| 503 | #, fuzzy, c-format | ||
| 504 | msgid "DNS CRITICAL - '%s' msg parsing exited with no address\n" | ||
| 505 | msgstr "DNS CRITICAL - '%s' Ausgabeverarbeitung hat keine Adresse ergeben\n" | ||
| 506 | |||
| 507 | #, fuzzy, c-format | ||
| 508 | msgid "expected '%s' but got '%s'" | ||
| 509 | msgstr "Erwartet: %s aber: %s erhalten" | ||
| 510 | |||
| 511 | #, fuzzy, c-format | ||
| 512 | msgid "Domain '%s' was found by the server: '%s'\n" | ||
| 513 | msgstr "Domäne %s wurde vom Server nicht gefunden\n" | ||
| 514 | |||
| 515 | #, c-format | ||
| 516 | msgid "server %s is not authoritative for %s" | ||
| 517 | msgstr "Server %s ist nicht autoritativ für %s" | ||
| 518 | |||
| 519 | #, c-format | ||
| 520 | msgid "OK" | ||
| 521 | msgstr "OK" | ||
| 522 | |||
| 523 | #, c-format | ||
| 524 | msgid "WARNING" | ||
| 525 | msgstr "WARNING" | ||
| 526 | |||
| 527 | #, fuzzy, c-format | ||
| 528 | msgid "%.3f second response time" | ||
| 529 | msgid_plural "%.3f seconds response time" | ||
| 530 | msgstr[0] "%.3f Sekunden Antwortzeit " | ||
| 531 | msgstr[1] "%.3f Sekunden Antwortzeit " | ||
| 532 | |||
| 533 | #, fuzzy, c-format | ||
| 534 | msgid ". %s returns %s" | ||
| 535 | msgstr "%s hat %s zurückgegeben" | ||
| 536 | |||
| 537 | #, c-format | ||
| 538 | msgid "DNS WARNING - %s\n" | ||
| 539 | msgstr "DNS WARNING - %s\n" | ||
| 540 | |||
| 541 | msgid " Probably a non-existent host/domain" | ||
| 542 | msgstr "nicht existierender Host/Domain" | ||
| 543 | |||
| 544 | #, c-format | ||
| 545 | msgid "DNS CRITICAL - %s\n" | ||
| 546 | msgstr "DNS CRITICAL - %s\n" | ||
| 547 | |||
| 548 | #, fuzzy, c-format | ||
| 549 | msgid "DNS UNKNOWN - %s\n" | ||
| 550 | msgstr "DNS UNKNOWN - %s\n" | ||
| 551 | |||
| 552 | msgid "Note: nslookup is deprecated and may be removed from future releases." | ||
| 553 | msgstr "" | ||
| 554 | |||
| 555 | msgid "Consider using the `dig' or `host' programs instead. Run nslookup with" | ||
| 556 | msgstr "" | ||
| 557 | |||
| 558 | msgid "the `-sil[ent]' option to prevent this message from appearing." | ||
| 559 | msgstr "" | ||
| 560 | |||
| 561 | #, c-format | ||
| 562 | msgid "No response from DNS %s\n" | ||
| 563 | msgstr "Keine Antwort von DNS %s\n" | ||
| 564 | |||
| 565 | #, c-format | ||
| 566 | msgid "DNS %s has no records\n" | ||
| 567 | msgstr "Nameserver %s hat keine Datensätze\n" | ||
| 568 | |||
| 569 | #, c-format | ||
| 570 | msgid "Connection to DNS %s was refused\n" | ||
| 571 | msgstr "Verbindung zum Nameserver %s wurde verweigert\n" | ||
| 572 | |||
| 573 | #, c-format | ||
| 574 | msgid "Query was refused by DNS server at %s\n" | ||
| 575 | msgstr "" | ||
| 576 | |||
| 577 | #, c-format | ||
| 578 | msgid "No information returned by DNS server at %s\n" | ||
| 579 | msgstr "" | ||
| 580 | |||
| 581 | msgid "Network is unreachable\n" | ||
| 582 | msgstr "Netzwerk nicht erreichbar\n" | ||
| 583 | |||
| 584 | #, c-format | ||
| 585 | msgid "DNS failure for %s\n" | ||
| 586 | msgstr "DNS Fehler für %s\n" | ||
| 587 | |||
| 588 | msgid "Input buffer overflow\n" | ||
| 589 | msgstr "Eingabe-Pufferüberlauf\n" | ||
| 590 | |||
| 591 | msgid "" | ||
| 592 | "This plugin uses the nslookup program to obtain the IP address for the given " | ||
| 593 | "host/domain query." | ||
| 594 | msgstr "" | ||
| 595 | |||
| 596 | msgid "An optional DNS server to use may be specified." | ||
| 597 | msgstr "" | ||
| 598 | |||
| 599 | msgid "" | ||
| 600 | "If no DNS server is specified, the default server(s) specified in /etc/" | ||
| 601 | "resolv.conf will be used." | ||
| 602 | msgstr "" | ||
| 603 | |||
| 604 | msgid "The name or address you want to query" | ||
| 605 | msgstr "" | ||
| 606 | |||
| 607 | msgid "Optional DNS server you want to use for the lookup" | ||
| 608 | msgstr "" | ||
| 609 | |||
| 610 | msgid "" | ||
| 611 | "Optional IP-ADDRESS/CIDR you expect the DNS server to return. HOST must end" | ||
| 612 | msgstr "" | ||
| 613 | |||
| 614 | msgid "" | ||
| 615 | "with a dot (.). This option can be repeated multiple times (Returns OK if any" | ||
| 616 | msgstr "" | ||
| 617 | |||
| 618 | msgid "value matches)." | ||
| 619 | msgstr "" | ||
| 620 | |||
| 621 | msgid "" | ||
| 622 | "Expect the DNS server to return NXDOMAIN (i.e. the domain was not found)" | ||
| 623 | msgstr "" | ||
| 624 | |||
| 625 | msgid "Cannot be used together with -a" | ||
| 626 | msgstr "" | ||
| 627 | |||
| 628 | msgid "Optionally expect the DNS server to be authoritative for the lookup" | ||
| 629 | msgstr "" | ||
| 630 | |||
| 631 | msgid "Return warning if elapsed time exceeds value. Default off" | ||
| 632 | msgstr "" | ||
| 633 | |||
| 634 | msgid "Return critical if elapsed time exceeds value. Default off" | ||
| 635 | msgstr "" | ||
| 636 | |||
| 637 | msgid "" | ||
| 638 | "Return critical if the list of expected addresses does not match all " | ||
| 639 | "addresses" | ||
| 640 | msgstr "" | ||
| 641 | |||
| 642 | msgid "returned. Default off" | ||
| 643 | msgstr "" | ||
| 644 | |||
| 645 | msgid "Arguments to check_dummy must be an integer" | ||
| 646 | msgstr "Argument für check_dummy muss ein Integer sein" | ||
| 647 | |||
| 648 | #, c-format | ||
| 649 | msgid "Status %d is not a supported error state\n" | ||
| 650 | msgstr "Status %d ist kein bekannter Fehlerstatus\n" | ||
| 651 | |||
| 652 | msgid "" | ||
| 653 | "This plugin will simply return the state corresponding to the numeric value" | ||
| 654 | msgstr "" | ||
| 655 | |||
| 656 | msgid "of the <state> argument with optional text" | ||
| 657 | msgstr "" | ||
| 658 | |||
| 659 | #, c-format | ||
| 660 | msgid "Could not open pipe: %s\n" | ||
| 661 | msgstr "Pipe: %s konnte nicht geöffnet werden\n" | ||
| 662 | |||
| 663 | #, c-format | ||
| 664 | msgid "Could not open stderr for %s\n" | ||
| 665 | msgstr "Konnte stderr nicht öffnen für: %s\n" | ||
| 666 | |||
| 667 | #, fuzzy | ||
| 668 | msgid "FPING UNKNOWN - IP address not found\n" | ||
| 669 | msgstr "FPING UNKNOWN - %s nicht gefunden\n" | ||
| 670 | |||
| 671 | msgid "FPING UNKNOWN - invalid commandline argument\n" | ||
| 672 | msgstr "" | ||
| 673 | |||
| 674 | #, fuzzy | ||
| 675 | msgid "FPING UNKNOWN - failed system call\n" | ||
| 676 | msgstr "FPING UNKNOWN - %s nicht gefunden\n" | ||
| 677 | |||
| 678 | #, fuzzy, c-format | ||
| 679 | msgid "FPING %s - %s (rta=%f ms)|%s\n" | ||
| 680 | msgstr "FPING %s - %s (verloren=%.0f%% )|%s\n" | ||
| 681 | |||
| 682 | #, c-format | ||
| 683 | msgid "FPING UNKNOWN - %s not found\n" | ||
| 684 | msgstr "FPING UNKNOWN - %s nicht gefunden\n" | ||
| 685 | |||
| 686 | #, c-format | ||
| 687 | msgid "FPING CRITICAL - %s is unreachable\n" | ||
| 688 | msgstr "FPING CRITICAL - %s ist nicht erreichbar\n" | ||
| 689 | |||
| 690 | #, fuzzy, c-format | ||
| 691 | msgid "FPING UNKNOWN - %s parameter error\n" | ||
| 692 | msgstr "FPING UNKNOWN - %s nicht gefunden\n" | ||
| 693 | |||
| 694 | #, c-format | ||
| 695 | msgid "FPING CRITICAL - %s is down\n" | ||
| 696 | msgstr "FPING CRITICAL - %s ist down\n" | ||
| 697 | |||
| 698 | #, c-format | ||
| 699 | msgid "FPING %s - %s (loss=%.0f%%, rta=%f ms)|%s %s\n" | ||
| 700 | msgstr "FPING %s - %s (verloren=%.0f%%, rta=%f ms)|%s %s\n" | ||
| 701 | |||
| 702 | #, c-format | ||
| 703 | msgid "FPING %s - %s (loss=%.0f%% )|%s\n" | ||
| 704 | msgstr "FPING %s - %s (verloren=%.0f%% )|%s\n" | ||
| 705 | |||
| 706 | msgid "Invalid hostname/address" | ||
| 707 | msgstr "Ungültige(r) Hostname/Adresse" | ||
| 708 | |||
| 709 | msgid "IPv6 support not available\n" | ||
| 710 | msgstr "" | ||
| 711 | |||
| 712 | msgid "Packet size must be a positive integer" | ||
| 713 | msgstr "Paketgröße muss ein positiver Integer sein" | ||
| 714 | |||
| 715 | msgid "Packet count must be a positive integer" | ||
| 716 | msgstr "Paketanzahl muss ein positiver Integer sein" | ||
| 717 | |||
| 718 | #, fuzzy | ||
| 719 | msgid "Target timeout must be a positive integer" | ||
| 720 | msgstr "Warnung time muss ein positiver Integer sein" | ||
| 721 | |||
| 722 | #, fuzzy | ||
| 723 | msgid "Interval must be a positive integer" | ||
| 724 | msgstr "Timeout interval muss ein positiver Integer sein" | ||
| 725 | |||
| 726 | msgid "Hostname was not supplied" | ||
| 727 | msgstr "" | ||
| 728 | |||
| 729 | #, c-format | ||
| 730 | msgid "%s: Only one threshold may be packet loss (%s)\n" | ||
| 731 | msgstr "%s: Nur ein Wert darf für packet loss angegeben werden (%s)\n" | ||
| 732 | |||
| 733 | #, c-format | ||
| 734 | msgid "%s: Only one threshold must be packet loss (%s)\n" | ||
| 735 | msgstr "%s: Nur ein Wert darf für packet loss angegeben werden (%s)\n" | ||
| 736 | |||
| 737 | msgid "" | ||
| 738 | "This plugin will use the fping command to ping the specified host for a fast " | ||
| 739 | "check" | ||
| 740 | msgstr "" | ||
| 741 | |||
| 742 | msgid "Note that it is necessary to set the suid flag on fping." | ||
| 743 | msgstr "" | ||
| 744 | |||
| 745 | msgid "" | ||
| 746 | "name or IP Address of host to ping (IP Address bypasses name lookup, " | ||
| 747 | "reducing system load)" | ||
| 748 | msgstr "" | ||
| 749 | |||
| 750 | #, fuzzy | ||
| 751 | msgid "warning threshold pair" | ||
| 752 | msgstr "Warning threshold Integer sein" | ||
| 753 | |||
| 754 | #, fuzzy | ||
| 755 | msgid "critical threshold pair" | ||
| 756 | msgstr "Critical threshold muss ein Integer sein" | ||
| 757 | |||
| 758 | msgid "Return OK after first successful reply" | ||
| 759 | msgstr "" | ||
| 760 | |||
| 761 | msgid "size of ICMP packet" | ||
| 762 | msgstr "" | ||
| 763 | |||
| 764 | msgid "number of ICMP packets to send" | ||
| 765 | msgstr "" | ||
| 766 | |||
| 767 | msgid "Target timeout (ms)" | ||
| 768 | msgstr "" | ||
| 769 | |||
| 770 | msgid "Interval (ms) between sending packets" | ||
| 771 | msgstr "" | ||
| 772 | |||
| 773 | msgid "name or IP Address of sourceip" | ||
| 774 | msgstr "" | ||
| 775 | |||
| 776 | msgid "source interface name" | ||
| 777 | msgstr "" | ||
| 778 | |||
| 779 | #, c-format | ||
| 780 | msgid "" | ||
| 781 | "THRESHOLD is <rta>,<pl>%% where <rta> is the round trip average travel time " | ||
| 782 | "(ms)" | ||
| 783 | msgstr "" | ||
| 784 | |||
| 785 | msgid "" | ||
| 786 | "which triggers a WARNING or CRITICAL state, and <pl> is the percentage of" | ||
| 787 | msgstr "" | ||
| 788 | |||
| 789 | msgid "packet loss to trigger an alarm state." | ||
| 790 | msgstr "" | ||
| 791 | |||
| 792 | msgid "IPv4 is used by default. Specify -6 to use IPv6." | ||
| 793 | msgstr "" | ||
| 794 | |||
| 795 | #, c-format | ||
| 796 | msgid "CRITICAL - Host type parameter incorrect!\n" | ||
| 797 | msgstr "CRITICAL - Host type parameter unkorrekt!\n" | ||
| 798 | |||
| 799 | #, fuzzy, c-format | ||
| 800 | msgid "CRITICAL - Host not found\n" | ||
| 801 | msgstr "CRITICAL - Text nicht gefunden%s|%s %s\n" | ||
| 802 | |||
| 803 | #, fuzzy, c-format | ||
| 804 | msgid "CRITICAL - Game server down or unavailable\n" | ||
| 805 | msgstr "CRITICAL - Serverdatum \"%100s\" konnte nicht verarbeitet werden" | ||
| 806 | |||
| 807 | #, fuzzy, c-format | ||
| 808 | msgid "CRITICAL - Game server timeout\n" | ||
| 809 | msgstr "CRITICAL - Konnte kein Serverzertifikat erhalten\n" | ||
| 810 | |||
| 811 | #, c-format | ||
| 812 | msgid "This plugin tests game server connections with the specified host." | ||
| 813 | msgstr "Dieses plugin testet Gameserververbindungen zum angegebenen Host." | ||
| 814 | |||
| 815 | msgid "Optional port of which to connect" | ||
| 816 | msgstr "" | ||
| 817 | |||
| 818 | msgid "Field number in raw qstat output that contains game name" | ||
| 819 | msgstr "" | ||
| 820 | |||
| 821 | msgid "Field number in raw qstat output that contains map name" | ||
| 822 | msgstr "" | ||
| 823 | |||
| 824 | msgid "Field number in raw qstat output that contains ping time" | ||
| 825 | msgstr "" | ||
| 826 | |||
| 827 | #, fuzzy | ||
| 828 | msgid "" | ||
| 829 | "This plugin uses the 'qstat' command, the popular game server status query " | ||
| 830 | "tool." | ||
| 831 | msgstr "Dieses plugin testet Gameserververbindungen zum angegebenen Host." | ||
| 832 | |||
| 833 | msgid "" | ||
| 834 | "If you don't have the package installed, you will need to download it from" | ||
| 835 | msgstr "" | ||
| 836 | |||
| 837 | msgid "https://github.com/multiplay/qstat before you can use this plugin." | ||
| 838 | msgstr "" | ||
| 839 | |||
| 840 | msgid "Paper Jam" | ||
| 841 | msgstr "Papierstau" | ||
| 842 | |||
| 843 | msgid "Out of Paper" | ||
| 844 | msgstr "Kein Papier" | ||
| 845 | |||
| 846 | msgid "Printer Offline" | ||
| 847 | msgstr "Drucker ausgeschaltet" | ||
| 848 | |||
| 849 | msgid "Peripheral Error" | ||
| 850 | msgstr "Peripheriefehler" | ||
| 851 | |||
| 852 | msgid "Intervention Required" | ||
| 853 | msgstr "Eingriff benötigt" | ||
| 854 | |||
| 855 | msgid "Toner Low" | ||
| 856 | msgstr "Wenig Toner" | ||
| 857 | |||
| 858 | msgid "Insufficient Memory" | ||
| 859 | msgstr "Nicht genügend Speicher" | ||
| 860 | |||
| 861 | msgid "A Door is Open" | ||
| 862 | msgstr "Eine Abdeckung ist offen" | ||
| 863 | |||
| 864 | msgid "Output Tray is Full" | ||
| 865 | msgstr "Ausgabeschacht ist voll" | ||
| 866 | |||
| 867 | msgid "Data too Slow for Engine" | ||
| 868 | msgstr "" | ||
| 869 | |||
| 870 | msgid "Unknown Paper Error" | ||
| 871 | msgstr "Papierfehler" | ||
| 872 | |||
| 873 | #, c-format | ||
| 874 | msgid "Printer ok - (%s)\n" | ||
| 875 | msgstr "Printer ok - (%s)\n" | ||
| 876 | |||
| 877 | #, fuzzy | ||
| 878 | msgid "Port must be a positive short integer" | ||
| 879 | msgstr "Port muss ein positiver Integer sein" | ||
| 880 | |||
| 881 | #, fuzzy | ||
| 882 | msgid "This plugin tests the STATUS of an HP printer with a JetDirect card." | ||
| 883 | msgstr "" | ||
| 884 | "Dieses Plugin testet den STATUS eines HP Druckers mit einer JetDirect " | ||
| 885 | "Karte.\n" | ||
| 886 | "Net-snmp muss auf dem ausführenden Computer installiert sein.\n" | ||
| 887 | "\n" | ||
| 888 | |||
| 889 | #, fuzzy | ||
| 890 | msgid "Net-snmp must be installed on the computer running the plugin." | ||
| 891 | msgstr "" | ||
| 892 | "Dieses Plugin testet den STATUS eines HP Druckers mit einer JetDirect " | ||
| 893 | "Karte.\n" | ||
| 894 | "Net-snmp muss auf dem ausführenden Computer installiert sein.\n" | ||
| 895 | "\n" | ||
| 896 | |||
| 897 | msgid "The SNMP community name " | ||
| 898 | msgstr "" | ||
| 899 | |||
| 900 | #, c-format | ||
| 901 | msgid "(default=%s)" | ||
| 902 | msgstr "" | ||
| 903 | |||
| 904 | msgid "Specify the port to check " | ||
| 905 | msgstr "" | ||
| 906 | |||
| 907 | msgid "Disable paper check " | ||
| 908 | msgstr "" | ||
| 909 | |||
| 910 | msgid "file does not exist or is not readable" | ||
| 911 | msgstr "" | ||
| 912 | |||
| 913 | msgid "Invalid certificate expiration period" | ||
| 914 | msgstr "Ungültiger Zertifikatsablauftermin" | ||
| 915 | |||
| 916 | msgid "" | ||
| 917 | "Invalid option - Valid SSL/TLS versions: 2, 3, 1, 1.1, 1.2 (with optional " | ||
| 918 | "'+' suffix)" | ||
| 919 | msgstr "" | ||
| 920 | |||
| 921 | #, fuzzy | ||
| 922 | msgid "Invalid option - SSL is not available" | ||
| 923 | msgstr "Ungültige Option - SSL ist nicht verfügbar\n" | ||
| 924 | |||
| 925 | msgid "Invalid max_redirs count" | ||
| 926 | msgstr "" | ||
| 927 | |||
| 928 | msgid "Invalid onredirect option" | ||
| 929 | msgstr "" | ||
| 930 | |||
| 931 | #, c-format | ||
| 932 | msgid "option f:%d \n" | ||
| 933 | msgstr "Option f:%d \n" | ||
| 934 | |||
| 935 | msgid "Invalid port number" | ||
| 936 | msgstr "Ungültige Portnummer" | ||
| 937 | |||
| 938 | #, c-format | ||
| 939 | msgid "Could Not Compile Regular Expression: %s" | ||
| 940 | msgstr "" | ||
| 941 | |||
| 942 | msgid "IPv6 support not available" | ||
| 943 | msgstr "IPv6 Unterstützung nicht vorhanden" | ||
| 944 | |||
| 945 | msgid "You must specify a server address or host name" | ||
| 946 | msgstr "Hostname oder Serveradresse muss angegeben werden" | ||
| 947 | |||
| 948 | msgid "" | ||
| 949 | "If you use a client certificate you must also specify a private key file" | ||
| 950 | msgstr "" | ||
| 951 | |||
| 952 | #, fuzzy | ||
| 953 | msgid "HTTP UNKNOWN - Memory allocation error\n" | ||
| 954 | msgstr "HTTP UNKNOWN - Konnte·url·nicht·zuweisen\n" | ||
| 955 | |||
| 956 | #, fuzzy, c-format | ||
| 957 | msgid "%sServer date unknown, " | ||
| 958 | msgstr "HTTP UNKNOWN - Serverdatum unbekannt\n" | ||
| 959 | |||
| 960 | #, fuzzy, c-format | ||
| 961 | msgid "%sDocument modification date unknown, " | ||
| 962 | msgstr "HTTP CRITICAL - Datum der letzten Änderung unbekannt\n" | ||
| 963 | |||
| 964 | #, fuzzy, c-format | ||
| 965 | msgid "%sServer date \"%100s\" unparsable, " | ||
| 966 | msgstr "HTTP CRITICAL - Serverdatum \"%100s\" konnte nicht verarbeitet werden" | ||
| 967 | |||
| 968 | #, fuzzy, c-format | ||
| 969 | msgid "%sDocument date \"%100s\" unparsable, " | ||
| 970 | msgstr "" | ||
| 971 | "HTTP CRITICAL - Dokumentendatum \"%100s\" konnte nicht verarbeitet werden" | ||
| 972 | |||
| 973 | #, fuzzy, c-format | ||
| 974 | msgid "%sDocument is %d seconds in the future, " | ||
| 975 | msgstr "HTTP CRITICAL - Dokumentendatum ist %d Sekunden in der Zukunft\n" | ||
| 976 | |||
| 977 | #, fuzzy, c-format | ||
| 978 | msgid "%sLast modified %.1f days ago, " | ||
| 979 | msgstr "HTTP CRITICAL - Letzte Änderung vor %.1f Tagen\n" | ||
| 980 | |||
| 981 | #, fuzzy, c-format | ||
| 982 | msgid "%sLast modified %d:%02d:%02d ago, " | ||
| 983 | msgstr "HTTP CRITICAL - Letzte Änderung vor %d:%02d:%02d \n" | ||
| 984 | |||
| 985 | msgid "HTTP CRITICAL - Unable to open TCP socket\n" | ||
| 986 | msgstr "HTTP CRITICAL - Konnte TCP socket nicht öffnen\n" | ||
| 987 | |||
| 988 | #, fuzzy | ||
| 989 | msgid "HTTP UNKNOWN - Could not allocate memory for full_page\n" | ||
| 990 | msgstr "HTTP UNKNOWN - Konnte·url·nicht·zuweisen\n" | ||
| 991 | |||
| 992 | msgid "HTTP CRITICAL - Error on receive\n" | ||
| 993 | msgstr "HTTP CRITICAL - Fehler beim Empfangen\n" | ||
| 994 | |||
| 995 | #, fuzzy | ||
| 996 | msgid "HTTP CRITICAL - No data received from host\n" | ||
| 997 | msgstr "HTTP CRITICAL - Keine Daten empfangen\n" | ||
| 998 | |||
| 999 | #, fuzzy, c-format | ||
| 1000 | msgid "Invalid HTTP response received from host: %s\n" | ||
| 1001 | msgstr "Ungültige HTTP Antwort von Host empfangen\n" | ||
| 1002 | |||
| 1003 | #, fuzzy, c-format | ||
| 1004 | msgid "Invalid HTTP response received from host on port %d: %s\n" | ||
| 1005 | msgstr "Ungültige HTTP Antwort von Host erhalten auf Port %d\n" | ||
| 1006 | |||
| 1007 | #, c-format | ||
| 1008 | msgid "" | ||
| 1009 | "%s\n" | ||
| 1010 | "%s" | ||
| 1011 | msgstr "" | ||
| 1012 | |||
| 1013 | #, fuzzy, c-format | ||
| 1014 | msgid "Status line output matched \"%s\" - " | ||
| 1015 | msgstr "HTTP OK: Statusausgabe passt auf \"%s\"\n" | ||
| 1016 | |||
| 1017 | #, c-format | ||
| 1018 | msgid "HTTP CRITICAL: Invalid Status Line (%s)\n" | ||
| 1019 | msgstr "HTTP CRITICAL: Ungültige Statusmeldung (%s)\n" | ||
| 1020 | |||
| 1021 | #, c-format | ||
| 1022 | msgid "HTTP CRITICAL: Invalid Status (%s)\n" | ||
| 1023 | msgstr "HTTP CRITICAL: Ungültiger Status (%s)\n" | ||
| 1024 | |||
| 1025 | #, c-format | ||
| 1026 | msgid "%s - " | ||
| 1027 | msgstr "" | ||
| 1028 | |||
| 1029 | #, fuzzy, c-format | ||
| 1030 | msgid "%sheader '%s' not found on '%s://%s:%d%s', " | ||
| 1031 | msgstr "CRITICAL - Muster nicht gefunden%s|%s %s\n" | ||
| 1032 | |||
| 1033 | #, fuzzy, c-format | ||
| 1034 | msgid "%sstring '%s' not found on '%s://%s:%d%s', " | ||
| 1035 | msgstr "CRITICAL - Muster nicht gefunden%s|%s %s\n" | ||
| 1036 | |||
| 1037 | #, fuzzy, c-format | ||
| 1038 | msgid "%spattern not found, " | ||
| 1039 | msgstr "CRITICAL - Muster nicht gefunden%s|%s %s\n" | ||
| 1040 | |||
| 1041 | #, fuzzy, c-format | ||
| 1042 | msgid "%spattern found, " | ||
| 1043 | msgstr "CRITICAL - Muster nicht gefunden%s|%s %s\n" | ||
| 1044 | |||
| 1045 | #, fuzzy, c-format | ||
| 1046 | msgid "%sExecute Error: %s, " | ||
| 1047 | msgstr "HTTP CRITICAL - Fehler: %s\n" | ||
| 1048 | |||
| 1049 | #, fuzzy, c-format | ||
| 1050 | msgid "%spage size %d too large, " | ||
| 1051 | msgstr "HTTP WARNING: Seitengröße %d zu klein%s|%s\n" | ||
| 1052 | |||
| 1053 | #, fuzzy, c-format | ||
| 1054 | msgid "%spage size %d too small, " | ||
| 1055 | msgstr "HTTP WARNING: Seitengröße %d zu klein%s|%s\n" | ||
| 1056 | |||
| 1057 | #, fuzzy, c-format | ||
| 1058 | msgid "%s - %d bytes in %.3f second response time %s|%s %s %s %s %s %s %s" | ||
| 1059 | msgstr " - %s - %.3f Sekunden Antwortzeit %s%s|%s %s\n" | ||
| 1060 | |||
| 1061 | #, fuzzy, c-format | ||
| 1062 | msgid "%s - %d bytes in %.3f second response time %s|%s %s" | ||
| 1063 | msgstr " - %s - %.3f Sekunden Antwortzeit %s%s|%s %s\n" | ||
| 1064 | |||
| 1065 | msgid "HTTP UNKNOWN - Could not allocate addr\n" | ||
| 1066 | msgstr "HTTP UNKNOWN - Konnte addr nicht zuweisen\n" | ||
| 1067 | |||
| 1068 | #, fuzzy | ||
| 1069 | msgid "HTTP UNKNOWN - Could not allocate URL\n" | ||
| 1070 | msgstr "HTTP UNKNOWN - Konnte·url·nicht·zuweisen\n" | ||
| 1071 | |||
| 1072 | #, c-format | ||
| 1073 | msgid "HTTP UNKNOWN - Could not find redirect location - %s%s\n" | ||
| 1074 | msgstr "" | ||
| 1075 | |||
| 1076 | #, fuzzy, c-format | ||
| 1077 | msgid "HTTP UNKNOWN - Empty redirect location%s\n" | ||
| 1078 | msgstr "HTTP UNKNOWN - Serverdatum unbekannt\n" | ||
| 1079 | |||
| 1080 | #, c-format | ||
| 1081 | msgid "HTTP UNKNOWN - Could not parse redirect location - %s%s\n" | ||
| 1082 | msgstr "" | ||
| 1083 | |||
| 1084 | #, fuzzy, c-format | ||
| 1085 | msgid "HTTP WARNING - maximum redirection depth %d exceeded - %s://%s:%d%s%s\n" | ||
| 1086 | msgstr "HTTP WARNING - Umleitung verursacht eine Schleife - %s://%s:%d%s%s\n" | ||
| 1087 | |||
| 1088 | #, fuzzy, c-format | ||
| 1089 | msgid "HTTP CRITICAL - redirection creates an infinite loop - %s://%s:%d%s%s\n" | ||
| 1090 | msgstr "HTTP WARNING - Umleitung verursacht eine Schleife - %s://%s:%d%s%s\n" | ||
| 1091 | |||
| 1092 | #, fuzzy, c-format | ||
| 1093 | msgid "HTTP UNKNOWN - Redirection to port above %d - %s://%s:%d%s%s\n" | ||
| 1094 | msgstr "HTTP WARNING - Umleitung verursacht eine Schleife - %s://%s:%d%s%s\n" | ||
| 1095 | |||
| 1096 | #, c-format | ||
| 1097 | msgid "Redirection to %s://%s:%d%s\n" | ||
| 1098 | msgstr "" | ||
| 1099 | |||
| 1100 | #, fuzzy | ||
| 1101 | msgid "This plugin tests the HTTP service on the specified host. It can test" | ||
| 1102 | msgstr "" | ||
| 1103 | "Testet den DNS Dienst auf dem angegebenen Host mit dig\n" | ||
| 1104 | "\n" | ||
| 1105 | |||
| 1106 | msgid "normal (http) and secure (https) servers, follow redirects, search for" | ||
| 1107 | msgstr "" | ||
| 1108 | |||
| 1109 | msgid "strings and regular expressions, check connection times, and report on" | ||
| 1110 | msgstr "" | ||
| 1111 | |||
| 1112 | #, fuzzy | ||
| 1113 | msgid "certificate expiration times." | ||
| 1114 | msgstr "Clientzertifikat benötigt\n" | ||
| 1115 | |||
| 1116 | #, c-format | ||
| 1117 | msgid "In the first form, make an HTTP request." | ||
| 1118 | msgstr "" | ||
| 1119 | |||
| 1120 | #, c-format | ||
| 1121 | msgid "" | ||
| 1122 | "In the second form, connect to the server and check the TLS certificate." | ||
| 1123 | msgstr "" | ||
| 1124 | |||
| 1125 | #, c-format | ||
| 1126 | msgid "NOTE: One or both of -H and -I must be specified" | ||
| 1127 | msgstr "" | ||
| 1128 | |||
| 1129 | msgid "Host name argument for servers using host headers (virtual host)" | ||
| 1130 | msgstr "" | ||
| 1131 | |||
| 1132 | msgid "Append a port to include it in the header (eg: example.com:5000)" | ||
| 1133 | msgstr "" | ||
| 1134 | |||
| 1135 | msgid "" | ||
| 1136 | "IP address or name (use numeric address if possible to bypass DNS lookup)." | ||
| 1137 | msgstr "" | ||
| 1138 | |||
| 1139 | msgid "Port number (default: " | ||
| 1140 | msgstr "" | ||
| 1141 | |||
| 1142 | msgid "" | ||
| 1143 | "Connect via SSL. Port defaults to 443. VERSION is optional, and prevents" | ||
| 1144 | msgstr "" | ||
| 1145 | |||
| 1146 | msgid "auto-negotiation (2 = SSLv2, 3 = SSLv3, 1 = TLSv1, 1.1 = TLSv1.1," | ||
| 1147 | msgstr "" | ||
| 1148 | |||
| 1149 | msgid "1.2 = TLSv1.2). With a '+' suffix, newer versions are also accepted." | ||
| 1150 | msgstr "" | ||
| 1151 | |||
| 1152 | msgid "Enable SSL/TLS hostname extension support (SNI)" | ||
| 1153 | msgstr "" | ||
| 1154 | |||
| 1155 | msgid "" | ||
| 1156 | "Minimum number of days a certificate has to be valid. Port defaults to 443" | ||
| 1157 | msgstr "" | ||
| 1158 | |||
| 1159 | msgid "" | ||
| 1160 | "(when this option is used the URL is not checked by default. You can use" | ||
| 1161 | msgstr "" | ||
| 1162 | |||
| 1163 | msgid " --continue-after-certificate to override this behavior)" | ||
| 1164 | msgstr "" | ||
| 1165 | |||
| 1166 | msgid "" | ||
| 1167 | "Allows the HTTP check to continue after performing the certificate check." | ||
| 1168 | msgstr "" | ||
| 1169 | |||
| 1170 | msgid "Does nothing unless -C is used." | ||
| 1171 | msgstr "" | ||
| 1172 | |||
| 1173 | msgid "Name of file that contains the client certificate (PEM format)" | ||
| 1174 | msgstr "" | ||
| 1175 | |||
| 1176 | msgid "to be used in establishing the SSL session" | ||
| 1177 | msgstr "" | ||
| 1178 | |||
| 1179 | msgid "Name of file containing the private key (PEM format)" | ||
| 1180 | msgstr "" | ||
| 1181 | |||
| 1182 | msgid "matching the client certificate" | ||
| 1183 | msgstr "" | ||
| 1184 | |||
| 1185 | msgid "Comma-delimited list of strings, at least one of them is expected in" | ||
| 1186 | msgstr "" | ||
| 1187 | |||
| 1188 | msgid "the first (status) line of the server response (default: " | ||
| 1189 | msgstr "" | ||
| 1190 | |||
| 1191 | msgid "" | ||
| 1192 | "If specified skips all other status line logic (ex: 3xx, 4xx, 5xx processing)" | ||
| 1193 | msgstr "" | ||
| 1194 | |||
| 1195 | msgid "String to expect in the response headers" | ||
| 1196 | msgstr "" | ||
| 1197 | |||
| 1198 | msgid "String to expect in the content" | ||
| 1199 | msgstr "" | ||
| 1200 | |||
| 1201 | msgid "URL to GET or POST (default: /)" | ||
| 1202 | msgstr "" | ||
| 1203 | |||
| 1204 | msgid "URL encoded http POST data" | ||
| 1205 | msgstr "" | ||
| 1206 | |||
| 1207 | msgid "Set HTTP method." | ||
| 1208 | msgstr "" | ||
| 1209 | |||
| 1210 | msgid "Don't wait for document body: stop reading after headers." | ||
| 1211 | msgstr "" | ||
| 1212 | |||
| 1213 | msgid "(Note that this still does an HTTP GET or POST, not a HEAD.)" | ||
| 1214 | msgstr "" | ||
| 1215 | |||
| 1216 | msgid "Warn if document is more than SECONDS old. the number can also be of" | ||
| 1217 | msgstr "" | ||
| 1218 | |||
| 1219 | msgid "the form \"10m\" for minutes, \"10h\" for hours, or \"10d\" for days." | ||
| 1220 | msgstr "" | ||
| 1221 | |||
| 1222 | msgid "specify Content-Type header media type when POSTing\n" | ||
| 1223 | msgstr "" | ||
| 1224 | |||
| 1225 | msgid "Allow regex to span newlines (must precede -r or -R)" | ||
| 1226 | msgstr "" | ||
| 1227 | |||
| 1228 | msgid "Search page for regex STRING" | ||
| 1229 | msgstr "" | ||
| 1230 | |||
| 1231 | msgid "Search page for case-insensitive regex STRING" | ||
| 1232 | msgstr "" | ||
| 1233 | |||
| 1234 | msgid "Return CRITICAL if found, OK if not\n" | ||
| 1235 | msgstr "" | ||
| 1236 | |||
| 1237 | msgid "Username:password on sites with basic authentication" | ||
| 1238 | msgstr "" | ||
| 1239 | |||
| 1240 | msgid "Username:password on proxy-servers with basic authentication" | ||
| 1241 | msgstr "" | ||
| 1242 | |||
| 1243 | msgid "String to be sent in http header as \"User Agent\"" | ||
| 1244 | msgstr "" | ||
| 1245 | |||
| 1246 | msgid "" | ||
| 1247 | "Any other tags to be sent in http header. Use multiple times for additional " | ||
| 1248 | "headers" | ||
| 1249 | msgstr "" | ||
| 1250 | |||
| 1251 | msgid "Print additional performance data" | ||
| 1252 | msgstr "" | ||
| 1253 | |||
| 1254 | msgid "Print body content below status line" | ||
| 1255 | msgstr "" | ||
| 1256 | |||
| 1257 | msgid "Wrap output in HTML link (obsoleted by urlize)" | ||
| 1258 | msgstr "" | ||
| 1259 | |||
| 1260 | msgid "How to handle redirected pages. sticky is like follow but stick to the" | ||
| 1261 | msgstr "" | ||
| 1262 | |||
| 1263 | msgid "specified IP address. stickyport also ensures port stays the same." | ||
| 1264 | msgstr "" | ||
| 1265 | |||
| 1266 | #, fuzzy | ||
| 1267 | msgid "Maximal number of redirects (default: " | ||
| 1268 | msgstr "Ungültige Portnummer" | ||
| 1269 | |||
| 1270 | msgid "Minimum page size required (bytes) : Maximum page size required (bytes)" | ||
| 1271 | msgstr "" | ||
| 1272 | |||
| 1273 | #, fuzzy | ||
| 1274 | msgid "This plugin will attempt to open an HTTP connection with the host." | ||
| 1275 | msgstr "Dieses plugin testet Gameserververbindungen zum angegebenen Host." | ||
| 1276 | |||
| 1277 | msgid "" | ||
| 1278 | "Successful connects return STATE_OK, refusals and timeouts return " | ||
| 1279 | "STATE_CRITICAL" | ||
| 1280 | msgstr "" | ||
| 1281 | |||
| 1282 | msgid "" | ||
| 1283 | "other errors return STATE_UNKNOWN. Successful connects, but incorrect " | ||
| 1284 | "response" | ||
| 1285 | msgstr "" | ||
| 1286 | |||
| 1287 | msgid "" | ||
| 1288 | "messages from the host result in STATE_WARNING return values. If you are" | ||
| 1289 | msgstr "" | ||
| 1290 | |||
| 1291 | msgid "" | ||
| 1292 | "checking a virtual server that uses 'host headers' you must supply the FQDN" | ||
| 1293 | msgstr "" | ||
| 1294 | |||
| 1295 | msgid "(fully qualified domain name) as the [host_name] argument." | ||
| 1296 | msgstr "" | ||
| 1297 | |||
| 1298 | msgid "This plugin can also check whether an SSL enabled web server is able to" | ||
| 1299 | msgstr "" | ||
| 1300 | |||
| 1301 | msgid "serve content (optionally within a specified time) or whether the X509 " | ||
| 1302 | msgstr "" | ||
| 1303 | |||
| 1304 | msgid "certificate is still valid for the specified number of days." | ||
| 1305 | msgstr "" | ||
| 1306 | |||
| 1307 | #, fuzzy | ||
| 1308 | msgid "Please note that this plugin does not check if the presented server" | ||
| 1309 | msgstr "" | ||
| 1310 | "Testet den DNS Dienst auf dem angegebenen Host mit dig\n" | ||
| 1311 | "\n" | ||
| 1312 | |||
| 1313 | msgid "certificate matches the hostname of the server, or if the certificate" | ||
| 1314 | msgstr "" | ||
| 1315 | |||
| 1316 | msgid "has a valid chain of trust to one of the locally installed CAs." | ||
| 1317 | msgstr "" | ||
| 1318 | |||
| 1319 | msgid "" | ||
| 1320 | "When the 'www.verisign.com' server returns its content within 5 seconds," | ||
| 1321 | msgstr "" | ||
| 1322 | |||
| 1323 | msgid "" | ||
| 1324 | "a STATE_OK will be returned. When the server returns its content but exceeds" | ||
| 1325 | msgstr "" | ||
| 1326 | |||
| 1327 | msgid "" | ||
| 1328 | "the 5-second threshold, a STATE_WARNING will be returned. When an error " | ||
| 1329 | "occurs," | ||
| 1330 | msgstr "" | ||
| 1331 | |||
| 1332 | msgid "a STATE_CRITICAL will be returned." | ||
| 1333 | msgstr "" | ||
| 1334 | |||
| 1335 | msgid "" | ||
| 1336 | "When the certificate of 'www.verisign.com' is valid for more than 14 days," | ||
| 1337 | msgstr "" | ||
| 1338 | |||
| 1339 | msgid "" | ||
| 1340 | "a STATE_OK is returned. When the certificate is still valid, but for less " | ||
| 1341 | "than" | ||
| 1342 | msgstr "" | ||
| 1343 | |||
| 1344 | msgid "" | ||
| 1345 | "14 days, a STATE_WARNING is returned. A STATE_CRITICAL will be returned when" | ||
| 1346 | msgstr "" | ||
| 1347 | |||
| 1348 | #, fuzzy | ||
| 1349 | msgid "the certificate is expired." | ||
| 1350 | msgstr "Clientzertifikat benötigt\n" | ||
| 1351 | |||
| 1352 | msgid "" | ||
| 1353 | "When the certificate of 'www.verisign.com' is valid for more than 30 days," | ||
| 1354 | msgstr "" | ||
| 1355 | |||
| 1356 | msgid "30 days, but more than 14 days, a STATE_WARNING is returned." | ||
| 1357 | msgstr "" | ||
| 1358 | |||
| 1359 | msgid "" | ||
| 1360 | "A STATE_CRITICAL will be returned when certificate expires in less than 14 " | ||
| 1361 | "days" | ||
| 1362 | msgstr "" | ||
| 1363 | |||
| 1364 | msgid "" | ||
| 1365 | "check_http -I 192.168.100.35 -p 80 -u https://www.verisign.com/ -S -j " | ||
| 1366 | "CONNECT -H www.verisign.com " | ||
| 1367 | msgstr "" | ||
| 1368 | |||
| 1369 | msgid "" | ||
| 1370 | "all these options are needed: -I <proxy> -p <proxy-port> -u <check-url> -" | ||
| 1371 | "S(sl) -j CONNECT -H <webserver>" | ||
| 1372 | msgstr "" | ||
| 1373 | |||
| 1374 | msgid "" | ||
| 1375 | "a STATE_CRITICAL will be returned. By adding a colon to the method you can " | ||
| 1376 | "set the method used" | ||
| 1377 | msgstr "" | ||
| 1378 | |||
| 1379 | msgid "inside the proxied connection: -j CONNECT:POST" | ||
| 1380 | msgstr "" | ||
| 1381 | |||
| 1382 | #, c-format | ||
| 1383 | msgid "Could not connect to the server at port %i\n" | ||
| 1384 | msgstr "" | ||
| 1385 | |||
| 1386 | #, c-format | ||
| 1387 | msgid "Could not set protocol version %d\n" | ||
| 1388 | msgstr "" | ||
| 1389 | |||
| 1390 | #, fuzzy, c-format | ||
| 1391 | msgid "Could not init TLS at port %i!\n" | ||
| 1392 | msgstr "Konnte stderr nicht öffnen für: %s\n" | ||
| 1393 | |||
| 1394 | #, c-format | ||
| 1395 | msgid "TLS not supported by the libraries!\n" | ||
| 1396 | msgstr "" | ||
| 1397 | |||
| 1398 | #, fuzzy, c-format | ||
| 1399 | msgid "Could not init startTLS at port %i!\n" | ||
| 1400 | msgstr "Konnte stderr nicht öffnen für: %s\n" | ||
| 1401 | |||
| 1402 | #, c-format | ||
| 1403 | msgid "startTLS not supported by the library, needs LDAPv3!\n" | ||
| 1404 | msgstr "" | ||
| 1405 | |||
| 1406 | #, c-format | ||
| 1407 | msgid "Could not bind to the LDAP server\n" | ||
| 1408 | msgstr "" | ||
| 1409 | |||
| 1410 | #, c-format | ||
| 1411 | msgid "Could not search/find objectclasses in %s\n" | ||
| 1412 | msgstr "" | ||
| 1413 | |||
| 1414 | #, fuzzy, c-format | ||
| 1415 | msgid "LDAP %s - found %d entries in %.3f seconds|%s %s\n" | ||
| 1416 | msgstr "HTTP OK %s - %.3f Sekunde Antwortzeit %s%s|%s %s\n" | ||
| 1417 | |||
| 1418 | #, c-format | ||
| 1419 | msgid "LDAP %s - %.3f seconds response time|%s\n" | ||
| 1420 | msgstr "" | ||
| 1421 | |||
| 1422 | #, c-format | ||
| 1423 | msgid "%s cannot be combined with %s" | ||
| 1424 | msgstr "" | ||
| 1425 | |||
| 1426 | msgid "Please specify the host name\n" | ||
| 1427 | msgstr "" | ||
| 1428 | |||
| 1429 | msgid "Please specify the LDAP base\n" | ||
| 1430 | msgstr "" | ||
| 1431 | |||
| 1432 | msgid "ldap attribute to search (default: \"(objectclass=*)\"" | ||
| 1433 | msgstr "" | ||
| 1434 | |||
| 1435 | msgid "ldap base (eg. ou=my unit, o=my org, c=at" | ||
| 1436 | msgstr "" | ||
| 1437 | |||
| 1438 | msgid "ldap bind DN (if required)" | ||
| 1439 | msgstr "" | ||
| 1440 | |||
| 1441 | msgid "" | ||
| 1442 | "ldap password (if required, or set the password through environment variable " | ||
| 1443 | "'LDAP_PASSWORD')" | ||
| 1444 | msgstr "" | ||
| 1445 | |||
| 1446 | msgid "use starttls mechanism introduced in protocol version 3" | ||
| 1447 | msgstr "" | ||
| 1448 | |||
| 1449 | msgid "use ldaps (ldap v2 ssl method). this also sets the default port to" | ||
| 1450 | msgstr "" | ||
| 1451 | |||
| 1452 | msgid "use ldap protocol version 2" | ||
| 1453 | msgstr "" | ||
| 1454 | |||
| 1455 | msgid "use ldap protocol version 3" | ||
| 1456 | msgstr "" | ||
| 1457 | |||
| 1458 | msgid "default protocol version:" | ||
| 1459 | msgstr "" | ||
| 1460 | |||
| 1461 | msgid "Number of found entries to result in warning status" | ||
| 1462 | msgstr "" | ||
| 1463 | |||
| 1464 | msgid "Number of found entries to result in critical status" | ||
| 1465 | msgstr "" | ||
| 1466 | |||
| 1467 | msgid "If this plugin is called via 'check_ldaps', method 'STARTTLS' will be" | ||
| 1468 | msgstr "" | ||
| 1469 | |||
| 1470 | #, c-format | ||
| 1471 | msgid "" | ||
| 1472 | " implied (using default port %i) unless --port=636 is specified. In that " | ||
| 1473 | "case\n" | ||
| 1474 | msgstr "" | ||
| 1475 | |||
| 1476 | msgid "'SSL on connect' will be used no matter how the plugin was called." | ||
| 1477 | msgstr "" | ||
| 1478 | |||
| 1479 | msgid "" | ||
| 1480 | "This detection is deprecated, please use 'check_ldap' with the '--starttls' " | ||
| 1481 | "or '--ssl' flags" | ||
| 1482 | msgstr "" | ||
| 1483 | |||
| 1484 | msgid "to define the behaviour explicitly instead." | ||
| 1485 | msgstr "" | ||
| 1486 | |||
| 1487 | msgid "The parameters --warn-entries and --crit-entries are optional." | ||
| 1488 | msgstr "" | ||
| 1489 | |||
| 1490 | msgid "Warning threshold must be float or float triplet!\n" | ||
| 1491 | msgstr "" | ||
| 1492 | |||
| 1493 | #, c-format | ||
| 1494 | msgid "Error opening %s\n" | ||
| 1495 | msgstr "" | ||
| 1496 | |||
| 1497 | #, fuzzy, c-format | ||
| 1498 | msgid "could not parse load from uptime %s: %d\n" | ||
| 1499 | msgstr "Argumente konnten nicht ausgewertet werden" | ||
| 1500 | |||
| 1501 | #, c-format | ||
| 1502 | msgid "Error code %d returned in %s\n" | ||
| 1503 | msgstr "" | ||
| 1504 | |||
| 1505 | #, c-format | ||
| 1506 | msgid "Error in getloadavg()\n" | ||
| 1507 | msgstr "" | ||
| 1508 | |||
| 1509 | #, c-format | ||
| 1510 | msgid "Error processing %s\n" | ||
| 1511 | msgstr "" | ||
| 1512 | |||
| 1513 | #, c-format | ||
| 1514 | msgid "load average: %.2f, %.2f, %.2f" | ||
| 1515 | msgstr "" | ||
| 1516 | |||
| 1517 | #, fuzzy, c-format | ||
| 1518 | msgid "Critical threshold for %d-minute load average is not specified\n" | ||
| 1519 | msgstr "Critical threshold muss ein positiver Integer sein\n" | ||
| 1520 | |||
| 1521 | #, fuzzy, c-format | ||
| 1522 | msgid "Warning threshold for %d-minute load average is not specified\n" | ||
| 1523 | msgstr "Warning threshold muss ein positiver Integer sein\n" | ||
| 1524 | |||
| 1525 | #, c-format | ||
| 1526 | msgid "" | ||
| 1527 | "Parameter inconsistency: %d-minute \"warning load\" is greater than " | ||
| 1528 | "\"critical load\"\n" | ||
| 1529 | msgstr "" | ||
| 1530 | |||
| 1531 | #, c-format | ||
| 1532 | msgid "This plugin tests the current system load average." | ||
| 1533 | msgstr "" | ||
| 1534 | |||
| 1535 | msgid "Exit with WARNING status if load average exceeds WLOADn" | ||
| 1536 | msgstr "" | ||
| 1537 | |||
| 1538 | msgid "Exit with CRITICAL status if load average exceed CLOADn" | ||
| 1539 | msgstr "" | ||
| 1540 | |||
| 1541 | msgid "the load average format is the same used by \"uptime\" and \"w\"" | ||
| 1542 | msgstr "" | ||
| 1543 | |||
| 1544 | msgid "Divide the load averages by the number of CPUs (when possible)" | ||
| 1545 | msgstr "" | ||
| 1546 | |||
| 1547 | msgid "Number of processes to show when printing the top consuming processes." | ||
| 1548 | msgstr "" | ||
| 1549 | |||
| 1550 | msgid "NUMBER_OF_PROCS=0 disables this feature. Default value is 0" | ||
| 1551 | msgstr "" | ||
| 1552 | |||
| 1553 | #, c-format | ||
| 1554 | msgid "'%s' exited with non-zero status.\n" | ||
| 1555 | msgstr "" | ||
| 1556 | |||
| 1557 | #, c-format | ||
| 1558 | msgid "some error occurred getting procs list.\n" | ||
| 1559 | msgstr "" | ||
| 1560 | |||
| 1561 | msgid "Could not parse arguments\n" | ||
| 1562 | msgstr "" | ||
| 1563 | |||
| 1564 | #, c-format | ||
| 1565 | msgid "Unable to open MRTG log file\n" | ||
| 1566 | msgstr "" | ||
| 1567 | |||
| 1568 | #, c-format | ||
| 1569 | msgid "Unable to process MRTG log file\n" | ||
| 1570 | msgstr "" | ||
| 1571 | |||
| 1572 | #, c-format | ||
| 1573 | msgid "MRTG data has expired (%d minutes old)\n" | ||
| 1574 | msgstr "" | ||
| 1575 | |||
| 1576 | msgid "Avg" | ||
| 1577 | msgstr "" | ||
| 1578 | |||
| 1579 | msgid "Max" | ||
| 1580 | msgstr "" | ||
| 1581 | |||
| 1582 | msgid "Invalid variable number" | ||
| 1583 | msgstr "" | ||
| 1584 | |||
| 1585 | #, c-format | ||
| 1586 | msgid "" | ||
| 1587 | "%s is not a valid expiration time\n" | ||
| 1588 | "Use '%s -h' for additional help\n" | ||
| 1589 | msgstr "" | ||
| 1590 | |||
| 1591 | msgid "Invalid variable number\n" | ||
| 1592 | msgstr "" | ||
| 1593 | |||
| 1594 | msgid "You must supply the variable number" | ||
| 1595 | msgstr "" | ||
| 1596 | |||
| 1597 | msgid "" | ||
| 1598 | "This plugin will check either the average or maximum value of one of the" | ||
| 1599 | msgstr "" | ||
| 1600 | |||
| 1601 | #, fuzzy | ||
| 1602 | msgid "two variables recorded in an MRTG log file." | ||
| 1603 | msgstr "Konnte MRTG Logfile nicht öffnen" | ||
| 1604 | |||
| 1605 | msgid "The MRTG log file containing the data you want to monitor" | ||
| 1606 | msgstr "" | ||
| 1607 | |||
| 1608 | msgid "Minutes before MRTG data is considered to be too old" | ||
| 1609 | msgstr "" | ||
| 1610 | |||
| 1611 | msgid "Should we check average or maximum values?" | ||
| 1612 | msgstr "" | ||
| 1613 | |||
| 1614 | msgid "Which variable set should we inspect? (1 or 2)" | ||
| 1615 | msgstr "" | ||
| 1616 | |||
| 1617 | msgid "Threshold value for data to result in WARNING status" | ||
| 1618 | msgstr "" | ||
| 1619 | |||
| 1620 | msgid "Threshold value for data to result in CRITICAL status" | ||
| 1621 | msgstr "" | ||
| 1622 | |||
| 1623 | msgid "Type label for data (Examples: Conns, \"Processor Load\", In, Out)" | ||
| 1624 | msgstr "" | ||
| 1625 | |||
| 1626 | msgid "Option units label for data (Example: Packets/Sec, Errors/Sec," | ||
| 1627 | msgstr "" | ||
| 1628 | |||
| 1629 | #, c-format | ||
| 1630 | msgid "\"Bytes Per Second\", \"%% Utilization\")" | ||
| 1631 | msgstr "" | ||
| 1632 | |||
| 1633 | msgid "" | ||
| 1634 | "If the value exceeds the <vwl> threshold, a WARNING status is returned. If" | ||
| 1635 | msgstr "" | ||
| 1636 | |||
| 1637 | msgid "" | ||
| 1638 | "the value exceeds the <vcl> threshold, a CRITICAL status is returned. If" | ||
| 1639 | msgstr "" | ||
| 1640 | |||
| 1641 | msgid "the data in the log file is older than <expire_minutes> old, a WARNING" | ||
| 1642 | msgstr "" | ||
| 1643 | |||
| 1644 | msgid "status is returned and a warning message is printed." | ||
| 1645 | msgstr "" | ||
| 1646 | |||
| 1647 | msgid "" | ||
| 1648 | "This plugin is useful for monitoring MRTG data that does not correspond to" | ||
| 1649 | msgstr "" | ||
| 1650 | |||
| 1651 | msgid "" | ||
| 1652 | "bandwidth usage. (Use the check_mrtgtraf plugin for monitoring bandwidth)." | ||
| 1653 | msgstr "" | ||
| 1654 | |||
| 1655 | msgid "" | ||
| 1656 | "It can be used to monitor any kind of data that MRTG is monitoring - errors," | ||
| 1657 | msgstr "" | ||
| 1658 | |||
| 1659 | msgid "" | ||
| 1660 | "packets/sec, etc. I use MRTG in conjunction with the Novell NLM that allows" | ||
| 1661 | msgstr "" | ||
| 1662 | |||
| 1663 | msgid "" | ||
| 1664 | "me to track processor utilization, user connections, drive space, etc and" | ||
| 1665 | msgstr "" | ||
| 1666 | |||
| 1667 | msgid "this plugin works well for monitoring that kind of data as well." | ||
| 1668 | msgstr "" | ||
| 1669 | |||
| 1670 | msgid "" | ||
| 1671 | "- This plugin only monitors one of the two variables stored in the MRTG log" | ||
| 1672 | msgstr "" | ||
| 1673 | |||
| 1674 | msgid "file. If you want to monitor both values you will have to define two" | ||
| 1675 | msgstr "" | ||
| 1676 | |||
| 1677 | msgid "commands with different values for the <variable> argument. Of course," | ||
| 1678 | msgstr "" | ||
| 1679 | |||
| 1680 | msgid "you can always hack the code to make this plugin work for you..." | ||
| 1681 | msgstr "" | ||
| 1682 | |||
| 1683 | msgid "" | ||
| 1684 | "- MRTG stands for the Multi Router Traffic Grapher. It can be downloaded " | ||
| 1685 | "from" | ||
| 1686 | msgstr "" | ||
| 1687 | |||
| 1688 | msgid "Unable to open MRTG log file" | ||
| 1689 | msgstr "Konnte MRTG Logfile nicht öffnen" | ||
| 1690 | |||
| 1691 | msgid "Unable to process MRTG log file" | ||
| 1692 | msgstr "" | ||
| 1693 | |||
| 1694 | #, c-format | ||
| 1695 | msgid "%s. In = %0.1f %s/s, %s. Out = %0.1f %s/s|%s %s\n" | ||
| 1696 | msgstr "" | ||
| 1697 | |||
| 1698 | #, c-format | ||
| 1699 | msgid "Traffic %s - %s\n" | ||
| 1700 | msgstr "" | ||
| 1701 | |||
| 1702 | msgid "" | ||
| 1703 | "This plugin will check the incoming/outgoing transfer rates of a router," | ||
| 1704 | msgstr "" | ||
| 1705 | |||
| 1706 | msgid "switch, etc recorded in an MRTG log. If the newest log entry is older" | ||
| 1707 | msgstr "" | ||
| 1708 | |||
| 1709 | msgid "than <expire_minutes>, a WARNING status is returned. If either the" | ||
| 1710 | msgstr "" | ||
| 1711 | |||
| 1712 | msgid "incoming or outgoing rates exceed the <icl> or <ocl> thresholds (in" | ||
| 1713 | msgstr "" | ||
| 1714 | |||
| 1715 | msgid "Bytes/sec), a CRITICAL status results. If either of the rates exceed" | ||
| 1716 | msgstr "" | ||
| 1717 | |||
| 1718 | msgid "the <iwl> or <owl> thresholds (in Bytes/sec), a WARNING status results." | ||
| 1719 | msgstr "" | ||
| 1720 | |||
| 1721 | msgid "File to read log from" | ||
| 1722 | msgstr "" | ||
| 1723 | |||
| 1724 | msgid "Minutes after which log expires" | ||
| 1725 | msgstr "" | ||
| 1726 | |||
| 1727 | msgid "Test average or maximum" | ||
| 1728 | msgstr "" | ||
| 1729 | |||
| 1730 | #, fuzzy | ||
| 1731 | msgid "Warning threshold pair <incoming>,<outgoing>" | ||
| 1732 | msgstr "Warning threshold Integer sein" | ||
| 1733 | |||
| 1734 | #, fuzzy | ||
| 1735 | msgid "Critical threshold pair <incoming>,<outgoing>" | ||
| 1736 | msgstr "Critical threshold muss ein Integer sein" | ||
| 1737 | |||
| 1738 | msgid "" | ||
| 1739 | "- MRTG stands for Multi Router Traffic Grapher. It can be downloaded from" | ||
| 1740 | msgstr "" | ||
| 1741 | |||
| 1742 | msgid "- While MRTG can monitor things other than traffic rates, this" | ||
| 1743 | msgstr "" | ||
| 1744 | |||
| 1745 | msgid " plugin probably won't work with much else without modification." | ||
| 1746 | msgstr "" | ||
| 1747 | |||
| 1748 | msgid "- The calculated i/o rates are a little off from what MRTG actually" | ||
| 1749 | msgstr "" | ||
| 1750 | |||
| 1751 | msgid " reports. I'm not sure why this is right now, but will look into it" | ||
| 1752 | msgstr "" | ||
| 1753 | |||
| 1754 | msgid " for future enhancements of this plugin." | ||
| 1755 | msgstr "" | ||
| 1756 | |||
| 1757 | #, c-format | ||
| 1758 | msgid "Usage" | ||
| 1759 | msgstr "" | ||
| 1760 | |||
| 1761 | #, c-format | ||
| 1762 | msgid "status store_result error: %s\n" | ||
| 1763 | msgstr "" | ||
| 1764 | |||
| 1765 | #, c-format | ||
| 1766 | msgid "slave query error: %s\n" | ||
| 1767 | msgstr "" | ||
| 1768 | |||
| 1769 | #, c-format | ||
| 1770 | msgid "slave store_result error: %s\n" | ||
| 1771 | msgstr "" | ||
| 1772 | |||
| 1773 | msgid "No slaves defined" | ||
| 1774 | msgstr "" | ||
| 1775 | |||
| 1776 | #, c-format | ||
| 1777 | msgid "slave fetch row error: %s\n" | ||
| 1778 | msgstr "" | ||
| 1779 | |||
| 1780 | #, c-format | ||
| 1781 | msgid "Slave running: %s" | ||
| 1782 | msgstr "" | ||
| 1783 | |||
| 1784 | msgid "This program tests connections to a MySQL server" | ||
| 1785 | msgstr "" | ||
| 1786 | |||
| 1787 | msgid "Ignore authentication failure and check for mysql connectivity only" | ||
| 1788 | msgstr "" | ||
| 1789 | |||
| 1790 | msgid "Use the specified socket (has no effect if -H is used)" | ||
| 1791 | msgstr "" | ||
| 1792 | |||
| 1793 | msgid "Check database with indicated name" | ||
| 1794 | msgstr "" | ||
| 1795 | |||
| 1796 | msgid "Read from the specified client options file" | ||
| 1797 | msgstr "" | ||
| 1798 | |||
| 1799 | msgid "Use a client options group" | ||
| 1800 | msgstr "" | ||
| 1801 | |||
| 1802 | msgid "Connect using the indicated username" | ||
| 1803 | msgstr "" | ||
| 1804 | |||
| 1805 | msgid "Use the indicated password to authenticate the connection" | ||
| 1806 | msgstr "" | ||
| 1807 | |||
| 1808 | msgid "IMPORTANT: THIS FORM OF AUTHENTICATION IS NOT SECURE!!!" | ||
| 1809 | msgstr "" | ||
| 1810 | |||
| 1811 | msgid "Your clear-text password could be visible as a process table entry" | ||
| 1812 | msgstr "" | ||
| 1813 | |||
| 1814 | msgid "Check if the slave thread is running properly." | ||
| 1815 | msgstr "" | ||
| 1816 | |||
| 1817 | msgid "Exit with WARNING status if slave server is more than INTEGER seconds" | ||
| 1818 | msgstr "" | ||
| 1819 | |||
| 1820 | msgid "behind master" | ||
| 1821 | msgstr "" | ||
| 1822 | |||
| 1823 | msgid "Exit with CRITICAL status if slave server is more then INTEGER seconds" | ||
| 1824 | msgstr "" | ||
| 1825 | |||
| 1826 | msgid "Use ssl encryption" | ||
| 1827 | msgstr "" | ||
| 1828 | |||
| 1829 | msgid "Path to CA signing the cert" | ||
| 1830 | msgstr "" | ||
| 1831 | |||
| 1832 | msgid "Path to SSL certificate" | ||
| 1833 | msgstr "" | ||
| 1834 | |||
| 1835 | msgid "Path to private SSL key" | ||
| 1836 | msgstr "" | ||
| 1837 | |||
| 1838 | msgid "Path to CA directory" | ||
| 1839 | msgstr "" | ||
| 1840 | |||
| 1841 | msgid "List of valid SSL ciphers" | ||
| 1842 | msgstr "" | ||
| 1843 | |||
| 1844 | msgid "" | ||
| 1845 | "There are no required arguments. By default, the local database is checked" | ||
| 1846 | msgstr "" | ||
| 1847 | |||
| 1848 | msgid "" | ||
| 1849 | "using the default unix socket. You can force TCP on localhost by using an" | ||
| 1850 | msgstr "" | ||
| 1851 | |||
| 1852 | msgid "IP address or FQDN ('localhost' will use the socket as well)." | ||
| 1853 | msgstr "" | ||
| 1854 | |||
| 1855 | msgid "You must specify -p with an empty string to force an empty password," | ||
| 1856 | msgstr "" | ||
| 1857 | |||
| 1858 | msgid "overriding any my.cnf settings." | ||
| 1859 | msgstr "" | ||
| 1860 | |||
| 1861 | msgid "Cannot open status log for reading!" | ||
| 1862 | msgstr "" | ||
| 1863 | |||
| 1864 | #, c-format | ||
| 1865 | msgid "Found process: %s %s\n" | ||
| 1866 | msgstr "" | ||
| 1867 | |||
| 1868 | msgid "Could not locate a running Nagios process!" | ||
| 1869 | msgstr "" | ||
| 1870 | |||
| 1871 | msgid "Cannot parse Nagios log file for valid time" | ||
| 1872 | msgstr "" | ||
| 1873 | |||
| 1874 | #, c-format | ||
| 1875 | msgid "%d process" | ||
| 1876 | msgid_plural "%d processes" | ||
| 1877 | msgstr[0] "" | ||
| 1878 | msgstr[1] "" | ||
| 1879 | |||
| 1880 | #, c-format | ||
| 1881 | msgid "status log updated %d second ago" | ||
| 1882 | msgid_plural "status log updated %d seconds ago" | ||
| 1883 | msgstr[0] "" | ||
| 1884 | msgstr[1] "" | ||
| 1885 | |||
| 1886 | #, fuzzy | ||
| 1887 | msgid "Expiration time must be an integer (seconds)\n" | ||
| 1888 | msgstr "skip lines muss ein Integer sein" | ||
| 1889 | |||
| 1890 | #, fuzzy | ||
| 1891 | msgid "Timeout must be an integer (seconds)\n" | ||
| 1892 | msgstr "skip lines muss ein Integer sein" | ||
| 1893 | |||
| 1894 | #, fuzzy | ||
| 1895 | msgid "You must provide the status_log\n" | ||
| 1896 | msgstr "%s: Hostname muss angegeben werden\n" | ||
| 1897 | |||
| 1898 | #, fuzzy | ||
| 1899 | msgid "You must provide a process string\n" | ||
| 1900 | msgstr "%s: Hostname muss angegeben werden\n" | ||
| 1901 | |||
| 1902 | #, fuzzy | ||
| 1903 | msgid "" | ||
| 1904 | "This plugin checks the status of the Nagios process on the local machine" | ||
| 1905 | msgstr "" | ||
| 1906 | "Dieses Plugin prüft den freien Speicher auf einem gemounteten Filesystem\n" | ||
| 1907 | "und erzeugt einen Alarm wenn einer der angegebenen Schwellwerte " | ||
| 1908 | "unterschritten wird.\n" | ||
| 1909 | "\n" | ||
| 1910 | |||
| 1911 | msgid "" | ||
| 1912 | "The plugin will check to make sure the Nagios status log is no older than" | ||
| 1913 | msgstr "" | ||
| 1914 | |||
| 1915 | msgid "the number of minutes specified by the expires option." | ||
| 1916 | msgstr "" | ||
| 1917 | |||
| 1918 | msgid "" | ||
| 1919 | "It also checks the process table for a process matching the command argument." | ||
| 1920 | msgstr "" | ||
| 1921 | |||
| 1922 | msgid "Name of the log file to check" | ||
| 1923 | msgstr "" | ||
| 1924 | |||
| 1925 | msgid "Minutes aging after which logfile is considered stale" | ||
| 1926 | msgstr "" | ||
| 1927 | |||
| 1928 | msgid "Substring to search for in process arguments" | ||
| 1929 | msgstr "" | ||
| 1930 | |||
| 1931 | msgid "Timeout for the plugin in seconds" | ||
| 1932 | msgstr "" | ||
| 1933 | |||
| 1934 | #, c-format | ||
| 1935 | msgid "Wrong client version - running: %s, required: %s" | ||
| 1936 | msgstr "" | ||
| 1937 | |||
| 1938 | msgid "missing -l parameters" | ||
| 1939 | msgstr "" | ||
| 1940 | |||
| 1941 | msgid "wrong -l parameter." | ||
| 1942 | msgstr "" | ||
| 1943 | |||
| 1944 | msgid "CPU Load" | ||
| 1945 | msgstr "" | ||
| 1946 | |||
| 1947 | #, c-format | ||
| 1948 | msgid " %lu%% (%lu min average)" | ||
| 1949 | msgstr "" | ||
| 1950 | |||
| 1951 | #, c-format | ||
| 1952 | msgid " '%lu min avg Load'=%lu%%;%lu;%lu;0;100" | ||
| 1953 | msgstr "" | ||
| 1954 | |||
| 1955 | msgid "not enough values for -l parameters" | ||
| 1956 | msgstr "" | ||
| 1957 | |||
| 1958 | msgid "wrong -l argument" | ||
| 1959 | msgstr "" | ||
| 1960 | |||
| 1961 | #, c-format | ||
| 1962 | msgid "System Uptime - %u day(s) %u hour(s) %u minute(s) |uptime=%lu" | ||
| 1963 | msgstr "" | ||
| 1964 | |||
| 1965 | #, c-format | ||
| 1966 | msgid "%s:\\ - total: %.2f Gb - used: %.2f Gb (%.0f%%) - free %.2f Gb (%.0f%%)" | ||
| 1967 | msgstr "" | ||
| 1968 | |||
| 1969 | #, c-format | ||
| 1970 | msgid "'%s:\\ Used Space'=%.2fGb;%.2f;%.2f;0.00;%.2f" | ||
| 1971 | msgstr "" | ||
| 1972 | |||
| 1973 | msgid "Free disk space : Invalid drive" | ||
| 1974 | msgstr "" | ||
| 1975 | |||
| 1976 | msgid "No service/process specified" | ||
| 1977 | msgstr "" | ||
| 1978 | |||
| 1979 | msgid "could not fetch information from server\n" | ||
| 1980 | msgstr "" | ||
| 1981 | |||
| 1982 | #, c-format | ||
| 1983 | msgid "" | ||
| 1984 | "Memory usage: total:%.2f MB - used: %.2f MB (%.0f%%) - free: %.2f MB (%.0f%%)" | ||
| 1985 | msgstr "" | ||
| 1986 | |||
| 1987 | #, c-format | ||
| 1988 | msgid "'Memory usage'=%.2fMB;%.2f;%.2f;0.00;%.2f" | ||
| 1989 | msgstr "" | ||
| 1990 | |||
| 1991 | msgid "No counter specified" | ||
| 1992 | msgstr "" | ||
| 1993 | |||
| 1994 | msgid "Minimum value contains non-numbers" | ||
| 1995 | msgstr "" | ||
| 1996 | |||
| 1997 | msgid "Maximum value contains non-numbers" | ||
| 1998 | msgstr "" | ||
| 1999 | |||
| 2000 | msgid "No unit counter specified" | ||
| 2001 | msgstr "" | ||
| 2002 | |||
| 2003 | msgid "Please specify a variable to check" | ||
| 2004 | msgstr "" | ||
| 2005 | |||
| 2006 | #, fuzzy | ||
| 2007 | msgid "Server port must be an integer\n" | ||
| 2008 | msgstr "skip lines muss ein Integer sein" | ||
| 2009 | |||
| 2010 | #, fuzzy | ||
| 2011 | msgid "You must provide a server address or host name" | ||
| 2012 | msgstr "Hostname oder Serveradresse muss angegeben werden" | ||
| 2013 | |||
| 2014 | msgid "None" | ||
| 2015 | msgstr "" | ||
| 2016 | |||
| 2017 | msgid "This plugin collects data from the NSClient service running on a" | ||
| 2018 | msgstr "" | ||
| 2019 | |||
| 2020 | msgid "Windows NT/2000/XP/2003 server." | ||
| 2021 | msgstr "" | ||
| 2022 | |||
| 2023 | msgid "Name of the host to check" | ||
| 2024 | msgstr "" | ||
| 2025 | |||
| 2026 | #, fuzzy | ||
| 2027 | msgid "Optional port number (default: " | ||
| 2028 | msgstr "Ungültige Portnummer" | ||
| 2029 | |||
| 2030 | msgid "Password needed for the request" | ||
| 2031 | msgstr "" | ||
| 2032 | |||
| 2033 | msgid "Threshold which will result in a warning status" | ||
| 2034 | msgstr "" | ||
| 2035 | |||
| 2036 | msgid "Threshold which will result in a critical status" | ||
| 2037 | msgstr "" | ||
| 2038 | |||
| 2039 | msgid "Seconds before connection attempt times out (default: " | ||
| 2040 | msgstr "" | ||
| 2041 | |||
| 2042 | msgid "Parameters passed to specified check (see below)" | ||
| 2043 | msgstr "" | ||
| 2044 | |||
| 2045 | msgid "Display options (currently only SHOWALL works)" | ||
| 2046 | msgstr "" | ||
| 2047 | |||
| 2048 | msgid "Return UNKNOWN on timeouts" | ||
| 2049 | msgstr "" | ||
| 2050 | |||
| 2051 | msgid "Print this help screen" | ||
| 2052 | msgstr "" | ||
| 2053 | |||
| 2054 | msgid "Print version information" | ||
| 2055 | msgstr "" | ||
| 2056 | |||
| 2057 | msgid "Variable to check" | ||
| 2058 | msgstr "" | ||
| 2059 | |||
| 2060 | msgid "Valid variables are:" | ||
| 2061 | msgstr "" | ||
| 2062 | |||
| 2063 | msgid "Get the NSClient version" | ||
| 2064 | msgstr "" | ||
| 2065 | |||
| 2066 | msgid "If -l <version> is specified, will return warning if versions differ." | ||
| 2067 | msgstr "" | ||
| 2068 | |||
| 2069 | msgid "Average CPU load on last x minutes." | ||
| 2070 | msgstr "" | ||
| 2071 | |||
| 2072 | msgid "Request a -l parameter with the following syntax:" | ||
| 2073 | msgstr "" | ||
| 2074 | |||
| 2075 | msgid "-l <minutes range>,<warning threshold>,<critical threshold>." | ||
| 2076 | msgstr "" | ||
| 2077 | |||
| 2078 | msgid "<minute range> should be less than 24*60." | ||
| 2079 | msgstr "" | ||
| 2080 | |||
| 2081 | msgid "" | ||
| 2082 | "Thresholds are percentage and up to 10 requests can be done in one shot." | ||
| 2083 | msgstr "" | ||
| 2084 | |||
| 2085 | msgid "Get the uptime of the machine." | ||
| 2086 | msgstr "" | ||
| 2087 | |||
| 2088 | msgid "-l <unit> " | ||
| 2089 | msgstr "" | ||
| 2090 | |||
| 2091 | msgid "<unit> = seconds, minutes, hours, or days. (default: minutes)" | ||
| 2092 | msgstr "" | ||
| 2093 | |||
| 2094 | #, fuzzy | ||
| 2095 | msgid "Thresholds will use the unit specified above." | ||
| 2096 | msgstr "" | ||
| 2097 | "Testet den DNS Dienst auf dem angegebenen Host mit dig\n" | ||
| 2098 | "\n" | ||
| 2099 | |||
| 2100 | msgid "Size and percentage of disk use." | ||
| 2101 | msgstr "" | ||
| 2102 | |||
| 2103 | msgid "Request a -l parameter containing the drive letter only." | ||
| 2104 | msgstr "" | ||
| 2105 | |||
| 2106 | msgid "Warning and critical thresholds can be specified with -w and -c." | ||
| 2107 | msgstr "" | ||
| 2108 | |||
| 2109 | msgid "Memory use." | ||
| 2110 | msgstr "" | ||
| 2111 | |||
| 2112 | msgid "Check the state of one or several services." | ||
| 2113 | msgstr "" | ||
| 2114 | |||
| 2115 | msgid "Request a -l parameters with the following syntax:" | ||
| 2116 | msgstr "" | ||
| 2117 | |||
| 2118 | msgid "-l <service1>,<service2>,<service3>,..." | ||
| 2119 | msgstr "" | ||
| 2120 | |||
| 2121 | msgid "You can specify -d SHOWALL in case you want to see working services" | ||
| 2122 | msgstr "" | ||
| 2123 | |||
| 2124 | msgid "in the returned string." | ||
| 2125 | msgstr "" | ||
| 2126 | |||
| 2127 | msgid "Check if one or several process are running." | ||
| 2128 | msgstr "" | ||
| 2129 | |||
| 2130 | msgid "Same syntax as SERVICESTATE." | ||
| 2131 | msgstr "" | ||
| 2132 | |||
| 2133 | msgid "Check any performance counter of Windows NT/2000." | ||
| 2134 | msgstr "" | ||
| 2135 | |||
| 2136 | msgid "-l \"\\\\<performance object>\\\\counter\",\"<description>" | ||
| 2137 | msgstr "" | ||
| 2138 | |||
| 2139 | msgid "The <description> parameter is optional and is given to a printf " | ||
| 2140 | msgstr "" | ||
| 2141 | |||
| 2142 | msgid "output command which requires a float parameter." | ||
| 2143 | msgstr "" | ||
| 2144 | |||
| 2145 | #, c-format | ||
| 2146 | msgid "If <description> does not include \"%%\", it is used as a label." | ||
| 2147 | msgstr "" | ||
| 2148 | |||
| 2149 | msgid "Some examples:" | ||
| 2150 | msgstr "" | ||
| 2151 | |||
| 2152 | msgid "Check any performance counter object of Windows NT/2000." | ||
| 2153 | msgstr "" | ||
| 2154 | |||
| 2155 | msgid "" | ||
| 2156 | "Syntax: check_nt -H <hostname> -p <port> -v INSTANCES -l <counter object>" | ||
| 2157 | msgstr "" | ||
| 2158 | |||
| 2159 | msgid "<counter object> is a Windows Perfmon Counter object (eg. Process)," | ||
| 2160 | msgstr "" | ||
| 2161 | |||
| 2162 | msgid "if it is two words, it should be enclosed in quotes" | ||
| 2163 | msgstr "" | ||
| 2164 | |||
| 2165 | msgid "The returned results will be a comma-separated list of instances on " | ||
| 2166 | msgstr "" | ||
| 2167 | |||
| 2168 | msgid " the selected computer for that object." | ||
| 2169 | msgstr "" | ||
| 2170 | |||
| 2171 | msgid "" | ||
| 2172 | "The purpose of this is to be run from command line to determine what " | ||
| 2173 | "instances" | ||
| 2174 | msgstr "" | ||
| 2175 | |||
| 2176 | msgid "" | ||
| 2177 | " are available for monitoring without having to log onto the Windows server" | ||
| 2178 | msgstr "" | ||
| 2179 | |||
| 2180 | msgid " to run Perfmon directly." | ||
| 2181 | msgstr "" | ||
| 2182 | |||
| 2183 | msgid "" | ||
| 2184 | "It can also be used in scripts that automatically create the monitoring " | ||
| 2185 | "service" | ||
| 2186 | msgstr "" | ||
| 2187 | |||
| 2188 | msgid " configuration files." | ||
| 2189 | msgstr "" | ||
| 2190 | |||
| 2191 | msgid "check_nt -H 192.168.1.1 -p 1248 -v INSTANCES -l Process" | ||
| 2192 | msgstr "" | ||
| 2193 | |||
| 2194 | msgid "" | ||
| 2195 | "- The NSClient service should be running on the server to get any information" | ||
| 2196 | msgstr "" | ||
| 2197 | |||
| 2198 | msgid "- Critical thresholds should be lower than warning thresholds" | ||
| 2199 | msgstr "" | ||
| 2200 | |||
| 2201 | msgid "- Default port 1248 is sometimes in use by other services. The error" | ||
| 2202 | msgstr "" | ||
| 2203 | |||
| 2204 | msgid "" | ||
| 2205 | "output when this happens contains \"Cannot map xxxxx to protocol number\"." | ||
| 2206 | msgstr "" | ||
| 2207 | |||
| 2208 | msgid "One fix for this is to change the port to something else on check_nt " | ||
| 2209 | msgstr "" | ||
| 2210 | |||
| 2211 | msgid "and on the client service it's connecting to." | ||
| 2212 | msgstr "" | ||
| 2213 | |||
| 2214 | #, c-format | ||
| 2215 | msgid "jitter response too large (%lu bytes)\n" | ||
| 2216 | msgstr "" | ||
| 2217 | |||
| 2218 | msgid "NTP CRITICAL:" | ||
| 2219 | msgstr "NTP CRITICAL:" | ||
| 2220 | |||
| 2221 | msgid "NTP WARNING:" | ||
| 2222 | msgstr "NTP WARNING:" | ||
| 2223 | |||
| 2224 | msgid "NTP OK:" | ||
| 2225 | msgstr "NTP OK:" | ||
| 2226 | |||
| 2227 | msgid "NTP UNKNOWN:" | ||
| 2228 | msgstr "NTP UNKNOWN:" | ||
| 2229 | |||
| 2230 | msgid "Offset unknown" | ||
| 2231 | msgstr "" | ||
| 2232 | |||
| 2233 | msgid "Offset" | ||
| 2234 | msgstr "" | ||
| 2235 | |||
| 2236 | #, fuzzy | ||
| 2237 | msgid "This plugin checks the selected ntp server" | ||
| 2238 | msgstr "" | ||
| 2239 | "Testet den DNS Dienst auf dem angegebenen Host mit dig\n" | ||
| 2240 | "\n" | ||
| 2241 | |||
| 2242 | msgid "Offset to result in warning status (seconds)" | ||
| 2243 | msgstr "" | ||
| 2244 | |||
| 2245 | msgid "Offset to result in critical status (seconds)" | ||
| 2246 | msgstr "" | ||
| 2247 | |||
| 2248 | #, fuzzy | ||
| 2249 | msgid "Warning threshold for jitter" | ||
| 2250 | msgstr "Warning threshold Integer sein" | ||
| 2251 | |||
| 2252 | #, fuzzy | ||
| 2253 | msgid "Critical threshold for jitter" | ||
| 2254 | msgstr "Critical threshold muss ein Integer sein" | ||
| 2255 | |||
| 2256 | msgid "Normal offset check:" | ||
| 2257 | msgstr "" | ||
| 2258 | |||
| 2259 | msgid "" | ||
| 2260 | "Check jitter too, avoiding critical notifications if jitter isn't available" | ||
| 2261 | msgstr "" | ||
| 2262 | |||
| 2263 | msgid "(See Notes above for more details on thresholds formats):" | ||
| 2264 | msgstr "" | ||
| 2265 | |||
| 2266 | msgid "WARNING: check_ntp is deprecated. Please use check_ntp_peer or" | ||
| 2267 | msgstr "" | ||
| 2268 | |||
| 2269 | msgid "check_ntp_time instead." | ||
| 2270 | msgstr "" | ||
| 2271 | |||
| 2272 | msgid "Server not synchronized" | ||
| 2273 | msgstr "" | ||
| 2274 | |||
| 2275 | msgid "Server has the LI_ALARM bit set" | ||
| 2276 | msgstr "" | ||
| 2277 | |||
| 2278 | msgid "" | ||
| 2279 | "Returns UNKNOWN instead of CRITICAL or WARNING if server isn't synchronized" | ||
| 2280 | msgstr "" | ||
| 2281 | |||
| 2282 | #, fuzzy | ||
| 2283 | msgid "Warning threshold for stratum of server's synchronization peer" | ||
| 2284 | msgstr "Warning threshold Integer sein" | ||
| 2285 | |||
| 2286 | #, fuzzy | ||
| 2287 | msgid "Critical threshold for stratum of server's synchronization peer" | ||
| 2288 | msgstr "Critical threshold muss ein Integer sein" | ||
| 2289 | |||
| 2290 | #, fuzzy | ||
| 2291 | msgid "Warning threshold for number of usable time sources (\"truechimers\")" | ||
| 2292 | msgstr "Warning threshold muss ein positiver Integer sein\n" | ||
| 2293 | |||
| 2294 | #, fuzzy | ||
| 2295 | msgid "Critical threshold for number of usable time sources (\"truechimers\")" | ||
| 2296 | msgstr "Critical threshold muss ein positiver Integer sein\n" | ||
| 2297 | |||
| 2298 | msgid "This plugin checks an NTP server independent of any commandline" | ||
| 2299 | msgstr "" | ||
| 2300 | |||
| 2301 | msgid "programs or external libraries." | ||
| 2302 | msgstr "" | ||
| 2303 | |||
| 2304 | #, fuzzy | ||
| 2305 | msgid "Use this plugin to check the health of an NTP server. It supports" | ||
| 2306 | msgstr "" | ||
| 2307 | "Testet den DNS Dienst auf dem angegebenen Host mit dig\n" | ||
| 2308 | "\n" | ||
| 2309 | |||
| 2310 | msgid "checking the offset with the sync peer, the jitter and stratum. This" | ||
| 2311 | msgstr "" | ||
| 2312 | |||
| 2313 | msgid "plugin will not check the clock offset between the local host and NTP" | ||
| 2314 | msgstr "" | ||
| 2315 | |||
| 2316 | msgid "server; please use check_ntp_time for that purpose." | ||
| 2317 | msgstr "" | ||
| 2318 | |||
| 2319 | msgid "Simple NTP server check:" | ||
| 2320 | msgstr "" | ||
| 2321 | |||
| 2322 | msgid "Only check the number of usable time sources (\"truechimers\"):" | ||
| 2323 | msgstr "" | ||
| 2324 | |||
| 2325 | msgid "Check only stratum:" | ||
| 2326 | msgstr "" | ||
| 2327 | |||
| 2328 | #, fuzzy | ||
| 2329 | msgid "This plugin checks the clock offset with the ntp server" | ||
| 2330 | msgstr "" | ||
| 2331 | "Testet den DNS Dienst auf dem angegebenen Host mit dig\n" | ||
| 2332 | "\n" | ||
| 2333 | |||
| 2334 | msgid "Returns UNKNOWN instead of CRITICAL if offset cannot be found" | ||
| 2335 | msgstr "" | ||
| 2336 | |||
| 2337 | msgid "Expected offset of the ntp server relative to local server (seconds)" | ||
| 2338 | msgstr "" | ||
| 2339 | |||
| 2340 | #, fuzzy | ||
| 2341 | msgid "This plugin checks the clock offset between the local host and a" | ||
| 2342 | msgstr "" | ||
| 2343 | "Dieses Plugin prüft den freien Speicher auf einem gemounteten Filesystem\n" | ||
| 2344 | "und erzeugt einen Alarm wenn einer der angegebenen Schwellwerte " | ||
| 2345 | "unterschritten wird.\n" | ||
| 2346 | "\n" | ||
| 2347 | |||
| 2348 | msgid "remote NTP server. It is independent of any commandline programs or" | ||
| 2349 | msgstr "" | ||
| 2350 | |||
| 2351 | msgid "external libraries." | ||
| 2352 | msgstr "" | ||
| 2353 | |||
| 2354 | msgid "If you'd rather want to monitor an NTP server, please use" | ||
| 2355 | msgstr "" | ||
| 2356 | |||
| 2357 | msgid "check_ntp_peer." | ||
| 2358 | msgstr "" | ||
| 2359 | |||
| 2360 | msgid "--time-offset is useful for compensating for servers with known" | ||
| 2361 | msgstr "" | ||
| 2362 | |||
| 2363 | msgid "and expected clock skew." | ||
| 2364 | msgstr "" | ||
| 2365 | |||
| 2366 | #, c-format | ||
| 2367 | msgid "NetWare %s: " | ||
| 2368 | msgstr "" | ||
| 2369 | |||
| 2370 | #, c-format | ||
| 2371 | msgid "Up %s," | ||
| 2372 | msgstr "" | ||
| 2373 | |||
| 2374 | #, c-format | ||
| 2375 | msgid "Load %s - %s %s-min load average = %lu%%|load%s=%lu;%lu;%lu;0;100" | ||
| 2376 | msgstr "" | ||
| 2377 | |||
| 2378 | #, c-format | ||
| 2379 | msgid "Conns %s - %lu current connections|Conns=%lu;%lu;%lu;;" | ||
| 2380 | msgstr "" | ||
| 2381 | |||
| 2382 | #, c-format | ||
| 2383 | msgid "%s: Long term cache hits = %lu%%" | ||
| 2384 | msgstr "" | ||
| 2385 | |||
| 2386 | #, c-format | ||
| 2387 | msgid "%s: Total cache buffers = %lu|Cachebuffers=%lu;%lu;%lu;;" | ||
| 2388 | msgstr "" | ||
| 2389 | |||
| 2390 | #, c-format | ||
| 2391 | msgid "%s: Dirty cache buffers = %lu|Dirty-Cache-Buffers=%lu;%lu;%lu;;" | ||
| 2392 | msgstr "" | ||
| 2393 | |||
| 2394 | #, c-format | ||
| 2395 | msgid "%s: LRU sitting time = %lu minutes" | ||
| 2396 | msgstr "" | ||
| 2397 | |||
| 2398 | #, c-format | ||
| 2399 | msgid "CRITICAL - Volume '%s' does not exist!" | ||
| 2400 | msgstr "" | ||
| 2401 | |||
| 2402 | #, c-format | ||
| 2403 | msgid "%s%lu KB free on volume %s|KBFree%s=%lu;%lu;%lu;;" | ||
| 2404 | msgstr "" | ||
| 2405 | |||
| 2406 | msgid "Only " | ||
| 2407 | msgstr "" | ||
| 2408 | |||
| 2409 | #, c-format | ||
| 2410 | msgid "%s%lu MB free on volume %s|MBFree%s=%lu;%lu;%lu;;" | ||
| 2411 | msgstr "" | ||
| 2412 | |||
| 2413 | #, c-format | ||
| 2414 | msgid "%s%lu MB used on volume %s|MBUsed%s=%lu;%lu;%lu;;" | ||
| 2415 | msgstr "" | ||
| 2416 | |||
| 2417 | #, c-format | ||
| 2418 | msgid "" | ||
| 2419 | "%lu MB (%lu%%) free on volume %s - total %lu MB|FreeMB%s=%lu;%lu;%lu;0;100" | ||
| 2420 | msgstr "" | ||
| 2421 | |||
| 2422 | #, c-format | ||
| 2423 | msgid "Directory Services Database is %s (DS version %s)" | ||
| 2424 | msgstr "" | ||
| 2425 | |||
| 2426 | #, c-format | ||
| 2427 | msgid "Logins are %s" | ||
| 2428 | msgstr "" | ||
| 2429 | |||
| 2430 | msgid "enabled" | ||
| 2431 | msgstr "" | ||
| 2432 | |||
| 2433 | msgid "disabled" | ||
| 2434 | msgstr "" | ||
| 2435 | |||
| 2436 | #, fuzzy | ||
| 2437 | msgid "CRITICAL - NRM Status is bad!" | ||
| 2438 | msgstr "CRITICAL - Serverdatum \"%100s\" konnte nicht verarbeitet werden" | ||
| 2439 | |||
| 2440 | msgid "Warning - NRM Status is suspect!" | ||
| 2441 | msgstr "" | ||
| 2442 | |||
| 2443 | msgid "OK - NRM Status is good!" | ||
| 2444 | msgstr "" | ||
| 2445 | |||
| 2446 | #, c-format | ||
| 2447 | msgid "%lu of %lu (%lu%%) packet receive buffers used" | ||
| 2448 | msgstr "" | ||
| 2449 | |||
| 2450 | #, c-format | ||
| 2451 | msgid "%lu entries in SAP table" | ||
| 2452 | msgstr "" | ||
| 2453 | |||
| 2454 | #, c-format | ||
| 2455 | msgid "%lu entries in SAP table for SAP type %d" | ||
| 2456 | msgstr "" | ||
| 2457 | |||
| 2458 | #, c-format | ||
| 2459 | msgid "%s%lu KB purgeable on volume %s|Purge%s=%lu;%lu;%lu;;" | ||
| 2460 | msgstr "" | ||
| 2461 | |||
| 2462 | #, c-format | ||
| 2463 | msgid "%s%lu MB purgeable on volume %s|Purge%s=%lu;%lu;%lu;;" | ||
| 2464 | msgstr "" | ||
| 2465 | |||
| 2466 | #, c-format | ||
| 2467 | msgid "%lu MB (%lu%%) purgeable on volume %s|Purgeable%s=%lu;%lu;%lu;0;100" | ||
| 2468 | msgstr "" | ||
| 2469 | |||
| 2470 | #, c-format | ||
| 2471 | msgid "%s%lu KB not yet purgeable on volume %s" | ||
| 2472 | msgstr "" | ||
| 2473 | |||
| 2474 | #, c-format | ||
| 2475 | msgid "%lu MB (%lu%%) not yet purgeable on volume %s" | ||
| 2476 | msgstr "" | ||
| 2477 | |||
| 2478 | #, c-format | ||
| 2479 | msgid "%lu open files|Openfiles=%lu;%lu;%lu;0,0" | ||
| 2480 | msgstr "" | ||
| 2481 | |||
| 2482 | #, c-format | ||
| 2483 | msgid "%lu abended threads|Abends=%lu;%lu;%lu;;" | ||
| 2484 | msgstr "" | ||
| 2485 | |||
| 2486 | #, c-format | ||
| 2487 | msgid "%lu current service processes (%lu max)|Processes=%lu;%lu;%lu;0;%lu" | ||
| 2488 | msgstr "" | ||
| 2489 | |||
| 2490 | msgid "CRITICAL - Time not in sync with network!" | ||
| 2491 | msgstr "" | ||
| 2492 | |||
| 2493 | msgid "OK - Time in sync with network!" | ||
| 2494 | msgstr "" | ||
| 2495 | |||
| 2496 | #, c-format | ||
| 2497 | msgid "LRU sitting time = %lu seconds" | ||
| 2498 | msgstr "" | ||
| 2499 | |||
| 2500 | #, c-format | ||
| 2501 | msgid "Dirty cache buffers = %lu%% of the total|DCB=%lu;%lu;%lu;0;100" | ||
| 2502 | msgstr "" | ||
| 2503 | |||
| 2504 | #, c-format | ||
| 2505 | msgid "Total cache buffers = %lu%% of the original|TCB=%lu;%lu;%lu;0;100" | ||
| 2506 | msgstr "" | ||
| 2507 | |||
| 2508 | #, c-format | ||
| 2509 | msgid "NDS Version %s" | ||
| 2510 | msgstr "" | ||
| 2511 | |||
| 2512 | #, c-format | ||
| 2513 | msgid "Up %s" | ||
| 2514 | msgstr "" | ||
| 2515 | |||
| 2516 | #, c-format | ||
| 2517 | msgid "Module %s version %s is loaded" | ||
| 2518 | msgstr "" | ||
| 2519 | |||
| 2520 | #, c-format | ||
| 2521 | msgid "Module %s is not loaded" | ||
| 2522 | msgstr "" | ||
| 2523 | |||
| 2524 | #, fuzzy, c-format | ||
| 2525 | msgid "CRITICAL - Value '%s' does not exist!" | ||
| 2526 | msgstr "%s [%s nicht gefunden]" | ||
| 2527 | |||
| 2528 | #, c-format | ||
| 2529 | msgid "%s is %lu|%s=%lu;%lu;%lu;;" | ||
| 2530 | msgstr "" | ||
| 2531 | |||
| 2532 | msgid "Nothing to check!\n" | ||
| 2533 | msgstr "" | ||
| 2534 | |||
| 2535 | #, fuzzy | ||
| 2536 | msgid "Server port an integer\n" | ||
| 2537 | msgstr "skip lines muss ein Integer sein" | ||
| 2538 | |||
| 2539 | msgid "This plugin attempts to contact the MRTGEXT NLM running on a" | ||
| 2540 | msgstr "" | ||
| 2541 | |||
| 2542 | msgid "Novell server to gather the requested system information." | ||
| 2543 | msgstr "" | ||
| 2544 | |||
| 2545 | msgid "Variable to check. Valid variables include:" | ||
| 2546 | msgstr "" | ||
| 2547 | |||
| 2548 | msgid "LOAD1 = 1 minute average CPU load" | ||
| 2549 | msgstr "" | ||
| 2550 | |||
| 2551 | msgid "LOAD5 = 5 minute average CPU load" | ||
| 2552 | msgstr "" | ||
| 2553 | |||
| 2554 | msgid "LOAD15 = 15 minute average CPU load" | ||
| 2555 | msgstr "" | ||
| 2556 | |||
| 2557 | msgid "CSPROCS = number of current service processes (NW 5.x only)" | ||
| 2558 | msgstr "" | ||
| 2559 | |||
| 2560 | msgid "ABENDS = number of abended threads (NW 5.x only)" | ||
| 2561 | msgstr "" | ||
| 2562 | |||
| 2563 | msgid "UPTIME = server uptime" | ||
| 2564 | msgstr "" | ||
| 2565 | |||
| 2566 | msgid "LTCH = percent long term cache hits" | ||
| 2567 | msgstr "" | ||
| 2568 | |||
| 2569 | msgid "CBUFF = current number of cache buffers" | ||
| 2570 | msgstr "" | ||
| 2571 | |||
| 2572 | msgid "CDBUFF = current number of dirty cache buffers" | ||
| 2573 | msgstr "" | ||
| 2574 | |||
| 2575 | msgid "DCB = dirty cache buffers as a percentage of the total" | ||
| 2576 | msgstr "" | ||
| 2577 | |||
| 2578 | msgid "TCB = dirty cache buffers as a percentage of the original" | ||
| 2579 | msgstr "" | ||
| 2580 | |||
| 2581 | msgid "OFILES = number of open files" | ||
| 2582 | msgstr "" | ||
| 2583 | |||
| 2584 | msgid " VMF<vol> = MB of free space on Volume <vol>" | ||
| 2585 | msgstr "" | ||
| 2586 | |||
| 2587 | msgid " VMU<vol> = MB used space on Volume <vol>" | ||
| 2588 | msgstr "" | ||
| 2589 | |||
| 2590 | msgid " VMP<vol> = MB of purgeable space on Volume <vol>" | ||
| 2591 | msgstr "" | ||
| 2592 | |||
| 2593 | msgid " VPF<vol> = percent free space on volume <vol>" | ||
| 2594 | msgstr "" | ||
| 2595 | |||
| 2596 | msgid " VKF<vol> = KB of free space on volume <vol>" | ||
| 2597 | msgstr "" | ||
| 2598 | |||
| 2599 | msgid " VPP<vol> = percent purgeable space on volume <vol>" | ||
| 2600 | msgstr "" | ||
| 2601 | |||
| 2602 | msgid " VKP<vol> = KB of purgeable space on volume <vol>" | ||
| 2603 | msgstr "" | ||
| 2604 | |||
| 2605 | msgid " VPNP<vol> = percent not yet purgeable space on volume <vol>" | ||
| 2606 | msgstr "" | ||
| 2607 | |||
| 2608 | msgid " VKNP<vol> = KB of not yet purgeable space on volume <vol>" | ||
| 2609 | msgstr "" | ||
| 2610 | |||
| 2611 | msgid " LRUM = LRU sitting time in minutes" | ||
| 2612 | msgstr "" | ||
| 2613 | |||
| 2614 | msgid " LRUS = LRU sitting time in seconds" | ||
| 2615 | msgstr "" | ||
| 2616 | |||
| 2617 | msgid " DSDB = check to see if DS Database is open" | ||
| 2618 | msgstr "" | ||
| 2619 | |||
| 2620 | msgid " DSVER = NDS version" | ||
| 2621 | msgstr "" | ||
| 2622 | |||
| 2623 | msgid " UPRB = used packet receive buffers" | ||
| 2624 | msgstr "" | ||
| 2625 | |||
| 2626 | msgid " PUPRB = percent (of max) used packet receive buffers" | ||
| 2627 | msgstr "" | ||
| 2628 | |||
| 2629 | msgid " SAPENTRIES = number of entries in the SAP table" | ||
| 2630 | msgstr "" | ||
| 2631 | |||
| 2632 | msgid " SAPENTRIES<n> = number of entries in the SAP table for SAP type <n>" | ||
| 2633 | msgstr "" | ||
| 2634 | |||
| 2635 | msgid " TSYNC = timesync status" | ||
| 2636 | msgstr "" | ||
| 2637 | |||
| 2638 | msgid " LOGINS = check to see if logins are enabled" | ||
| 2639 | msgstr "" | ||
| 2640 | |||
| 2641 | msgid " CONNS = number of currently licensed connections" | ||
| 2642 | msgstr "" | ||
| 2643 | |||
| 2644 | msgid " NRMH\t= NRM Summary Status" | ||
| 2645 | msgstr "" | ||
| 2646 | |||
| 2647 | msgid " NRMP<stat> = Returns the current value for a NRM health item" | ||
| 2648 | msgstr "" | ||
| 2649 | |||
| 2650 | msgid " NRMM<stat> = Returns the current memory stats from NRM" | ||
| 2651 | msgstr "" | ||
| 2652 | |||
| 2653 | msgid " NRMS<stat> = Returns the current Swapfile stats from NRM" | ||
| 2654 | msgstr "" | ||
| 2655 | |||
| 2656 | msgid " NSS1<stat> = Statistics from _Admin:Manage_NSS\\GeneralStats.xml" | ||
| 2657 | msgstr "" | ||
| 2658 | |||
| 2659 | msgid " NSS3<stat> = Statistics from _Admin:Manage_NSS\\NameCache.xml" | ||
| 2660 | msgstr "" | ||
| 2661 | |||
| 2662 | msgid " NSS4<stat> = Statistics from _Admin:Manage_NSS\\FileStats.xml" | ||
| 2663 | msgstr "" | ||
| 2664 | |||
| 2665 | msgid " NSS5<stat> = Statistics from _Admin:Manage_NSS\\ObjectCache.xml" | ||
| 2666 | msgstr "" | ||
| 2667 | |||
| 2668 | msgid " NSS6<stat> = Statistics from _Admin:Manage_NSS\\Thread.xml" | ||
| 2669 | msgstr "" | ||
| 2670 | |||
| 2671 | msgid "" | ||
| 2672 | " NSS7<stat> = Statistics from _Admin:Manage_NSS\\AuthorizationCache.xml" | ||
| 2673 | msgstr "" | ||
| 2674 | |||
| 2675 | msgid " NLM:<nlm> = check if NLM is loaded and report version" | ||
| 2676 | msgstr "" | ||
| 2677 | |||
| 2678 | msgid " (e.g. NLM:TSANDS.NLM)" | ||
| 2679 | msgstr "" | ||
| 2680 | |||
| 2681 | msgid "Include server version string in results" | ||
| 2682 | msgstr "" | ||
| 2683 | |||
| 2684 | msgid "- This plugin requires that the MRTGEXT.NLM file from James Drews' MRTG" | ||
| 2685 | msgstr "" | ||
| 2686 | |||
| 2687 | msgid "" | ||
| 2688 | " extension for NetWare be loaded on the Novell servers you wish to check." | ||
| 2689 | msgstr "" | ||
| 2690 | |||
| 2691 | msgid " (available from http://www.engr.wisc.edu/~drews/mrtg/)" | ||
| 2692 | msgstr "" | ||
| 2693 | |||
| 2694 | msgid "" | ||
| 2695 | "- Values for critical thresholds should be lower than warning thresholds" | ||
| 2696 | msgstr "" | ||
| 2697 | |||
| 2698 | msgid "" | ||
| 2699 | " when the following variables are checked: VPF, VKF, LTCH, CBUFF, DCB, " | ||
| 2700 | msgstr "" | ||
| 2701 | |||
| 2702 | msgid " TCB, LRUS and LRUM." | ||
| 2703 | msgstr "" | ||
| 2704 | |||
| 2705 | msgid "Unknown error fetching load data\n" | ||
| 2706 | msgstr "" | ||
| 2707 | |||
| 2708 | msgid "Invalid response from server - no load information\n" | ||
| 2709 | msgstr "" | ||
| 2710 | |||
| 2711 | msgid "Invalid response from server after load 1\n" | ||
| 2712 | msgstr "" | ||
| 2713 | |||
| 2714 | msgid "Invalid response from server after load 5\n" | ||
| 2715 | msgstr "" | ||
| 2716 | |||
| 2717 | #, c-format | ||
| 2718 | msgid "Load %s - %s-min load average = %0.2f" | ||
| 2719 | msgstr "" | ||
| 2720 | |||
| 2721 | msgid "Unknown error fetching disk data\n" | ||
| 2722 | msgstr "" | ||
| 2723 | |||
| 2724 | msgid "Invalid response from server\n" | ||
| 2725 | msgstr "" | ||
| 2726 | |||
| 2727 | msgid "Unknown error fetching network status\n" | ||
| 2728 | msgstr "" | ||
| 2729 | |||
| 2730 | #, c-format | ||
| 2731 | msgid "Net %s - %d connection%s on port %d" | ||
| 2732 | msgstr "" | ||
| 2733 | |||
| 2734 | msgid "Unknown error fetching process status\n" | ||
| 2735 | msgstr "" | ||
| 2736 | |||
| 2737 | #, c-format | ||
| 2738 | msgid "Process %s - %d instance%s of %s running" | ||
| 2739 | msgstr "" | ||
| 2740 | |||
| 2741 | #, c-format | ||
| 2742 | msgid "Uptime %s - Up %d days %d hours %d minutes" | ||
| 2743 | msgstr "" | ||
| 2744 | |||
| 2745 | msgid "" | ||
| 2746 | "This plugin attempts to contact the Over-CR collector daemon running on the" | ||
| 2747 | msgstr "" | ||
| 2748 | |||
| 2749 | msgid "remote UNIX server in order to gather the requested system information." | ||
| 2750 | msgstr "" | ||
| 2751 | |||
| 2752 | msgid "LOAD1 = 1 minute average CPU load" | ||
| 2753 | msgstr "" | ||
| 2754 | |||
| 2755 | msgid "LOAD5 = 5 minute average CPU load" | ||
| 2756 | msgstr "" | ||
| 2757 | |||
| 2758 | msgid "LOAD15 = 15 minute average CPU load" | ||
| 2759 | msgstr "" | ||
| 2760 | |||
| 2761 | msgid "DPU<filesys> = percent used disk space on filesystem <filesys>" | ||
| 2762 | msgstr "" | ||
| 2763 | |||
| 2764 | msgid "PROC<process> = number of running processes with name <process>" | ||
| 2765 | msgstr "" | ||
| 2766 | |||
| 2767 | msgid "NET<port> = number of active connections on TCP port <port>" | ||
| 2768 | msgstr "" | ||
| 2769 | |||
| 2770 | msgid "UPTIME = system uptime in seconds" | ||
| 2771 | msgstr "" | ||
| 2772 | |||
| 2773 | msgid "This plugin requires that Eric Molitors' Over-CR collector daemon be" | ||
| 2774 | msgstr "" | ||
| 2775 | |||
| 2776 | msgid "running on the remote server." | ||
| 2777 | msgstr "" | ||
| 2778 | |||
| 2779 | msgid "Over-CR can be downloaded from http://www.molitor.org/overcr" | ||
| 2780 | msgstr "" | ||
| 2781 | |||
| 2782 | msgid "This plugin was tested with version 0.99.53 of the Over-CR collector" | ||
| 2783 | msgstr "" | ||
| 2784 | |||
| 2785 | msgid "" | ||
| 2786 | "For the available options, the critical threshold value should always be" | ||
| 2787 | msgstr "" | ||
| 2788 | |||
| 2789 | msgid "" | ||
| 2790 | "higher than the warning threshold value, EXCEPT with the uptime variable" | ||
| 2791 | msgstr "" | ||
| 2792 | |||
| 2793 | #, c-format | ||
| 2794 | msgid "CRITICAL - no connection to '%s' (%s).\n" | ||
| 2795 | msgstr "" | ||
| 2796 | |||
| 2797 | #, c-format | ||
| 2798 | msgid " %s - database %s (%f sec.)|%s\n" | ||
| 2799 | msgstr "" | ||
| 2800 | |||
| 2801 | msgid "Critical threshold must be a positive integer" | ||
| 2802 | msgstr "Critical threshold muss ein positiver Integer sein" | ||
| 2803 | |||
| 2804 | msgid "Warning threshold must be a positive integer" | ||
| 2805 | msgstr "Warning threshold muss ein positiver Integer sein" | ||
| 2806 | |||
| 2807 | msgid "Database name exceeds the maximum length" | ||
| 2808 | msgstr "" | ||
| 2809 | |||
| 2810 | msgid "User name is not valid" | ||
| 2811 | msgstr "" | ||
| 2812 | |||
| 2813 | #, c-format | ||
| 2814 | msgid "Test whether a PostgreSQL Database is accepting connections." | ||
| 2815 | msgstr "" | ||
| 2816 | |||
| 2817 | msgid "Database to check " | ||
| 2818 | msgstr "" | ||
| 2819 | |||
| 2820 | #, c-format | ||
| 2821 | msgid "(default: %s)\n" | ||
| 2822 | msgstr "" | ||
| 2823 | |||
| 2824 | msgid "Login name of user" | ||
| 2825 | msgstr "" | ||
| 2826 | |||
| 2827 | msgid "Password (BIG SECURITY ISSUE)" | ||
| 2828 | msgstr "" | ||
| 2829 | |||
| 2830 | msgid "Connection parameters (keyword = value), see below" | ||
| 2831 | msgstr "" | ||
| 2832 | |||
| 2833 | msgid "SQL query to run. Only first column in first row will be read" | ||
| 2834 | msgstr "" | ||
| 2835 | |||
| 2836 | msgid "A name for the query, this string is used instead of the query" | ||
| 2837 | msgstr "" | ||
| 2838 | |||
| 2839 | msgid "in the long output of the plugin" | ||
| 2840 | msgstr "" | ||
| 2841 | |||
| 2842 | msgid "SQL query value to result in warning status (double)" | ||
| 2843 | msgstr "" | ||
| 2844 | |||
| 2845 | msgid "SQL query value to result in critical status (double)" | ||
| 2846 | msgstr "" | ||
| 2847 | |||
| 2848 | msgid "All parameters are optional." | ||
| 2849 | msgstr "" | ||
| 2850 | |||
| 2851 | msgid "" | ||
| 2852 | "This plugin tests a PostgreSQL DBMS to determine whether it is active and" | ||
| 2853 | msgstr "" | ||
| 2854 | |||
| 2855 | msgid "accepting queries. In its current operation, it simply connects to the" | ||
| 2856 | msgstr "" | ||
| 2857 | |||
| 2858 | msgid "" | ||
| 2859 | "specified database, and then disconnects. If no database is specified, it" | ||
| 2860 | msgstr "" | ||
| 2861 | |||
| 2862 | msgid "" | ||
| 2863 | "connects to the template1 database, which is present in every functioning" | ||
| 2864 | msgstr "" | ||
| 2865 | |||
| 2866 | msgid "PostgreSQL DBMS." | ||
| 2867 | msgstr "" | ||
| 2868 | |||
| 2869 | msgid "If a query is specified using the -q option, it will be executed after" | ||
| 2870 | msgstr "" | ||
| 2871 | |||
| 2872 | msgid "connecting to the server. The result from the query has to be numeric." | ||
| 2873 | msgstr "" | ||
| 2874 | |||
| 2875 | msgid "" | ||
| 2876 | "Multiple SQL commands, separated by semicolon, are allowed but the result " | ||
| 2877 | msgstr "" | ||
| 2878 | |||
| 2879 | msgid "of the last command is taken into account only. The value of the first" | ||
| 2880 | msgstr "" | ||
| 2881 | |||
| 2882 | msgid "" | ||
| 2883 | "column in the first row is used as the check result. If a second column is" | ||
| 2884 | msgstr "" | ||
| 2885 | |||
| 2886 | msgid "present in the result set, this is added to the plugin output with a" | ||
| 2887 | msgstr "" | ||
| 2888 | |||
| 2889 | msgid "" | ||
| 2890 | "prefix of \"Extra Info:\". This information can be displayed in the system" | ||
| 2891 | msgstr "" | ||
| 2892 | |||
| 2893 | msgid "executing the plugin." | ||
| 2894 | msgstr "" | ||
| 2895 | |||
| 2896 | msgid "" | ||
| 2897 | "See the chapter \"Monitoring Database Activity\" of the PostgreSQL manual" | ||
| 2898 | msgstr "" | ||
| 2899 | |||
| 2900 | msgid "" | ||
| 2901 | "for details about how to access internal statistics of the database server." | ||
| 2902 | msgstr "" | ||
| 2903 | |||
| 2904 | msgid "" | ||
| 2905 | "For a list of available connection parameters which may be used with the -o" | ||
| 2906 | msgstr "" | ||
| 2907 | |||
| 2908 | msgid "" | ||
| 2909 | "command line option, see the documentation for PQconnectdb() in the chapter" | ||
| 2910 | msgstr "" | ||
| 2911 | |||
| 2912 | msgid "" | ||
| 2913 | "\"libpq - C Library\" of the PostgreSQL manual. For example, this may be" | ||
| 2914 | msgstr "" | ||
| 2915 | |||
| 2916 | msgid "" | ||
| 2917 | "used to specify a service name in pg_service.conf to be used for additional" | ||
| 2918 | msgstr "" | ||
| 2919 | |||
| 2920 | msgid "connection parameters: -o 'service=<name>' or to specify the SSL mode:" | ||
| 2921 | msgstr "" | ||
| 2922 | |||
| 2923 | msgid "-o 'sslmode=require'." | ||
| 2924 | msgstr "" | ||
| 2925 | |||
| 2926 | msgid "" | ||
| 2927 | "The plugin will connect to a local postmaster if no host is specified. To" | ||
| 2928 | msgstr "" | ||
| 2929 | |||
| 2930 | msgid "" | ||
| 2931 | "connect to a remote host, be sure that the remote postmaster accepts TCP/IP" | ||
| 2932 | msgstr "" | ||
| 2933 | |||
| 2934 | msgid "connections (start the postmaster with the -i option)." | ||
| 2935 | msgstr "" | ||
| 2936 | |||
| 2937 | msgid "" | ||
| 2938 | "Typically, the monitoring user (unless the --logname option is used) should " | ||
| 2939 | "be" | ||
| 2940 | msgstr "" | ||
| 2941 | |||
| 2942 | msgid "" | ||
| 2943 | "able to connect to the database without a password. The plugin can also send" | ||
| 2944 | msgstr "" | ||
| 2945 | |||
| 2946 | msgid "a password, but no effort is made to obscure or encrypt the password." | ||
| 2947 | msgstr "" | ||
| 2948 | |||
| 2949 | #, c-format | ||
| 2950 | msgid "QUERY %s - %s: %s.\n" | ||
| 2951 | msgstr "" | ||
| 2952 | |||
| 2953 | msgid "Error with query" | ||
| 2954 | msgstr "" | ||
| 2955 | |||
| 2956 | msgid "No rows returned" | ||
| 2957 | msgstr "" | ||
| 2958 | |||
| 2959 | msgid "No columns returned" | ||
| 2960 | msgstr "" | ||
| 2961 | |||
| 2962 | #, fuzzy | ||
| 2963 | msgid "No data returned" | ||
| 2964 | msgstr "Keine Daten empfangen %s\n" | ||
| 2965 | |||
| 2966 | msgid "Is not a numeric" | ||
| 2967 | msgstr "" | ||
| 2968 | |||
| 2969 | #, fuzzy, c-format | ||
| 2970 | msgid "%s returned %f" | ||
| 2971 | msgstr "%s hat %s zurückgegeben" | ||
| 2972 | |||
| 2973 | #, fuzzy, c-format | ||
| 2974 | msgid "'%s' returned %f" | ||
| 2975 | msgstr "%s hat %s zurückgegeben" | ||
| 2976 | |||
| 2977 | msgid "CRITICAL - Could not interpret output from ping command\n" | ||
| 2978 | msgstr "" | ||
| 2979 | |||
| 2980 | #, c-format | ||
| 2981 | msgid "PING %s - %sPacket loss = %d%%" | ||
| 2982 | msgstr "" | ||
| 2983 | |||
| 2984 | #, c-format | ||
| 2985 | msgid "PING %s - %sPacket loss = %d%%, RTA = %2.2f ms" | ||
| 2986 | msgstr "" | ||
| 2987 | |||
| 2988 | msgid "Could not realloc() addresses\n" | ||
| 2989 | msgstr "" | ||
| 2990 | |||
| 2991 | #, c-format | ||
| 2992 | msgid "<max_packets> (%s) must be a non-negative number\n" | ||
| 2993 | msgstr "" | ||
| 2994 | |||
| 2995 | #, c-format | ||
| 2996 | msgid "<wpl> (%s) must be an integer percentage\n" | ||
| 2997 | msgstr "" | ||
| 2998 | |||
| 2999 | #, c-format | ||
| 3000 | msgid "<cpl> (%s) must be an integer percentage\n" | ||
| 3001 | msgstr "" | ||
| 3002 | |||
| 3003 | #, c-format | ||
| 3004 | msgid "<wrta> (%s) must be a non-negative number\n" | ||
| 3005 | msgstr "" | ||
| 3006 | |||
| 3007 | #, c-format | ||
| 3008 | msgid "<crta> (%s) must be a non-negative number\n" | ||
| 3009 | msgstr "" | ||
| 3010 | |||
| 3011 | #, c-format | ||
| 3012 | msgid "" | ||
| 3013 | "%s: Warning threshold must be integer or percentage!\n" | ||
| 3014 | "\n" | ||
| 3015 | msgstr "" | ||
| 3016 | |||
| 3017 | #, c-format | ||
| 3018 | msgid "<wrta> was not set\n" | ||
| 3019 | msgstr "" | ||
| 3020 | |||
| 3021 | #, c-format | ||
| 3022 | msgid "<crta> was not set\n" | ||
| 3023 | msgstr "" | ||
| 3024 | |||
| 3025 | #, c-format | ||
| 3026 | msgid "<wpl> was not set\n" | ||
| 3027 | msgstr "" | ||
| 3028 | |||
| 3029 | #, c-format | ||
| 3030 | msgid "<cpl> was not set\n" | ||
| 3031 | msgstr "" | ||
| 3032 | |||
| 3033 | #, c-format | ||
| 3034 | msgid "<wrta> (%f) cannot be larger than <crta> (%f)\n" | ||
| 3035 | msgstr "" | ||
| 3036 | |||
| 3037 | #, c-format | ||
| 3038 | msgid "<wpl> (%d) cannot be larger than <cpl> (%d)\n" | ||
| 3039 | msgstr "" | ||
| 3040 | |||
| 3041 | #, c-format | ||
| 3042 | msgid "Cannot open stderr for %s\n" | ||
| 3043 | msgstr "" | ||
| 3044 | |||
| 3045 | msgid "System call sent warnings to stderr " | ||
| 3046 | msgstr "" | ||
| 3047 | |||
| 3048 | #, fuzzy, c-format | ||
| 3049 | msgid "CRITICAL - Network Unreachable (%s)\n" | ||
| 3050 | msgstr "CRITICAL - Netzwerk nicht erreichbar (%s)" | ||
| 3051 | |||
| 3052 | #, fuzzy, c-format | ||
| 3053 | msgid "CRITICAL - Host Unreachable (%s)\n" | ||
| 3054 | msgstr "CRITICAL - Netzwerk nicht erreichbar (%s)" | ||
| 3055 | |||
| 3056 | #, fuzzy, c-format | ||
| 3057 | msgid "CRITICAL - Bogus ICMP: Port Unreachable (%s)\n" | ||
| 3058 | msgstr "CRITICAL - Netzwerk nicht erreichbar (%s)" | ||
| 3059 | |||
| 3060 | #, fuzzy, c-format | ||
| 3061 | msgid "CRITICAL - Bogus ICMP: Protocol Unreachable (%s)\n" | ||
| 3062 | msgstr "CRITICAL - Netzwerk nicht erreichbar (%s)" | ||
| 3063 | |||
| 3064 | #, fuzzy, c-format | ||
| 3065 | msgid "CRITICAL - Network Prohibited (%s)\n" | ||
| 3066 | msgstr "CRITICAL - Netzwerk nicht erreichbar (%s)" | ||
| 3067 | |||
| 3068 | #, fuzzy, c-format | ||
| 3069 | msgid "CRITICAL - Host Prohibited (%s)\n" | ||
| 3070 | msgstr "CRITICAL - Netzwerk nicht erreichbar (%s)" | ||
| 3071 | |||
| 3072 | #, fuzzy, c-format | ||
| 3073 | msgid "CRITICAL - Packet Filtered (%s)\n" | ||
| 3074 | msgstr "CRITICAL - Netzwerk nicht erreichbar (%s)" | ||
| 3075 | |||
| 3076 | #, fuzzy, c-format | ||
| 3077 | msgid "CRITICAL - Host not found (%s)\n" | ||
| 3078 | msgstr "CRITICAL - Text nicht gefunden%s|%s %s\n" | ||
| 3079 | |||
| 3080 | #, fuzzy, c-format | ||
| 3081 | msgid "CRITICAL - Time to live exceeded (%s)\n" | ||
| 3082 | msgstr "CRITICAL - Netzwerk nicht erreichbar (%s)" | ||
| 3083 | |||
| 3084 | #, fuzzy, c-format | ||
| 3085 | msgid "CRITICAL - Destination Unreachable (%s)\n" | ||
| 3086 | msgstr "CRITICAL - Netzwerk nicht erreichbar (%s)" | ||
| 3087 | |||
| 3088 | msgid "Unable to realloc warn_text\n" | ||
| 3089 | msgstr "" | ||
| 3090 | |||
| 3091 | #, c-format | ||
| 3092 | msgid "Use ping to check connection statistics for a remote host." | ||
| 3093 | msgstr "" | ||
| 3094 | |||
| 3095 | msgid "host to ping" | ||
| 3096 | msgstr "" | ||
| 3097 | |||
| 3098 | msgid "number of ICMP ECHO packets to send" | ||
| 3099 | msgstr "" | ||
| 3100 | |||
| 3101 | #, c-format | ||
| 3102 | msgid "(Default: %d)\n" | ||
| 3103 | msgstr "" | ||
| 3104 | |||
| 3105 | msgid "show HTML in the plugin output (obsoleted by urlize)" | ||
| 3106 | msgstr "" | ||
| 3107 | |||
| 3108 | msgid "THRESHOLD is <rta>,<pl>% where <rta> is the round trip average travel" | ||
| 3109 | msgstr "" | ||
| 3110 | |||
| 3111 | msgid "time (ms) which triggers a WARNING or CRITICAL state, and <pl> is the" | ||
| 3112 | msgstr "" | ||
| 3113 | |||
| 3114 | msgid "percentage of packet loss to trigger an alarm state." | ||
| 3115 | msgstr "" | ||
| 3116 | |||
| 3117 | #, fuzzy | ||
| 3118 | msgid "" | ||
| 3119 | "This plugin uses the ping command to probe the specified host for packet loss" | ||
| 3120 | msgstr "Dieses plugin testet Gameserververbindungen zum angegebenen Host." | ||
| 3121 | |||
| 3122 | msgid "" | ||
| 3123 | "(percentage) and round trip average (milliseconds). It can produce HTML " | ||
| 3124 | "output" | ||
| 3125 | msgstr "" | ||
| 3126 | |||
| 3127 | msgid "" | ||
| 3128 | "linking to a traceroute CGI contributed by Ian Cass. The CGI can be found in" | ||
| 3129 | msgstr "" | ||
| 3130 | |||
| 3131 | msgid "the contrib area of the downloads section at http://www.nagios.org/" | ||
| 3132 | msgstr "" | ||
| 3133 | |||
| 3134 | #, c-format | ||
| 3135 | msgid "CMD: %s\n" | ||
| 3136 | msgstr "" | ||
| 3137 | |||
| 3138 | msgid "System call sent warnings to stderr" | ||
| 3139 | msgstr "" | ||
| 3140 | |||
| 3141 | #, c-format | ||
| 3142 | msgid "Not parseable: %s" | ||
| 3143 | msgstr "" | ||
| 3144 | |||
| 3145 | #, c-format | ||
| 3146 | msgid "Unable to read output\n" | ||
| 3147 | msgstr "" | ||
| 3148 | |||
| 3149 | #, c-format | ||
| 3150 | msgid "%d warn out of " | ||
| 3151 | msgstr "" | ||
| 3152 | |||
| 3153 | #, c-format | ||
| 3154 | msgid "%d crit, %d warn out of " | ||
| 3155 | msgstr "" | ||
| 3156 | |||
| 3157 | #, c-format | ||
| 3158 | msgid " with %s" | ||
| 3159 | msgstr "" | ||
| 3160 | |||
| 3161 | #, fuzzy | ||
| 3162 | msgid "Parent Process ID must be an integer!" | ||
| 3163 | msgstr "Argument für check_dummy muss ein Integer sein" | ||
| 3164 | |||
| 3165 | #, c-format | ||
| 3166 | msgid "%s%sSTATE = %s" | ||
| 3167 | msgstr "" | ||
| 3168 | |||
| 3169 | #, fuzzy | ||
| 3170 | msgid "UID was not found" | ||
| 3171 | msgstr "%s [%s nicht gefunden]" | ||
| 3172 | |||
| 3173 | #, fuzzy | ||
| 3174 | msgid "User name was not found" | ||
| 3175 | msgstr "%s [%s nicht gefunden]" | ||
| 3176 | |||
| 3177 | #, c-format | ||
| 3178 | msgid "%s%scommand name '%s'" | ||
| 3179 | msgstr "" | ||
| 3180 | |||
| 3181 | #, c-format | ||
| 3182 | msgid "%s%sexclude progs '%s'" | ||
| 3183 | msgstr "" | ||
| 3184 | |||
| 3185 | #, fuzzy | ||
| 3186 | msgid "RSS must be an integer!" | ||
| 3187 | msgstr "skip lines muss ein Integer sein" | ||
| 3188 | |||
| 3189 | #, fuzzy | ||
| 3190 | msgid "VSZ must be an integer!" | ||
| 3191 | msgstr "skip lines muss ein Integer sein" | ||
| 3192 | |||
| 3193 | msgid "PCPU must be a float!" | ||
| 3194 | msgstr "" | ||
| 3195 | |||
| 3196 | msgid "Metric must be one of PROCS, VSZ, RSS, CPU, ELAPSED!" | ||
| 3197 | msgstr "" | ||
| 3198 | |||
| 3199 | msgid "" | ||
| 3200 | "Checks all processes and generates WARNING or CRITICAL states if the " | ||
| 3201 | "specified" | ||
| 3202 | msgstr "" | ||
| 3203 | |||
| 3204 | msgid "" | ||
| 3205 | "metric is outside the required threshold ranges. The metric defaults to " | ||
| 3206 | "number" | ||
| 3207 | msgstr "" | ||
| 3208 | |||
| 3209 | msgid "" | ||
| 3210 | "of processes. Search filters can be applied to limit the processes to check." | ||
| 3211 | msgstr "" | ||
| 3212 | |||
| 3213 | msgid "Generate warning state if metric is outside this range" | ||
| 3214 | msgstr "" | ||
| 3215 | |||
| 3216 | msgid "Generate critical state if metric is outside this range" | ||
| 3217 | msgstr "" | ||
| 3218 | |||
| 3219 | msgid "Check thresholds against metric. Valid types:" | ||
| 3220 | msgstr "" | ||
| 3221 | |||
| 3222 | msgid "PROCS - number of processes (default)" | ||
| 3223 | msgstr "" | ||
| 3224 | |||
| 3225 | msgid "VSZ - virtual memory size" | ||
| 3226 | msgstr "" | ||
| 3227 | |||
| 3228 | msgid "RSS - resident set memory size" | ||
| 3229 | msgstr "" | ||
| 3230 | |||
| 3231 | msgid "CPU - percentage CPU" | ||
| 3232 | msgstr "" | ||
| 3233 | |||
| 3234 | msgid "ELAPSED - time elapsed in seconds" | ||
| 3235 | msgstr "" | ||
| 3236 | |||
| 3237 | msgid "Extra information. Up to 3 verbosity levels" | ||
| 3238 | msgstr "" | ||
| 3239 | |||
| 3240 | msgid "Filter own process the traditional way by PID instead of /proc/pid/exe" | ||
| 3241 | msgstr "" | ||
| 3242 | |||
| 3243 | msgid "Only scan for processes that have, in the output of `ps`, one or" | ||
| 3244 | msgstr "" | ||
| 3245 | |||
| 3246 | msgid "more of the status flags you specify (for example R, Z, S, RS," | ||
| 3247 | msgstr "" | ||
| 3248 | |||
| 3249 | msgid "RSZDT, plus others based on the output of your 'ps' command)." | ||
| 3250 | msgstr "" | ||
| 3251 | |||
| 3252 | msgid "Only scan for children of the parent process ID indicated." | ||
| 3253 | msgstr "" | ||
| 3254 | |||
| 3255 | msgid "Only scan for processes with VSZ higher than indicated." | ||
| 3256 | msgstr "" | ||
| 3257 | |||
| 3258 | msgid "Only scan for processes with RSS higher than indicated." | ||
| 3259 | msgstr "" | ||
| 3260 | |||
| 3261 | msgid "Only scan for processes with PCPU higher than indicated." | ||
| 3262 | msgstr "" | ||
| 3263 | |||
| 3264 | msgid "Only scan for processes with user name or ID indicated." | ||
| 3265 | msgstr "" | ||
| 3266 | |||
| 3267 | msgid "Only scan for processes with args that contain STRING." | ||
| 3268 | msgstr "" | ||
| 3269 | |||
| 3270 | msgid "Only scan for processes with args that contain the regex STRING." | ||
| 3271 | msgstr "" | ||
| 3272 | |||
| 3273 | msgid "Only scan for exact matches of COMMAND (without path)." | ||
| 3274 | msgstr "" | ||
| 3275 | |||
| 3276 | msgid "Exclude processes which match this comma separated list" | ||
| 3277 | msgstr "" | ||
| 3278 | |||
| 3279 | msgid "Only scan for non kernel threads (works on Linux only)." | ||
| 3280 | msgstr "" | ||
| 3281 | |||
| 3282 | #, c-format | ||
| 3283 | msgid "" | ||
| 3284 | "\n" | ||
| 3285 | "RANGEs are specified 'min:max' or 'min:' or ':max' (or 'max'). If\n" | ||
| 3286 | "specified 'max:min', a warning status will be generated if the\n" | ||
| 3287 | "count is inside the specified range\n" | ||
| 3288 | "\n" | ||
| 3289 | msgstr "" | ||
| 3290 | |||
| 3291 | #, c-format | ||
| 3292 | msgid "" | ||
| 3293 | "This plugin checks the number of currently running processes and\n" | ||
| 3294 | "generates WARNING or CRITICAL states if the process count is outside\n" | ||
| 3295 | "the specified threshold ranges. The process count can be filtered by\n" | ||
| 3296 | "process owner, parent process PID, current state (e.g., 'Z'), or may\n" | ||
| 3297 | "be the total number of running processes\n" | ||
| 3298 | "\n" | ||
| 3299 | msgstr "" | ||
| 3300 | |||
| 3301 | msgid "Warning if not two processes with command name portsentry." | ||
| 3302 | msgstr "" | ||
| 3303 | |||
| 3304 | msgid "Critical if < 2 or > 1024 processes" | ||
| 3305 | msgstr "" | ||
| 3306 | |||
| 3307 | msgid "Critical if not at least 1 process with command sshd" | ||
| 3308 | msgstr "" | ||
| 3309 | |||
| 3310 | msgid "Warning if > 1024 processes with command name sshd." | ||
| 3311 | msgstr "" | ||
| 3312 | |||
| 3313 | msgid "Critical if < 1 processes with command name sshd." | ||
| 3314 | msgstr "" | ||
| 3315 | |||
| 3316 | msgid "Warning alert if > 10 processes with command arguments containing" | ||
| 3317 | msgstr "" | ||
| 3318 | |||
| 3319 | msgid "'/usr/local/bin/perl' and owned by root" | ||
| 3320 | msgstr "" | ||
| 3321 | |||
| 3322 | msgid "Alert if VSZ of any processes over 50K or 100K" | ||
| 3323 | msgstr "" | ||
| 3324 | |||
| 3325 | msgid "Alert if CPU of any processes over 10% or 20%" | ||
| 3326 | msgstr "" | ||
| 3327 | |||
| 3328 | msgid "Config file error\n" | ||
| 3329 | msgstr "" | ||
| 3330 | |||
| 3331 | #, fuzzy | ||
| 3332 | msgid "Out of Memory?\n" | ||
| 3333 | msgstr "Kein Papier" | ||
| 3334 | |||
| 3335 | #, fuzzy | ||
| 3336 | msgid "Invalid NAS-Identifier\n" | ||
| 3337 | msgstr "Ungültige(r) Hostname/Adresse" | ||
| 3338 | |||
| 3339 | #, c-format | ||
| 3340 | msgid "gethostname() failed!\n" | ||
| 3341 | msgstr "" | ||
| 3342 | |||
| 3343 | #, fuzzy | ||
| 3344 | msgid "Invalid NAS-IP-Address\n" | ||
| 3345 | msgstr "Ungültige(r) Hostname/Adresse" | ||
| 3346 | |||
| 3347 | msgid "Timeout\n" | ||
| 3348 | msgstr "" | ||
| 3349 | |||
| 3350 | msgid "Auth Error\n" | ||
| 3351 | msgstr "" | ||
| 3352 | |||
| 3353 | #, fuzzy | ||
| 3354 | msgid "Auth Failed\n" | ||
| 3355 | msgstr "Fehlgeschlagen" | ||
| 3356 | |||
| 3357 | msgid "Bad Response\n" | ||
| 3358 | msgstr "" | ||
| 3359 | |||
| 3360 | msgid "Auth OK\n" | ||
| 3361 | msgstr "" | ||
| 3362 | |||
| 3363 | #, fuzzy, c-format | ||
| 3364 | msgid "Unexpected result code %d" | ||
| 3365 | msgstr "Erwartet: %s aber: %s erhalten" | ||
| 3366 | |||
| 3367 | msgid "Number of retries must be a positive integer" | ||
| 3368 | msgstr "" | ||
| 3369 | |||
| 3370 | msgid "User not specified" | ||
| 3371 | msgstr "" | ||
| 3372 | |||
| 3373 | msgid "Password not specified" | ||
| 3374 | msgstr "" | ||
| 3375 | |||
| 3376 | msgid "Configuration file not specified" | ||
| 3377 | msgstr "" | ||
| 3378 | |||
| 3379 | #, fuzzy | ||
| 3380 | msgid "Tests to see if a RADIUS server is accepting connections." | ||
| 3381 | msgstr "Dieses plugin testet Gameserververbindungen zum angegebenen Host." | ||
| 3382 | |||
| 3383 | msgid "The user to authenticate" | ||
| 3384 | msgstr "" | ||
| 3385 | |||
| 3386 | msgid "Password for authentication (SECURITY RISK)" | ||
| 3387 | msgstr "" | ||
| 3388 | |||
| 3389 | msgid "NAS identifier" | ||
| 3390 | msgstr "" | ||
| 3391 | |||
| 3392 | msgid "NAS IP Address" | ||
| 3393 | msgstr "" | ||
| 3394 | |||
| 3395 | msgid "Configuration file" | ||
| 3396 | msgstr "" | ||
| 3397 | |||
| 3398 | msgid "Response string to expect from the server" | ||
| 3399 | msgstr "" | ||
| 3400 | |||
| 3401 | msgid "Number of times to retry a failed connection" | ||
| 3402 | msgstr "" | ||
| 3403 | |||
| 3404 | #, fuzzy | ||
| 3405 | msgid "" | ||
| 3406 | "This plugin tests a RADIUS server to see if it is accepting connections." | ||
| 3407 | msgstr "Dieses plugin testet Gameserververbindungen zum angegebenen Host." | ||
| 3408 | |||
| 3409 | msgid "" | ||
| 3410 | "The server to test must be specified in the invocation, as well as a user" | ||
| 3411 | msgstr "" | ||
| 3412 | |||
| 3413 | msgid "name and password. A configuration file must be present. The format of" | ||
| 3414 | msgstr "" | ||
| 3415 | |||
| 3416 | msgid "" | ||
| 3417 | "the configuration file is described in the radiusclient library sources." | ||
| 3418 | msgstr "" | ||
| 3419 | |||
| 3420 | msgid "The password option presents a substantial security issue because the" | ||
| 3421 | msgstr "" | ||
| 3422 | |||
| 3423 | msgid "" | ||
| 3424 | "password can possibly be determined by careful watching of the command line" | ||
| 3425 | msgstr "" | ||
| 3426 | |||
| 3427 | msgid "in a process listing. This risk is exacerbated because the plugin will" | ||
| 3428 | msgstr "" | ||
| 3429 | |||
| 3430 | msgid "" | ||
| 3431 | "typically be executed at regular predictable intervals. Please be sure that" | ||
| 3432 | msgstr "" | ||
| 3433 | |||
| 3434 | msgid "the password used does not allow access to sensitive system resources." | ||
| 3435 | msgstr "" | ||
| 3436 | |||
| 3437 | #, c-format | ||
| 3438 | msgid "Unable to connect to %s on port %d\n" | ||
| 3439 | msgstr "" | ||
| 3440 | |||
| 3441 | #, c-format | ||
| 3442 | msgid "No data received from %s\n" | ||
| 3443 | msgstr "" | ||
| 3444 | |||
| 3445 | #, fuzzy | ||
| 3446 | msgid "Invalid REAL response received from host" | ||
| 3447 | msgstr "Ungültige HTTP Antwort von Host empfangen\n" | ||
| 3448 | |||
| 3449 | #, c-format | ||
| 3450 | msgid "Invalid REAL response received from host on port %d\n" | ||
| 3451 | msgstr "" | ||
| 3452 | |||
| 3453 | #, c-format | ||
| 3454 | msgid "No data received from host\n" | ||
| 3455 | msgstr "" | ||
| 3456 | |||
| 3457 | #, c-format | ||
| 3458 | msgid "REAL %s - %d second response time\n" | ||
| 3459 | msgstr "" | ||
| 3460 | |||
| 3461 | msgid "Warning time must be a positive integer" | ||
| 3462 | msgstr "Warnung time muss ein positiver Integer sein" | ||
| 3463 | |||
| 3464 | msgid "Critical time must be a positive integer" | ||
| 3465 | msgstr "Critical time muss ein positiver Integer sein" | ||
| 3466 | |||
| 3467 | #, fuzzy | ||
| 3468 | msgid "You must provide a server to check" | ||
| 3469 | msgstr "%s: Hostname muss angegeben werden\n" | ||
| 3470 | |||
| 3471 | #, fuzzy | ||
| 3472 | msgid "This plugin tests the REAL service on the specified host." | ||
| 3473 | msgstr "" | ||
| 3474 | "Testet den DNS Dienst auf dem angegebenen Host mit dig\n" | ||
| 3475 | "\n" | ||
| 3476 | |||
| 3477 | msgid "Connect to this url" | ||
| 3478 | msgstr "" | ||
| 3479 | |||
| 3480 | #, c-format | ||
| 3481 | msgid "String to expect in first line of server response (default: %s)\n" | ||
| 3482 | msgstr "" | ||
| 3483 | |||
| 3484 | #, fuzzy | ||
| 3485 | msgid "This plugin will attempt to open an RTSP connection with the host." | ||
| 3486 | msgstr "Dieses plugin testet Gameserververbindungen zum angegebenen Host." | ||
| 3487 | |||
| 3488 | msgid "Successful connects return STATE_OK, refusals and timeouts return" | ||
| 3489 | msgstr "" | ||
| 3490 | |||
| 3491 | msgid "" | ||
| 3492 | "STATE_CRITICAL, other errors return STATE_UNKNOWN. Successful connects," | ||
| 3493 | msgstr "" | ||
| 3494 | |||
| 3495 | msgid "" | ||
| 3496 | "but incorrect response messages from the host result in STATE_WARNING return" | ||
| 3497 | msgstr "" | ||
| 3498 | |||
| 3499 | msgid "values." | ||
| 3500 | msgstr "" | ||
| 3501 | |||
| 3502 | #, c-format | ||
| 3503 | msgid "malloc() failed!\n" | ||
| 3504 | msgstr "" | ||
| 3505 | |||
| 3506 | #, c-format | ||
| 3507 | msgid "CRITICAL - Cannot create SSL context.\n" | ||
| 3508 | msgstr "" | ||
| 3509 | |||
| 3510 | #, c-format | ||
| 3511 | msgid "recv() failed\n" | ||
| 3512 | msgstr "" | ||
| 3513 | |||
| 3514 | #, c-format | ||
| 3515 | msgid "WARNING - TLS not supported by server\n" | ||
| 3516 | msgstr "" | ||
| 3517 | |||
| 3518 | #, c-format | ||
| 3519 | msgid "Server does not support STARTTLS\n" | ||
| 3520 | msgstr "" | ||
| 3521 | |||
| 3522 | msgid "SMTP UNKNOWN - Cannot send EHLO command via TLS." | ||
| 3523 | msgstr "" | ||
| 3524 | |||
| 3525 | #, c-format | ||
| 3526 | msgid "sent %s" | ||
| 3527 | msgstr "" | ||
| 3528 | |||
| 3529 | msgid "SMTP UNKNOWN - Cannot read EHLO response via TLS." | ||
| 3530 | msgstr "" | ||
| 3531 | |||
| 3532 | #, fuzzy, c-format | ||
| 3533 | msgid "Invalid SMTP response received from host: %s\n" | ||
| 3534 | msgstr "Ungültige HTTP Antwort von Host empfangen\n" | ||
| 3535 | |||
| 3536 | #, fuzzy, c-format | ||
| 3537 | msgid "Invalid SMTP response received from host on port %d: %s\n" | ||
| 3538 | msgstr "Ungültige HTTP Antwort von Host erhalten auf Port %d\n" | ||
| 3539 | |||
| 3540 | #, c-format | ||
| 3541 | msgid "Could Not Compile Regular Expression" | ||
| 3542 | msgstr "" | ||
| 3543 | |||
| 3544 | #, c-format | ||
| 3545 | msgid "SMTP %s - Invalid response '%s' to command '%s'\n" | ||
| 3546 | msgstr "" | ||
| 3547 | |||
| 3548 | #, c-format | ||
| 3549 | msgid "Execute Error: %s\n" | ||
| 3550 | msgstr "" | ||
| 3551 | |||
| 3552 | msgid "no authuser specified, " | ||
| 3553 | msgstr "" | ||
| 3554 | |||
| 3555 | msgid "no authpass specified, " | ||
| 3556 | msgstr "" | ||
| 3557 | |||
| 3558 | #, c-format | ||
| 3559 | msgid "sent %s\n" | ||
| 3560 | msgstr "" | ||
| 3561 | |||
| 3562 | #, fuzzy | ||
| 3563 | msgid "recv() failed after AUTH LOGIN, " | ||
| 3564 | msgstr "Ungültige HTTP Antwort von Host empfangen\n" | ||
| 3565 | |||
| 3566 | #, fuzzy, c-format | ||
| 3567 | msgid "received %s\n" | ||
| 3568 | msgstr "Keine Daten empfangen %s\n" | ||
| 3569 | |||
| 3570 | #, fuzzy | ||
| 3571 | msgid "invalid response received after AUTH LOGIN, " | ||
| 3572 | msgstr "Ungültige HTTP Antwort von Host empfangen\n" | ||
| 3573 | |||
| 3574 | msgid "recv() failed after sending authuser, " | ||
| 3575 | msgstr "" | ||
| 3576 | |||
| 3577 | #, fuzzy | ||
| 3578 | msgid "invalid response received after authuser, " | ||
| 3579 | msgstr "Ungültige HTTP Antwort von Host empfangen\n" | ||
| 3580 | |||
| 3581 | msgid "recv() failed after sending authpass, " | ||
| 3582 | msgstr "" | ||
| 3583 | |||
| 3584 | #, fuzzy | ||
| 3585 | msgid "invalid response received after authpass, " | ||
| 3586 | msgstr "Ungültige HTTP Antwort von Host empfangen\n" | ||
| 3587 | |||
| 3588 | msgid "only authtype LOGIN is supported, " | ||
| 3589 | msgstr "" | ||
| 3590 | |||
| 3591 | #, fuzzy, c-format | ||
| 3592 | msgid "SMTP %s - %s%.3f sec. response time%s%s|%s\n" | ||
| 3593 | msgstr " - %s - %.3f Sekunden Antwortzeit %s%s|%s %s\n" | ||
| 3594 | |||
| 3595 | #, c-format | ||
| 3596 | msgid "Could not realloc() units [%d]\n" | ||
| 3597 | msgstr "" | ||
| 3598 | |||
| 3599 | #, fuzzy | ||
| 3600 | msgid "Critical time must be a positive" | ||
| 3601 | msgstr "Critical time muss ein positiver Integer sein" | ||
| 3602 | |||
| 3603 | #, fuzzy | ||
| 3604 | msgid "Warning time must be a positive" | ||
| 3605 | msgstr "Warnung time muss ein positiver Integer sein" | ||
| 3606 | |||
| 3607 | msgid "SSL support not available - install OpenSSL and recompile" | ||
| 3608 | msgstr "" | ||
| 3609 | |||
| 3610 | msgid "Set either -s/--ssl/--tls or -S/--starttls" | ||
| 3611 | msgstr "Setze entweder -s/--ssl/--tls oder -S/--starttls" | ||
| 3612 | |||
| 3613 | #, c-format | ||
| 3614 | msgid "Connection closed by server before sending QUIT command\n" | ||
| 3615 | msgstr "" | ||
| 3616 | |||
| 3617 | #, fuzzy, c-format | ||
| 3618 | msgid "recv() failed after QUIT." | ||
| 3619 | msgstr "Ungültige HTTP Antwort von Host empfangen\n" | ||
| 3620 | |||
| 3621 | #, c-format | ||
| 3622 | msgid "Connection reset by peer." | ||
| 3623 | msgstr "" | ||
| 3624 | |||
| 3625 | #, fuzzy | ||
| 3626 | msgid "This plugin will attempt to open an SMTP connection with the host." | ||
| 3627 | msgstr "Dieses plugin testet Gameserververbindungen zum angegebenen Host." | ||
| 3628 | |||
| 3629 | #, c-format | ||
| 3630 | msgid " String to expect in first line of server response (default: '%s')\n" | ||
| 3631 | msgstr "" | ||
| 3632 | |||
| 3633 | msgid "SMTP command (may be used repeatedly)" | ||
| 3634 | msgstr "" | ||
| 3635 | |||
| 3636 | msgid "Expected response to command (may be used repeatedly)" | ||
| 3637 | msgstr "" | ||
| 3638 | |||
| 3639 | msgid "FROM-address to include in MAIL command, required by Exchange 2000" | ||
| 3640 | msgstr "" | ||
| 3641 | |||
| 3642 | msgid "FQDN used for HELO" | ||
| 3643 | msgstr "" | ||
| 3644 | |||
| 3645 | msgid "Use PROXY protocol prefix for the connection." | ||
| 3646 | msgstr "Benutze PROXY-Protokoll-Präfix für die Verbindung." | ||
| 3647 | |||
| 3648 | msgid "Minimum number of days a certificate has to be valid." | ||
| 3649 | msgstr "" | ||
| 3650 | |||
| 3651 | #, fuzzy | ||
| 3652 | msgid "Use SSL/TLS for the connection." | ||
| 3653 | msgstr "Benutze SSL/TLS für die Verbindung." | ||
| 3654 | |||
| 3655 | #, c-format | ||
| 3656 | msgid " Sets default port to %d.\n" | ||
| 3657 | msgstr " Setze den Default-Port auf %d.\n" | ||
| 3658 | |||
| 3659 | msgid "Use STARTTLS for the connection." | ||
| 3660 | msgstr "Benutze STARTTLS für die Verbindung." | ||
| 3661 | |||
| 3662 | msgid "SMTP AUTH type to check (default none, only LOGIN supported)" | ||
| 3663 | msgstr "" | ||
| 3664 | |||
| 3665 | msgid "SMTP AUTH username" | ||
| 3666 | msgstr "" | ||
| 3667 | |||
| 3668 | msgid "SMTP AUTH password" | ||
| 3669 | msgstr "" | ||
| 3670 | |||
| 3671 | msgid "Send LHLO instead of HELO/EHLO" | ||
| 3672 | msgstr "" | ||
| 3673 | |||
| 3674 | msgid "Ignore failure when sending QUIT command to server" | ||
| 3675 | msgstr "" | ||
| 3676 | |||
| 3677 | msgid "STATE_CRITICAL, other errors return STATE_UNKNOWN. Successful" | ||
| 3678 | msgstr "" | ||
| 3679 | |||
| 3680 | msgid "connects, but incorrect response messages from the host result in" | ||
| 3681 | msgstr "" | ||
| 3682 | |||
| 3683 | msgid "STATE_WARNING return values." | ||
| 3684 | msgstr "" | ||
| 3685 | |||
| 3686 | msgid "Cannot malloc" | ||
| 3687 | msgstr "" | ||
| 3688 | |||
| 3689 | #, fuzzy, c-format | ||
| 3690 | msgid "External command error: %s\n" | ||
| 3691 | msgstr "Papierfehler" | ||
| 3692 | |||
| 3693 | #, c-format | ||
| 3694 | msgid "External command error with no output (return code: %d)\n" | ||
| 3695 | msgstr "" | ||
| 3696 | |||
| 3697 | #, fuzzy, c-format | ||
| 3698 | msgid "No valid data returned (%s)\n" | ||
| 3699 | msgstr "Keine Daten empfangen %s\n" | ||
| 3700 | |||
| 3701 | msgid "Time duration between plugin calls is invalid" | ||
| 3702 | msgstr "" | ||
| 3703 | |||
| 3704 | msgid "Cannot asprintf()" | ||
| 3705 | msgstr "" | ||
| 3706 | |||
| 3707 | msgid "Cannot realloc()" | ||
| 3708 | msgstr "" | ||
| 3709 | |||
| 3710 | msgid "No previous data to calculate rate - assume okay" | ||
| 3711 | msgstr "" | ||
| 3712 | |||
| 3713 | #, fuzzy | ||
| 3714 | msgid "Retries interval must be a positive integer" | ||
| 3715 | msgstr "Time interval muss ein positiver Integer sein" | ||
| 3716 | |||
| 3717 | #, fuzzy | ||
| 3718 | msgid "Exit status must be a positive integer" | ||
| 3719 | msgstr "Maxbytes muss ein positiver Integer sein" | ||
| 3720 | |||
| 3721 | #, fuzzy, c-format | ||
| 3722 | msgid "Could not reallocate labels[%d]" | ||
| 3723 | msgstr "Konnte addr nicht zuweisen\n" | ||
| 3724 | |||
| 3725 | #, fuzzy | ||
| 3726 | msgid "Could not reallocate labels\n" | ||
| 3727 | msgstr "Konnte·url·nicht·zuweisen\n" | ||
| 3728 | |||
| 3729 | #, fuzzy, c-format | ||
| 3730 | msgid "Could not reallocate units [%d]\n" | ||
| 3731 | msgstr "Konnte·url·nicht·zuweisen\n" | ||
| 3732 | |||
| 3733 | msgid "Could not realloc() units\n" | ||
| 3734 | msgstr "" | ||
| 3735 | |||
| 3736 | #, fuzzy | ||
| 3737 | msgid "Rate multiplier must be a positive integer" | ||
| 3738 | msgstr "Paketgröße muss ein positiver Integer sein" | ||
| 3739 | |||
| 3740 | #, fuzzy | ||
| 3741 | msgid "No host specified\n" | ||
| 3742 | msgstr "" | ||
| 3743 | "Kein Hostname angegeben\n" | ||
| 3744 | "\n" | ||
| 3745 | |||
| 3746 | #, fuzzy | ||
| 3747 | msgid "No OIDs specified\n" | ||
| 3748 | msgstr "" | ||
| 3749 | "Kein Hostname angegeben\n" | ||
| 3750 | "\n" | ||
| 3751 | |||
| 3752 | #, c-format | ||
| 3753 | msgid "Required parameter: %s\n" | ||
| 3754 | msgstr "" | ||
| 3755 | |||
| 3756 | msgid "Invalid seclevel" | ||
| 3757 | msgstr "" | ||
| 3758 | |||
| 3759 | msgid "Invalid SNMP version" | ||
| 3760 | msgstr "" | ||
| 3761 | |||
| 3762 | msgid "Unbalanced quotes\n" | ||
| 3763 | msgstr "" | ||
| 3764 | |||
| 3765 | #, c-format | ||
| 3766 | msgid "multiplier set (%.1f), but input is not a number: %s" | ||
| 3767 | msgstr "" | ||
| 3768 | |||
| 3769 | msgid "Check status of remote machines and obtain system information via SNMP" | ||
| 3770 | msgstr "" | ||
| 3771 | |||
| 3772 | msgid "Use SNMP GETNEXT instead of SNMP GET" | ||
| 3773 | msgstr "" | ||
| 3774 | |||
| 3775 | msgid "SNMP protocol version" | ||
| 3776 | msgstr "" | ||
| 3777 | |||
| 3778 | msgid "SNMPv3 context" | ||
| 3779 | msgstr "" | ||
| 3780 | |||
| 3781 | msgid "SNMPv3 securityLevel" | ||
| 3782 | msgstr "" | ||
| 3783 | |||
| 3784 | msgid "SNMPv3 auth proto" | ||
| 3785 | msgstr "" | ||
| 3786 | |||
| 3787 | msgid "SNMPv3 priv proto (default DES)" | ||
| 3788 | msgstr "" | ||
| 3789 | |||
| 3790 | msgid "Optional community string for SNMP communication" | ||
| 3791 | msgstr "" | ||
| 3792 | |||
| 3793 | msgid "default is" | ||
| 3794 | msgstr "" | ||
| 3795 | |||
| 3796 | msgid "SNMPv3 username" | ||
| 3797 | msgstr "" | ||
| 3798 | |||
| 3799 | msgid "SNMPv3 authentication password" | ||
| 3800 | msgstr "" | ||
| 3801 | |||
| 3802 | msgid "SNMPv3 privacy password" | ||
| 3803 | msgstr "" | ||
| 3804 | |||
| 3805 | msgid "Object identifier(s) or SNMP variables whose value you wish to query" | ||
| 3806 | msgstr "" | ||
| 3807 | |||
| 3808 | msgid "" | ||
| 3809 | "List of MIBS to be loaded (default = none if using numeric OIDs or 'ALL'" | ||
| 3810 | msgstr "" | ||
| 3811 | |||
| 3812 | msgid "for symbolic OIDs.)" | ||
| 3813 | msgstr "" | ||
| 3814 | |||
| 3815 | msgid "Delimiter to use when parsing returned data. Default is" | ||
| 3816 | msgstr "" | ||
| 3817 | |||
| 3818 | msgid "Any data on the right hand side of the delimiter is considered" | ||
| 3819 | msgstr "" | ||
| 3820 | |||
| 3821 | msgid "to be the data that should be used in the evaluation." | ||
| 3822 | msgstr "" | ||
| 3823 | |||
| 3824 | msgid "If the check returns a 0 length string or NULL value" | ||
| 3825 | msgstr "" | ||
| 3826 | |||
| 3827 | msgid "This option allows you to choose what status you want it to exit" | ||
| 3828 | msgstr "" | ||
| 3829 | |||
| 3830 | msgid "Excluding this option renders the default exit of 3(STATE_UNKNOWN)" | ||
| 3831 | msgstr "" | ||
| 3832 | |||
| 3833 | msgid "0 = OK" | ||
| 3834 | msgstr "" | ||
| 3835 | |||
| 3836 | #, fuzzy | ||
| 3837 | msgid "1 = WARNING" | ||
| 3838 | msgstr "WARNING" | ||
| 3839 | |||
| 3840 | #, fuzzy | ||
| 3841 | msgid "2 = CRITICAL" | ||
| 3842 | msgstr "CRITICAL" | ||
| 3843 | |||
| 3844 | #, fuzzy | ||
| 3845 | msgid "3 = UNKNOWN" | ||
| 3846 | msgstr "UNKNOWN" | ||
| 3847 | |||
| 3848 | #, fuzzy | ||
| 3849 | msgid "Warning threshold range(s)" | ||
| 3850 | msgstr "Warning threshold Integer sein" | ||
| 3851 | |||
| 3852 | #, fuzzy | ||
| 3853 | msgid "Critical threshold range(s)" | ||
| 3854 | msgstr "Critical threshold muss ein Integer sein" | ||
| 3855 | |||
| 3856 | msgid "Enable rate calculation. See 'Rate Calculation' below" | ||
| 3857 | msgstr "" | ||
| 3858 | |||
| 3859 | msgid "" | ||
| 3860 | "Converts rate per second. For example, set to 60 to convert to per minute" | ||
| 3861 | msgstr "" | ||
| 3862 | |||
| 3863 | msgid "Add/subtract the specified OFFSET to numeric sensor data" | ||
| 3864 | msgstr "" | ||
| 3865 | |||
| 3866 | msgid "Return OK state (for that OID) if STRING is an exact match" | ||
| 3867 | msgstr "" | ||
| 3868 | |||
| 3869 | msgid "" | ||
| 3870 | "Return OK state (for that OID) if extended regular expression REGEX matches" | ||
| 3871 | msgstr "" | ||
| 3872 | |||
| 3873 | msgid "" | ||
| 3874 | "Return OK state (for that OID) if case-insensitive extended REGEX matches" | ||
| 3875 | msgstr "" | ||
| 3876 | |||
| 3877 | msgid "Invert search result (CRITICAL if found)" | ||
| 3878 | msgstr "" | ||
| 3879 | |||
| 3880 | msgid "Prefix label for output from plugin" | ||
| 3881 | msgstr "" | ||
| 3882 | |||
| 3883 | msgid "Units label(s) for output data (e.g., 'sec.')." | ||
| 3884 | msgstr "" | ||
| 3885 | |||
| 3886 | msgid "Separates output on multiple OID requests" | ||
| 3887 | msgstr "" | ||
| 3888 | |||
| 3889 | msgid "Multiplies current value, 0 < n < 1 works as divider, defaults to 1" | ||
| 3890 | msgstr "" | ||
| 3891 | |||
| 3892 | msgid "C-style format string for float values (see option -M)" | ||
| 3893 | msgstr "" | ||
| 3894 | |||
| 3895 | msgid "" | ||
| 3896 | "NOTE the final timeout value is calculated using this formula: " | ||
| 3897 | "timeout_interval * retries + 5" | ||
| 3898 | msgstr "" | ||
| 3899 | |||
| 3900 | msgid "Number of retries to be used in the requests, default: " | ||
| 3901 | msgstr "" | ||
| 3902 | |||
| 3903 | msgid "Label performance data with OIDs instead of --label's" | ||
| 3904 | msgstr "" | ||
| 3905 | |||
| 3906 | msgid "Tell snmpget to not print errors encountered when parsing MIB files" | ||
| 3907 | msgstr "" | ||
| 3908 | |||
| 3909 | msgid "" | ||
| 3910 | "This plugin uses the 'snmpget' command included with the NET-SNMP package." | ||
| 3911 | msgstr "" | ||
| 3912 | |||
| 3913 | msgid "" | ||
| 3914 | "if you don't have the package installed, you will need to download it from" | ||
| 3915 | msgstr "" | ||
| 3916 | |||
| 3917 | msgid "http://net-snmp.sourceforge.net before you can use this plugin." | ||
| 3918 | msgstr "" | ||
| 3919 | |||
| 3920 | msgid "" | ||
| 3921 | "- Multiple OIDs (and labels) may be indicated by a comma or space-delimited " | ||
| 3922 | msgstr "" | ||
| 3923 | |||
| 3924 | msgid "list (lists with internal spaces must be quoted)." | ||
| 3925 | msgstr "" | ||
| 3926 | |||
| 3927 | msgid "" | ||
| 3928 | "- When checking multiple OIDs, separate ranges by commas like '-w " | ||
| 3929 | "1:10,1:,:20'" | ||
| 3930 | msgstr "" | ||
| 3931 | |||
| 3932 | msgid "- Note that only one string and one regex may be checked at present" | ||
| 3933 | msgstr "" | ||
| 3934 | |||
| 3935 | msgid "" | ||
| 3936 | "- All evaluation methods other than PR, STR, and SUBSTR expect that the value" | ||
| 3937 | msgstr "" | ||
| 3938 | |||
| 3939 | msgid "returned from the SNMP query is an unsigned integer." | ||
| 3940 | msgstr "" | ||
| 3941 | |||
| 3942 | msgid "Rate Calculation:" | ||
| 3943 | msgstr "" | ||
| 3944 | |||
| 3945 | msgid "In many places, SNMP returns counters that are only meaningful when" | ||
| 3946 | msgstr "" | ||
| 3947 | |||
| 3948 | msgid "calculating the counter difference since the last check. check_snmp" | ||
| 3949 | msgstr "" | ||
| 3950 | |||
| 3951 | msgid "saves the last state information in a file so that the rate per second" | ||
| 3952 | msgstr "" | ||
| 3953 | |||
| 3954 | msgid "can be calculated. Use the --rate option to save state information." | ||
| 3955 | msgstr "" | ||
| 3956 | |||
| 3957 | msgid "" | ||
| 3958 | "On the first run, there will be no prior state - this will return with OK." | ||
| 3959 | msgstr "" | ||
| 3960 | |||
| 3961 | msgid "The state is uniquely determined by the arguments to the plugin, so" | ||
| 3962 | msgstr "" | ||
| 3963 | |||
| 3964 | msgid "changing the arguments will create a new state file." | ||
| 3965 | msgstr "" | ||
| 3966 | |||
| 3967 | #, fuzzy | ||
| 3968 | msgid "Port number must be a positive integer" | ||
| 3969 | msgstr "Port muss ein positiver Integer sein" | ||
| 3970 | |||
| 3971 | #, c-format | ||
| 3972 | msgid "Server answer: %s" | ||
| 3973 | msgstr "" | ||
| 3974 | |||
| 3975 | #, c-format | ||
| 3976 | msgid "SSH CRITICAL - %s (protocol %s) version mismatch, expected '%s'\n" | ||
| 3977 | msgstr "" | ||
| 3978 | |||
| 3979 | #, c-format | ||
| 3980 | msgid "" | ||
| 3981 | "SSH CRITICAL - %s (protocol %s) protocol version mismatch, expected '%s'\n" | ||
| 3982 | msgstr "" | ||
| 3983 | |||
| 3984 | #, c-format | ||
| 3985 | msgid "SSH OK - %s (protocol %s) | %s\n" | ||
| 3986 | msgstr "" | ||
| 3987 | |||
| 3988 | msgid "Try to connect to an SSH server at specified server and port" | ||
| 3989 | msgstr "" | ||
| 3990 | |||
| 3991 | msgid "" | ||
| 3992 | "Alert if string doesn't match expected server version (ex: OpenSSH_3.9p1)" | ||
| 3993 | msgstr "" | ||
| 3994 | |||
| 3995 | msgid "Alert if protocol doesn't match expected protocol version (ex: 2.0)" | ||
| 3996 | msgstr "" | ||
| 3997 | |||
| 3998 | #, c-format | ||
| 3999 | msgid "Command: %s\n" | ||
| 4000 | msgstr "" | ||
| 4001 | |||
| 4002 | #, c-format | ||
| 4003 | msgid "Format: %s\n" | ||
| 4004 | msgstr "" | ||
| 4005 | |||
| 4006 | #, c-format | ||
| 4007 | msgid "total=%.0f, used=%.0f, free=%.0f\n" | ||
| 4008 | msgstr "" | ||
| 4009 | |||
| 4010 | #, c-format | ||
| 4011 | msgid "total=%.0f, free=%.0f\n" | ||
| 4012 | msgstr "" | ||
| 4013 | |||
| 4014 | msgid "Error getting swap devices\n" | ||
| 4015 | msgstr "" | ||
| 4016 | |||
| 4017 | msgid "SWAP OK: No swap devices defined\n" | ||
| 4018 | msgstr "" | ||
| 4019 | |||
| 4020 | msgid "swapctl failed: " | ||
| 4021 | msgstr "" | ||
| 4022 | |||
| 4023 | msgid "Error in swapctl call\n" | ||
| 4024 | msgstr "" | ||
| 4025 | |||
| 4026 | #, c-format | ||
| 4027 | msgid "SWAP %s - %d%% free (%dMB out of %dMB) %s|" | ||
| 4028 | msgstr "" | ||
| 4029 | |||
| 4030 | #, fuzzy | ||
| 4031 | msgid "Warning threshold percentage must be <= 100!" | ||
| 4032 | msgstr "Warning threshold Integer sein" | ||
| 4033 | |||
| 4034 | #, fuzzy | ||
| 4035 | msgid "Warning threshold be positive integer or percentage!" | ||
| 4036 | msgstr "Warning threshold muss ein Integer oder ein Prozentwert sein" | ||
| 4037 | |||
| 4038 | #, fuzzy | ||
| 4039 | msgid "Critical threshold percentage must be <= 100!" | ||
| 4040 | msgstr "Critical threshold muss ein Integer sein" | ||
| 4041 | |||
| 4042 | #, fuzzy | ||
| 4043 | msgid "Critical threshold be positive integer or percentage!" | ||
| 4044 | msgstr "Critical threshold muss ein Integer oder ein Prozentwert sein!" | ||
| 4045 | |||
| 4046 | msgid "" | ||
| 4047 | "no-swap result must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) " | ||
| 4048 | "or integer (0-3)." | ||
| 4049 | msgstr "" | ||
| 4050 | |||
| 4051 | #, fuzzy | ||
| 4052 | msgid "Warning should be more than critical" | ||
| 4053 | msgstr "Warning threshold muss ein Integer oder ein Prozentwert sein" | ||
| 4054 | |||
| 4055 | msgid "Check swap space on local machine." | ||
| 4056 | msgstr "" | ||
| 4057 | |||
| 4058 | msgid "" | ||
| 4059 | "Exit with WARNING status if less than INTEGER bytes of swap space are free" | ||
| 4060 | msgstr "" | ||
| 4061 | |||
| 4062 | msgid "Exit with WARNING status if less than PERCENT of swap space is free" | ||
| 4063 | msgstr "" | ||
| 4064 | |||
| 4065 | msgid "" | ||
| 4066 | "Exit with CRITICAL status if less than INTEGER bytes of swap space are free" | ||
| 4067 | msgstr "" | ||
| 4068 | |||
| 4069 | msgid "Exit with CRITICAL status if less than PERCENT of swap space is free" | ||
| 4070 | msgstr "" | ||
| 4071 | |||
| 4072 | msgid "Conduct comparisons for all swap partitions, one by one" | ||
| 4073 | msgstr "" | ||
| 4074 | |||
| 4075 | msgid "" | ||
| 4076 | "Resulting state when there is no swap regardless of thresholds. Default:" | ||
| 4077 | msgstr "" | ||
| 4078 | |||
| 4079 | msgid "" | ||
| 4080 | "Both INTEGER and PERCENT thresholds can be specified, they are all checked." | ||
| 4081 | msgstr "" | ||
| 4082 | |||
| 4083 | msgid "On AIX, if -a is specified, uses lsps -a, otherwise uses lsps -s." | ||
| 4084 | msgstr "" | ||
| 4085 | |||
| 4086 | msgid "CRITICAL - Generic check_tcp called with unknown service\n" | ||
| 4087 | msgstr "" | ||
| 4088 | |||
| 4089 | msgid "With UDP checks, a send/expect string must be specified." | ||
| 4090 | msgstr "" | ||
| 4091 | |||
| 4092 | msgid "No arguments found" | ||
| 4093 | msgstr "" | ||
| 4094 | |||
| 4095 | msgid "Maxbytes must be a positive integer" | ||
| 4096 | msgstr "Maxbytes muss ein positiver Integer sein" | ||
| 4097 | |||
| 4098 | msgid "Refuse must be one of ok, warn, crit" | ||
| 4099 | msgstr "" | ||
| 4100 | |||
| 4101 | msgid "Mismatch must be one of ok, warn, crit" | ||
| 4102 | msgstr "" | ||
| 4103 | |||
| 4104 | msgid "Delay must be a positive integer" | ||
| 4105 | msgstr "Delay muss ein positiver Integer sein" | ||
| 4106 | |||
| 4107 | #, fuzzy | ||
| 4108 | msgid "You must provide a server address" | ||
| 4109 | msgstr "%s: Hostname muss angegeben werden\n" | ||
| 4110 | |||
| 4111 | #, fuzzy | ||
| 4112 | msgid "Invalid hostname, address or socket" | ||
| 4113 | msgstr "Ungültige(r) Hostname/Adresse" | ||
| 4114 | |||
| 4115 | #, fuzzy, c-format | ||
| 4116 | msgid "" | ||
| 4117 | "This plugin tests %s connections with the specified host (or unix socket).\n" | ||
| 4118 | "\n" | ||
| 4119 | msgstr "Dieses plugin testet Gameserververbindungen zum angegebenen Host." | ||
| 4120 | |||
| 4121 | msgid "" | ||
| 4122 | "Can use \\n, \\r, \\t or \\\\ in send or quit string. Must come before send " | ||
| 4123 | "or quit option" | ||
| 4124 | msgstr "" | ||
| 4125 | |||
| 4126 | msgid "Default: nothing added to send, \\r\\n added to end of quit" | ||
| 4127 | msgstr "" | ||
| 4128 | |||
| 4129 | msgid "String to send to the server" | ||
| 4130 | msgstr "" | ||
| 4131 | |||
| 4132 | msgid "String to expect in server response" | ||
| 4133 | msgstr "" | ||
| 4134 | |||
| 4135 | msgid "(may be repeated)" | ||
| 4136 | msgstr "" | ||
| 4137 | |||
| 4138 | msgid "All expect strings need to occur in server response. Default is any" | ||
| 4139 | msgstr "" | ||
| 4140 | |||
| 4141 | msgid "String to send server to initiate a clean close of the connection" | ||
| 4142 | msgstr "" | ||
| 4143 | |||
| 4144 | msgid "Accept TCP refusals with states ok, warn, crit (default: crit)" | ||
| 4145 | msgstr "" | ||
| 4146 | |||
| 4147 | msgid "" | ||
| 4148 | "Accept expected string mismatches with states ok, warn, crit (default: warn)" | ||
| 4149 | msgstr "" | ||
| 4150 | |||
| 4151 | #, fuzzy | ||
| 4152 | msgid "Hide output from TCP socket" | ||
| 4153 | msgstr "Konnte TCP socket nicht öffnen\n" | ||
| 4154 | |||
| 4155 | msgid "Close connection once more than this number of bytes are received" | ||
| 4156 | msgstr "" | ||
| 4157 | |||
| 4158 | msgid "Seconds to wait between sending string and polling for response" | ||
| 4159 | msgstr "" | ||
| 4160 | |||
| 4161 | msgid "1st is #days for warning, 2nd is critical (if not specified - 0)." | ||
| 4162 | msgstr "" | ||
| 4163 | |||
| 4164 | msgid "Use SSL for the connection." | ||
| 4165 | msgstr "" | ||
| 4166 | |||
| 4167 | msgid "SSL server_name" | ||
| 4168 | msgstr "" | ||
| 4169 | |||
| 4170 | #, c-format | ||
| 4171 | msgid "TIME UNKNOWN - could not connect to server %s, port %d\n" | ||
| 4172 | msgstr "" | ||
| 4173 | |||
| 4174 | #, c-format | ||
| 4175 | msgid "TIME UNKNOWN - could not send UDP request to server %s, port %d\n" | ||
| 4176 | msgstr "" | ||
| 4177 | |||
| 4178 | #, c-format | ||
| 4179 | msgid "TIME UNKNOWN - no data received from server %s, port %d\n" | ||
| 4180 | msgstr "" | ||
| 4181 | |||
| 4182 | #, c-format | ||
| 4183 | msgid "TIME %s - %d second response time|%s\n" | ||
| 4184 | msgstr "" | ||
| 4185 | |||
| 4186 | #, c-format | ||
| 4187 | msgid "TIME %s - %lu second time difference|%s %s\n" | ||
| 4188 | msgstr "" | ||
| 4189 | |||
| 4190 | msgid "Warning thresholds must be a positive integer" | ||
| 4191 | msgstr "Warning thresholds muss ein positiver Integer sein" | ||
| 4192 | |||
| 4193 | msgid "Critical thresholds must be a positive integer" | ||
| 4194 | msgstr "Critical thresholds muss ein positiver Integer sein" | ||
| 4195 | |||
| 4196 | #, fuzzy | ||
| 4197 | msgid "This plugin will check the time on the specified host." | ||
| 4198 | msgstr "" | ||
| 4199 | "Testet den DNS Dienst auf dem angegebenen Host mit dig\n" | ||
| 4200 | "\n" | ||
| 4201 | |||
| 4202 | msgid "Use UDP to connect, not TCP" | ||
| 4203 | msgstr "" | ||
| 4204 | |||
| 4205 | msgid "Time difference (sec.) necessary to result in a warning status" | ||
| 4206 | msgstr "" | ||
| 4207 | |||
| 4208 | msgid "Time difference (sec.) necessary to result in a critical status" | ||
| 4209 | msgstr "" | ||
| 4210 | |||
| 4211 | msgid "Response time (sec.) necessary to result in warning status" | ||
| 4212 | msgstr "" | ||
| 4213 | |||
| 4214 | msgid "Response time (sec.) necessary to result in critical status" | ||
| 4215 | msgstr "" | ||
| 4216 | |||
| 4217 | msgid "On Battery, Low Battery" | ||
| 4218 | msgstr "" | ||
| 4219 | |||
| 4220 | msgid "Online" | ||
| 4221 | msgstr "" | ||
| 4222 | |||
| 4223 | msgid "On Battery" | ||
| 4224 | msgstr "" | ||
| 4225 | |||
| 4226 | msgid ", Low Battery" | ||
| 4227 | msgstr "" | ||
| 4228 | |||
| 4229 | msgid ", Calibrating" | ||
| 4230 | msgstr "" | ||
| 4231 | |||
| 4232 | msgid ", Replace Battery" | ||
| 4233 | msgstr "" | ||
| 4234 | |||
| 4235 | msgid ", On Bypass" | ||
| 4236 | msgstr "" | ||
| 4237 | |||
| 4238 | msgid ", Overload" | ||
| 4239 | msgstr "" | ||
| 4240 | |||
| 4241 | msgid ", Trimming" | ||
| 4242 | msgstr "" | ||
| 4243 | |||
| 4244 | msgid ", Boosting" | ||
| 4245 | msgstr "" | ||
| 4246 | |||
| 4247 | msgid ", Charging" | ||
| 4248 | msgstr "" | ||
| 4249 | |||
| 4250 | msgid ", Discharging" | ||
| 4251 | msgstr "" | ||
| 4252 | |||
| 4253 | msgid ", Unknown" | ||
| 4254 | msgstr "" | ||
| 4255 | |||
| 4256 | #, fuzzy | ||
| 4257 | msgid "UPS does not support any available options\n" | ||
| 4258 | msgstr "IPv6 Unterstützung nicht vorhanden" | ||
| 4259 | |||
| 4260 | #, fuzzy | ||
| 4261 | msgid "Invalid response received from host" | ||
| 4262 | msgstr "Ungültige HTTP Antwort von Host empfangen\n" | ||
| 4263 | |||
| 4264 | msgid "UPS name to long for buffer" | ||
| 4265 | msgstr "" | ||
| 4266 | |||
| 4267 | #, fuzzy, c-format | ||
| 4268 | msgid "CRITICAL - no such UPS '%s' on that host\n" | ||
| 4269 | msgstr "%s [%s nicht gefunden]" | ||
| 4270 | |||
| 4271 | #, fuzzy | ||
| 4272 | msgid "CRITICAL - UPS data is stale" | ||
| 4273 | msgstr "CRITICAL - Serverdatum \"%100s\" konnte nicht verarbeitet werden" | ||
| 4274 | |||
| 4275 | #, fuzzy, c-format | ||
| 4276 | msgid "Unknown error: %s\n" | ||
| 4277 | msgstr "Papierfehler" | ||
| 4278 | |||
| 4279 | msgid "Error: unable to parse variable" | ||
| 4280 | msgstr "" | ||
| 4281 | |||
| 4282 | msgid "Unrecognized UPS variable" | ||
| 4283 | msgstr "" | ||
| 4284 | |||
| 4285 | msgid "Error : no UPS indicated" | ||
| 4286 | msgstr "" | ||
| 4287 | |||
| 4288 | #, fuzzy | ||
| 4289 | msgid "" | ||
| 4290 | "This plugin tests the UPS service on the specified host. Network UPS Tools" | ||
| 4291 | msgstr "" | ||
| 4292 | "Testet den DNS Dienst auf dem angegebenen Host mit dig\n" | ||
| 4293 | "\n" | ||
| 4294 | |||
| 4295 | msgid "from www.networkupstools.org must be running for this plugin to work." | ||
| 4296 | msgstr "" | ||
| 4297 | |||
| 4298 | msgid "Name of UPS" | ||
| 4299 | msgstr "" | ||
| 4300 | |||
| 4301 | msgid "Output of temperatures in Celsius" | ||
| 4302 | msgstr "" | ||
| 4303 | |||
| 4304 | msgid "Valid values for STRING are" | ||
| 4305 | msgstr "" | ||
| 4306 | |||
| 4307 | msgid "" | ||
| 4308 | "This plugin attempts to determine the status of a UPS (Uninterruptible Power" | ||
| 4309 | msgstr "" | ||
| 4310 | |||
| 4311 | msgid "" | ||
| 4312 | "Supply) on a local or remote host. If the UPS is online or calibrating, the" | ||
| 4313 | msgstr "" | ||
| 4314 | |||
| 4315 | msgid "" | ||
| 4316 | "plugin will return an OK state. If the battery is on it will return a WARNING" | ||
| 4317 | msgstr "" | ||
| 4318 | |||
| 4319 | msgid "" | ||
| 4320 | "state. If the UPS is off or has a low battery the plugin will return a " | ||
| 4321 | "CRITICAL" | ||
| 4322 | msgstr "" | ||
| 4323 | |||
| 4324 | msgid "" | ||
| 4325 | "You may also specify a variable to check (such as temperature, utility " | ||
| 4326 | "voltage," | ||
| 4327 | msgstr "" | ||
| 4328 | |||
| 4329 | msgid "" | ||
| 4330 | "battery load, etc.) as well as warning and critical thresholds for the value" | ||
| 4331 | msgstr "" | ||
| 4332 | |||
| 4333 | msgid "" | ||
| 4334 | "of that variable. If the remote host has multiple UPS that are being " | ||
| 4335 | "monitored" | ||
| 4336 | msgstr "" | ||
| 4337 | |||
| 4338 | msgid "you will have to use the --ups option to specify which UPS to check." | ||
| 4339 | msgstr "" | ||
| 4340 | |||
| 4341 | msgid "" | ||
| 4342 | "This plugin requires that the UPSD daemon distributed with Russell Kroll's" | ||
| 4343 | msgstr "" | ||
| 4344 | |||
| 4345 | msgid "" | ||
| 4346 | "Network UPS Tools be installed on the remote host. If you do not have the" | ||
| 4347 | msgstr "" | ||
| 4348 | |||
| 4349 | msgid "package installed on your system, you can download it from" | ||
| 4350 | msgstr "" | ||
| 4351 | |||
| 4352 | msgid "http://www.networkupstools.org" | ||
| 4353 | msgstr "" | ||
| 4354 | |||
| 4355 | #, fuzzy, c-format | ||
| 4356 | msgid "Could not enumerate RD sessions: %d\n" | ||
| 4357 | msgstr "Konnte·url·nicht·zuweisen\n" | ||
| 4358 | |||
| 4359 | #, c-format | ||
| 4360 | msgid "# users=%d" | ||
| 4361 | msgstr "" | ||
| 4362 | |||
| 4363 | msgid "Unable to read output" | ||
| 4364 | msgstr "" | ||
| 4365 | |||
| 4366 | #, c-format | ||
| 4367 | msgid "USERS %s - %d users currently logged in |%s\n" | ||
| 4368 | msgstr "" | ||
| 4369 | |||
| 4370 | #, fuzzy | ||
| 4371 | msgid "This plugin checks the number of users currently logged in on the local" | ||
| 4372 | msgstr "" | ||
| 4373 | "Dieses Plugin prüft den freien Speicher auf einem gemounteten Filesystem\n" | ||
| 4374 | "und erzeugt einen Alarm wenn einer der angegebenen Schwellwerte " | ||
| 4375 | "unterschritten wird.\n" | ||
| 4376 | "\n" | ||
| 4377 | |||
| 4378 | msgid "" | ||
| 4379 | "system and generates an error if the number exceeds the thresholds specified." | ||
| 4380 | msgstr "" | ||
| 4381 | |||
| 4382 | msgid "Set WARNING status if more than INTEGER users are logged in" | ||
| 4383 | msgstr "" | ||
| 4384 | |||
| 4385 | msgid "Set CRITICAL status if more than INTEGER users are logged in" | ||
| 4386 | msgstr "" | ||
| 4387 | |||
| 4388 | msgid "" | ||
| 4389 | "DEPRECATION WARNING: the -q switch (quiet output) is no longer \"quiet\"." | ||
| 4390 | msgstr "" | ||
| 4391 | |||
| 4392 | msgid "Nagios-compatible output is now always returned." | ||
| 4393 | msgstr "" | ||
| 4394 | |||
| 4395 | msgid "SMART commands are broken and have been disabled (See Notes in --help)." | ||
| 4396 | msgstr "" | ||
| 4397 | |||
| 4398 | msgid "" | ||
| 4399 | "DEPRECATION WARNING: the -n switch (Nagios-compatible output) is now the" | ||
| 4400 | msgstr "" | ||
| 4401 | |||
| 4402 | msgid "default and will be removed from future releases." | ||
| 4403 | msgstr "" | ||
| 4404 | |||
| 4405 | #, fuzzy, c-format | ||
| 4406 | msgid "CRITICAL - Couldn't open device %s: %s\n" | ||
| 4407 | msgstr "CRITICAL - Device konnte nicht geöffnet werden: %s\n" | ||
| 4408 | |||
| 4409 | #, c-format | ||
| 4410 | msgid "CRITICAL - SMART_CMD_ENABLE\n" | ||
| 4411 | msgstr "" | ||
| 4412 | |||
| 4413 | #, c-format | ||
| 4414 | msgid "CRITICAL - SMART_READ_VALUES: %s\n" | ||
| 4415 | msgstr "" | ||
| 4416 | |||
| 4417 | #, c-format | ||
| 4418 | msgid "CRITICAL - %d Harddrive PreFailure%cDetected! %d/%d tests failed.\n" | ||
| 4419 | msgstr "" | ||
| 4420 | |||
| 4421 | #, c-format | ||
| 4422 | msgid "WARNING - %d Harddrive Advisor%s Detected. %d/%d tests failed.\n" | ||
| 4423 | msgstr "" | ||
| 4424 | |||
| 4425 | #, c-format | ||
| 4426 | msgid "OK - Operational (%d/%d tests passed)\n" | ||
| 4427 | msgstr "" | ||
| 4428 | |||
| 4429 | #, c-format | ||
| 4430 | msgid "ERROR - Status '%d' unknown. %d/%d tests passed\n" | ||
| 4431 | msgstr "" | ||
| 4432 | |||
| 4433 | #, c-format | ||
| 4434 | msgid "OffLineStatus=%d {%s}, AutoOffLine=%s, OffLineTimeout=%d minutes\n" | ||
| 4435 | msgstr "" | ||
| 4436 | |||
| 4437 | #, c-format | ||
| 4438 | msgid "OffLineCapability=%d {%s %s %s}\n" | ||
| 4439 | msgstr "" | ||
| 4440 | |||
| 4441 | #, c-format | ||
| 4442 | msgid "SmartRevision=%d, CheckSum=%d, SmartCapability=%d {%s %s}\n" | ||
| 4443 | msgstr "" | ||
| 4444 | |||
| 4445 | #, c-format | ||
| 4446 | msgid "CRITICAL - %s: %s\n" | ||
| 4447 | msgstr "" | ||
| 4448 | |||
| 4449 | #, c-format | ||
| 4450 | msgid "OK - Command sent (%s)\n" | ||
| 4451 | msgstr "" | ||
| 4452 | |||
| 4453 | #, c-format | ||
| 4454 | msgid "CRITICAL - SMART_READ_THRESHOLDS: %s\n" | ||
| 4455 | msgstr "" | ||
| 4456 | |||
| 4457 | #, c-format | ||
| 4458 | msgid "" | ||
| 4459 | "This plugin checks a local hard drive with the (Linux specific) SMART " | ||
| 4460 | "interface [http://smartlinux.sourceforge.net/smart/index.php]." | ||
| 4461 | msgstr "" | ||
| 4462 | |||
| 4463 | msgid "Select device DEVICE" | ||
| 4464 | msgstr "" | ||
| 4465 | |||
| 4466 | msgid "" | ||
| 4467 | "Note: if the device is specified without this option, any further option will" | ||
| 4468 | msgstr "" | ||
| 4469 | |||
| 4470 | msgid "be ignored." | ||
| 4471 | msgstr "" | ||
| 4472 | |||
| 4473 | msgid "" | ||
| 4474 | "The SMART command modes (-i/--immediate, -0/--auto-off and -1/--auto-on) were" | ||
| 4475 | msgstr "" | ||
| 4476 | |||
| 4477 | msgid "" | ||
| 4478 | "broken in an underhand manner and have been disabled. You can use smartctl" | ||
| 4479 | msgstr "" | ||
| 4480 | |||
| 4481 | msgid "instead:" | ||
| 4482 | msgstr "" | ||
| 4483 | |||
| 4484 | msgid "-0/--auto-off: use \"smartctl --offlineauto=off\"" | ||
| 4485 | msgstr "" | ||
| 4486 | |||
| 4487 | msgid "-1/--auto-on: use \"smartctl --offlineauto=on\"" | ||
| 4488 | msgstr "" | ||
| 4489 | |||
| 4490 | msgid "-i/--immediate: use \"smartctl --test=offline\"" | ||
| 4491 | msgstr "" | ||
| 4492 | |||
| 4493 | #, fuzzy | ||
| 4494 | msgid "No data returned from command\n" | ||
| 4495 | msgstr "Keine Daten empfangen %s\n" | ||
| 4496 | |||
| 4497 | msgid "" | ||
| 4498 | "Timeout result must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) " | ||
| 4499 | "or integer (0-3)." | ||
| 4500 | msgstr "" | ||
| 4501 | |||
| 4502 | msgid "" | ||
| 4503 | "Ok must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer " | ||
| 4504 | "(0-3)." | ||
| 4505 | msgstr "" | ||
| 4506 | |||
| 4507 | msgid "" | ||
| 4508 | "Warning must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or " | ||
| 4509 | "integer (0-3)." | ||
| 4510 | msgstr "" | ||
| 4511 | |||
| 4512 | msgid "" | ||
| 4513 | "Critical must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or " | ||
| 4514 | "integer (0-3)." | ||
| 4515 | msgstr "" | ||
| 4516 | |||
| 4517 | msgid "" | ||
| 4518 | "Unknown must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or " | ||
| 4519 | "integer (0-3)." | ||
| 4520 | msgstr "" | ||
| 4521 | |||
| 4522 | msgid "Require path to command" | ||
| 4523 | msgstr "" | ||
| 4524 | |||
| 4525 | msgid "" | ||
| 4526 | "Negates the status of a plugin (returns OK for CRITICAL and vice-versa)." | ||
| 4527 | msgstr "" | ||
| 4528 | |||
| 4529 | msgid "Additional switches can be used to control which state becomes what." | ||
| 4530 | msgstr "" | ||
| 4531 | |||
| 4532 | msgid "Keep timeout longer than the plugin timeout to retain CRITICAL status." | ||
| 4533 | msgstr "" | ||
| 4534 | |||
| 4535 | msgid "Custom result on Negate timeouts; see below for STATUS definition\n" | ||
| 4536 | msgstr "" | ||
| 4537 | |||
| 4538 | #, c-format | ||
| 4539 | msgid "" | ||
| 4540 | " STATUS can be 'OK', 'WARNING', 'CRITICAL' or 'UNKNOWN' without single\n" | ||
| 4541 | msgstr "" | ||
| 4542 | |||
| 4543 | #, c-format | ||
| 4544 | msgid "" | ||
| 4545 | " quotes. Numeric values are accepted. If nothing is specified, permutes\n" | ||
| 4546 | msgstr "" | ||
| 4547 | |||
| 4548 | #, c-format | ||
| 4549 | msgid " OK and CRITICAL.\n" | ||
| 4550 | msgstr "" | ||
| 4551 | |||
| 4552 | #, c-format | ||
| 4553 | msgid "" | ||
| 4554 | " Substitute output text as well. Will only substitute text in CAPITALS\n" | ||
| 4555 | msgstr "" | ||
| 4556 | |||
| 4557 | msgid "Run check_ping and invert result. Must use full path to plugin" | ||
| 4558 | msgstr "" | ||
| 4559 | |||
| 4560 | msgid "This will return OK instead of WARNING and UNKNOWN instead of CRITICAL" | ||
| 4561 | msgstr "" | ||
| 4562 | |||
| 4563 | msgid "" | ||
| 4564 | "This plugin is a wrapper to take the output of another plugin and invert it." | ||
| 4565 | msgstr "" | ||
| 4566 | |||
| 4567 | msgid "The full path of the plugin must be provided." | ||
| 4568 | msgstr "" | ||
| 4569 | |||
| 4570 | msgid "If the wrapped plugin returns OK, the wrapper will return CRITICAL." | ||
| 4571 | msgstr "" | ||
| 4572 | |||
| 4573 | msgid "If the wrapped plugin returns CRITICAL, the wrapper will return OK." | ||
| 4574 | msgstr "" | ||
| 4575 | |||
| 4576 | msgid "Otherwise, the output state of the wrapped plugin is unchanged." | ||
| 4577 | msgstr "" | ||
| 4578 | |||
| 4579 | msgid "" | ||
| 4580 | "Using timeout-result, it is possible to override the timeout behaviour or a" | ||
| 4581 | msgstr "" | ||
| 4582 | |||
| 4583 | msgid "plugin by setting the negate timeout a bit lower." | ||
| 4584 | msgstr "" | ||
| 4585 | |||
| 4586 | #, fuzzy, c-format | ||
| 4587 | msgid "%s - Socket timeout after %d seconds\n" | ||
| 4588 | msgstr "CRITICAL - Dokumentendatum ist %d Sekunden in der Zukunft\n" | ||
| 4589 | |||
| 4590 | #, fuzzy, c-format | ||
| 4591 | msgid "%s - Abnormal timeout after %d seconds\n" | ||
| 4592 | msgstr "CRITICAL - Dokumentendatum ist %d Sekunden in der Zukunft\n" | ||
| 4593 | |||
| 4594 | msgid "Send failed" | ||
| 4595 | msgstr "" | ||
| 4596 | |||
| 4597 | #, fuzzy | ||
| 4598 | msgid "No data was received from host!" | ||
| 4599 | msgstr "Keine Daten empfangen %s\n" | ||
| 4600 | |||
| 4601 | msgid "Socket creation failed" | ||
| 4602 | msgstr "" | ||
| 4603 | |||
| 4604 | msgid "Supplied path too long unix domain socket" | ||
| 4605 | msgstr "" | ||
| 4606 | |||
| 4607 | msgid "Receive failed" | ||
| 4608 | msgstr "" | ||
| 4609 | |||
| 4610 | #, fuzzy, c-format | ||
| 4611 | msgid "Invalid hostname/address - %s" | ||
| 4612 | msgstr "" | ||
| 4613 | "Ungültige(r) Name/Adresse: %s\n" | ||
| 4614 | "\n" | ||
| 4615 | |||
| 4616 | #, fuzzy | ||
| 4617 | msgid "Could not malloc argv array in popen()" | ||
| 4618 | msgstr "Konnte addr nicht zuweisen\n" | ||
| 4619 | |||
| 4620 | #, fuzzy | ||
| 4621 | msgid "CRITICAL - You need more args!!!" | ||
| 4622 | msgstr "CRITICAL - Fehler: %s\n" | ||
| 4623 | |||
| 4624 | #, fuzzy | ||
| 4625 | msgid "Cannot catch SIGCHLD" | ||
| 4626 | msgstr "Konnte SIGALRM nicht erhalten" | ||
| 4627 | |||
| 4628 | #, fuzzy, c-format | ||
| 4629 | msgid "CRITICAL - Plugin timed out after %d seconds\n" | ||
| 4630 | msgstr "CRITICAL - Dokumentendatum ist %d Sekunden in der Zukunft\n" | ||
| 4631 | |||
| 4632 | msgid "CRITICAL - popen timeout received, but no child process" | ||
| 4633 | msgstr "" | ||
| 4634 | |||
| 4635 | #, c-format | ||
| 4636 | msgid "" | ||
| 4637 | "%s UNKNOWN - No data received from host\n" | ||
| 4638 | "CMD: %s</A>\n" | ||
| 4639 | msgstr "" | ||
| 4640 | |||
| 4641 | msgid "" | ||
| 4642 | "This plugin wraps the text output of another command (plugin) in HTML <A>" | ||
| 4643 | msgstr "" | ||
| 4644 | |||
| 4645 | msgid "" | ||
| 4646 | "tags, thus displaying the child plugin's output as a clickable link in " | ||
| 4647 | "compatible" | ||
| 4648 | msgstr "" | ||
| 4649 | |||
| 4650 | msgid "" | ||
| 4651 | "monitoring status screen. This plugin returns the status of the invoked " | ||
| 4652 | "plugin." | ||
| 4653 | msgstr "" | ||
| 4654 | |||
| 4655 | msgid "" | ||
| 4656 | "Pay close attention to quoting to ensure that the shell passes the expected" | ||
| 4657 | msgstr "" | ||
| 4658 | |||
| 4659 | msgid "data to the plugin. For example, in:" | ||
| 4660 | msgstr "" | ||
| 4661 | |||
| 4662 | msgid "urlize http://example.com/ check_http -H example.com -r 'two words'" | ||
| 4663 | msgstr "" | ||
| 4664 | |||
| 4665 | msgid "the shell will remove the single quotes and urlize will see:" | ||
| 4666 | msgstr "" | ||
| 4667 | |||
| 4668 | msgid "urlize http://example.com/ check_http -H example.com -r two words" | ||
| 4669 | msgstr "" | ||
| 4670 | |||
| 4671 | msgid "You probably want:" | ||
| 4672 | msgstr "" | ||
| 4673 | |||
| 4674 | msgid "urlize http://example.com/ \"check_http -H example.com -r 'two words'\"" | ||
| 4675 | msgstr "" | ||
| 4676 | |||
| 4677 | #, fuzzy | ||
| 4678 | msgid "failed realloc in strpcpy\n" | ||
| 4679 | msgstr "konnte keinen Speicher für '%s' reservieren\n" | ||
| 4680 | |||
| 4681 | #, fuzzy | ||
| 4682 | msgid "failed malloc in strscat\n" | ||
| 4683 | msgstr "konnte keinen Speicher für '%s' reservieren\n" | ||
| 4684 | |||
| 4685 | #, fuzzy | ||
| 4686 | msgid "failed malloc in xvasprintf\n" | ||
| 4687 | msgstr "konnte keinen Speicher für '%s' reservieren\n" | ||
| 4688 | |||
| 4689 | msgid "sysconf error for _SC_OPEN_MAX\n" | ||
| 4690 | msgstr "" | ||
| 4691 | |||
| 4692 | #, c-format | ||
| 4693 | msgid "" | ||
| 4694 | " %s (-h | --help) for detailed help\n" | ||
| 4695 | " %s (-V | --version) for version information\n" | ||
| 4696 | msgstr "" | ||
| 4697 | |||
| 4698 | msgid "" | ||
| 4699 | "\n" | ||
| 4700 | "Options:\n" | ||
| 4701 | " -h, --help\n" | ||
| 4702 | " Print detailed help screen\n" | ||
| 4703 | " -V, --version\n" | ||
| 4704 | " Print version information\n" | ||
| 4705 | msgstr "" | ||
| 4706 | |||
| 4707 | #, c-format | ||
| 4708 | msgid "" | ||
| 4709 | " -H, --hostname=ADDRESS\n" | ||
| 4710 | " Host name, IP Address, or unix socket (must be an absolute path)\n" | ||
| 4711 | " -%c, --port=INTEGER\n" | ||
| 4712 | " Port number (default: %s)\n" | ||
| 4713 | msgstr "" | ||
| 4714 | |||
| 4715 | msgid "" | ||
| 4716 | " -4, --use-ipv4\n" | ||
| 4717 | " Use IPv4 connection\n" | ||
| 4718 | " -6, --use-ipv6\n" | ||
| 4719 | " Use IPv6 connection\n" | ||
| 4720 | msgstr "" | ||
| 4721 | |||
| 4722 | msgid "" | ||
| 4723 | " -v, --verbose\n" | ||
| 4724 | " Show details for command-line debugging (output may be truncated by\n" | ||
| 4725 | " the monitoring system)\n" | ||
| 4726 | msgstr "" | ||
| 4727 | |||
| 4728 | msgid "" | ||
| 4729 | " -w, --warning=DOUBLE\n" | ||
| 4730 | " Response time to result in warning status (seconds)\n" | ||
| 4731 | " -c, --critical=DOUBLE\n" | ||
| 4732 | " Response time to result in critical status (seconds)\n" | ||
| 4733 | msgstr "" | ||
| 4734 | |||
| 4735 | msgid "" | ||
| 4736 | " -w, --warning=RANGE\n" | ||
| 4737 | " Warning range (format: start:end). Alert if outside this range\n" | ||
| 4738 | " -c, --critical=RANGE\n" | ||
| 4739 | " Critical range\n" | ||
| 4740 | msgstr "" | ||
| 4741 | |||
| 4742 | #, c-format | ||
| 4743 | msgid "" | ||
| 4744 | " -t, --timeout=INTEGER\n" | ||
| 4745 | " Seconds before connection times out (default: %d)\n" | ||
| 4746 | msgstr "" | ||
| 4747 | |||
| 4748 | #, c-format | ||
| 4749 | msgid "" | ||
| 4750 | " -t, --timeout=INTEGER\n" | ||
| 4751 | " Seconds before plugin times out (default: %d)\n" | ||
| 4752 | msgstr "" | ||
| 4753 | |||
| 4754 | msgid "" | ||
| 4755 | " --extra-opts=[section][@file]\n" | ||
| 4756 | " Read options from an ini file. See\n" | ||
| 4757 | " https://www.monitoring-plugins.org/doc/extra-opts.html\n" | ||
| 4758 | " for usage and examples.\n" | ||
| 4759 | msgstr "" | ||
| 4760 | |||
| 4761 | msgid "" | ||
| 4762 | " See:\n" | ||
| 4763 | " https://www.monitoring-plugins.org/doc/guidelines.html#THRESHOLDFORMAT\n" | ||
| 4764 | " for THRESHOLD format and examples.\n" | ||
| 4765 | msgstr "" | ||
| 4766 | |||
| 4767 | msgid "" | ||
| 4768 | "\n" | ||
| 4769 | "Send email to help@monitoring-plugins.org if you have questions regarding\n" | ||
| 4770 | "use of this software. To submit patches or suggest improvements, send email\n" | ||
| 4771 | "to devel@monitoring-plugins.org\n" | ||
| 4772 | "\n" | ||
| 4773 | msgstr "" | ||
| 4774 | |||
| 4775 | msgid "" | ||
| 4776 | "\n" | ||
| 4777 | "The Monitoring Plugins come with ABSOLUTELY NO WARRANTY. You may " | ||
| 4778 | "redistribute\n" | ||
| 4779 | "copies of the plugins under the terms of the GNU General Public License.\n" | ||
| 4780 | "For more information about these matters, see the file named COPYING.\n" | ||
| 4781 | msgstr "" | ||
| 4782 | |||
| 4783 | #, c-format | ||
| 4784 | msgid "Error: Could not get hardware address of interface '%s'\n" | ||
| 4785 | msgstr "" | ||
| 4786 | |||
| 4787 | #, c-format | ||
| 4788 | msgid "Error: if_nametoindex error - %s.\n" | ||
| 4789 | msgstr "" | ||
| 4790 | |||
| 4791 | #, c-format | ||
| 4792 | msgid "Error: Couldn't get hardware address from %s. sysctl 1 error - %s.\n" | ||
| 4793 | msgstr "" | ||
| 4794 | |||
| 4795 | #, c-format | ||
| 4796 | msgid "" | ||
| 4797 | "Error: Couldn't get hardware address from interface %s. malloc error - %s.\n" | ||
| 4798 | msgstr "" | ||
| 4799 | |||
| 4800 | #, c-format | ||
| 4801 | msgid "Error: Couldn't get hardware address from %s. sysctl 2 error - %s.\n" | ||
| 4802 | msgstr "" | ||
| 4803 | |||
| 4804 | #, c-format | ||
| 4805 | msgid "" | ||
| 4806 | "Error: can't find unit number in interface_name (%s) - expecting TypeNumber " | ||
| 4807 | "eg lnc0.\n" | ||
| 4808 | msgstr "" | ||
| 4809 | |||
| 4810 | #, c-format | ||
| 4811 | msgid "" | ||
| 4812 | "Error: can't read MAC address from DLPI streams interface for device %s unit " | ||
| 4813 | "%d.\n" | ||
| 4814 | msgstr "" | ||
| 4815 | |||
| 4816 | #, c-format | ||
| 4817 | msgid "" | ||
| 4818 | "Error: can't get MAC address for this architecture. Use the --mac option.\n" | ||
| 4819 | msgstr "" | ||
| 4820 | |||
| 4821 | #, c-format | ||
| 4822 | msgid "Error: Cannot determine IP address of interface %s\n" | ||
| 4823 | msgstr "" | ||
| 4824 | |||
| 4825 | #, c-format | ||
| 4826 | msgid "Error: Cannot get interface IP address on this platform.\n" | ||
| 4827 | msgstr "" | ||
| 4828 | |||
| 4829 | #, c-format | ||
| 4830 | msgid "Pretending to be relay client %s\n" | ||
| 4831 | msgstr "" | ||
| 4832 | |||
| 4833 | #, c-format | ||
| 4834 | msgid "DHCPDISCOVER to %s port %d\n" | ||
| 4835 | msgstr "" | ||
| 4836 | |||
| 4837 | #, c-format | ||
| 4838 | msgid "Result=ERROR\n" | ||
| 4839 | msgstr "" | ||
| 4840 | |||
| 4841 | #, c-format | ||
| 4842 | msgid "Result=OK\n" | ||
| 4843 | msgstr "" | ||
| 4844 | |||
| 4845 | #, c-format | ||
| 4846 | msgid "DHCPOFFER from IP address %s" | ||
| 4847 | msgstr "" | ||
| 4848 | |||
| 4849 | #, c-format | ||
| 4850 | msgid " via %s\n" | ||
| 4851 | msgstr "" | ||
| 4852 | |||
| 4853 | #, c-format | ||
| 4854 | msgid "" | ||
| 4855 | "DHCPOFFER XID (%u) did not match DHCPDISCOVER XID (%u) - ignoring packet\n" | ||
| 4856 | msgstr "" | ||
| 4857 | |||
| 4858 | #, c-format | ||
| 4859 | msgid "DHCPOFFER hardware address did not match our own - ignoring packet\n" | ||
| 4860 | msgstr "" | ||
| 4861 | |||
| 4862 | #, c-format | ||
| 4863 | msgid "Total responses seen on the wire: %d\n" | ||
| 4864 | msgstr "" | ||
| 4865 | |||
| 4866 | #, fuzzy, c-format | ||
| 4867 | msgid "Valid responses for this machine: %d\n" | ||
| 4868 | msgstr "Keine Antwort vom Host \n" | ||
| 4869 | |||
| 4870 | #, c-format | ||
| 4871 | msgid "send_dhcp_packet result: %d\n" | ||
| 4872 | msgstr "" | ||
| 4873 | |||
| 4874 | #, fuzzy, c-format | ||
| 4875 | msgid "No (more) data received (nfound: %d)\n" | ||
| 4876 | msgstr "Keine Daten empfangen %s\n" | ||
| 4877 | |||
| 4878 | #, c-format | ||
| 4879 | msgid "recvfrom() failed, " | ||
| 4880 | msgstr "" | ||
| 4881 | |||
| 4882 | #, c-format | ||
| 4883 | msgid "receive_dhcp_packet() result: %d\n" | ||
| 4884 | msgstr "" | ||
| 4885 | |||
| 4886 | #, c-format | ||
| 4887 | msgid "receive_dhcp_packet() source: %s\n" | ||
| 4888 | msgstr "" | ||
| 4889 | |||
| 4890 | #, c-format | ||
| 4891 | msgid "Error: Could not create socket!\n" | ||
| 4892 | msgstr "" | ||
| 4893 | |||
| 4894 | #, c-format | ||
| 4895 | msgid "Error: Could not set reuse address option on DHCP socket!\n" | ||
| 4896 | msgstr "" | ||
| 4897 | |||
| 4898 | #, c-format | ||
| 4899 | msgid "Error: Could not set broadcast option on DHCP socket!\n" | ||
| 4900 | msgstr "" | ||
| 4901 | |||
| 4902 | #, c-format | ||
| 4903 | msgid "" | ||
| 4904 | "Error: Could not bind socket to interface %s. Check your privileges...\n" | ||
| 4905 | msgstr "" | ||
| 4906 | |||
| 4907 | #, c-format | ||
| 4908 | msgid "" | ||
| 4909 | "Error: Could not bind to DHCP socket (port %d)! Check your privileges...\n" | ||
| 4910 | msgstr "" | ||
| 4911 | |||
| 4912 | #, c-format | ||
| 4913 | msgid "Requested server address: %s\n" | ||
| 4914 | msgstr "" | ||
| 4915 | |||
| 4916 | #, c-format | ||
| 4917 | msgid "Lease Time: Infinite\n" | ||
| 4918 | msgstr "" | ||
| 4919 | |||
| 4920 | #, c-format | ||
| 4921 | msgid "Lease Time: %lu seconds\n" | ||
| 4922 | msgstr "" | ||
| 4923 | |||
| 4924 | #, c-format | ||
| 4925 | msgid "Renewal Time: Infinite\n" | ||
| 4926 | msgstr "" | ||
| 4927 | |||
| 4928 | #, c-format | ||
| 4929 | msgid "Renewal Time: %lu seconds\n" | ||
| 4930 | msgstr "" | ||
| 4931 | |||
| 4932 | #, c-format | ||
| 4933 | msgid "Rebinding Time: Infinite\n" | ||
| 4934 | msgstr "" | ||
| 4935 | |||
| 4936 | #, c-format | ||
| 4937 | msgid "Rebinding Time: %lu seconds\n" | ||
| 4938 | msgstr "" | ||
| 4939 | |||
| 4940 | #, c-format | ||
| 4941 | msgid "Added offer from server @ %s" | ||
| 4942 | msgstr "" | ||
| 4943 | |||
| 4944 | #, c-format | ||
| 4945 | msgid " of IP address %s\n" | ||
| 4946 | msgstr "" | ||
| 4947 | |||
| 4948 | #, c-format | ||
| 4949 | msgid "DHCP Server Match: Offerer=%s" | ||
| 4950 | msgstr "" | ||
| 4951 | |||
| 4952 | #, c-format | ||
| 4953 | msgid " Requested=%s" | ||
| 4954 | msgstr "" | ||
| 4955 | |||
| 4956 | #, c-format | ||
| 4957 | msgid " (duplicate)" | ||
| 4958 | msgstr "" | ||
| 4959 | |||
| 4960 | #, c-format | ||
| 4961 | msgid "\n" | ||
| 4962 | msgstr "" | ||
| 4963 | |||
| 4964 | #, c-format | ||
| 4965 | msgid "No DHCPOFFERs were received.\n" | ||
| 4966 | msgstr "" | ||
| 4967 | |||
| 4968 | #, c-format | ||
| 4969 | msgid "Received %d DHCPOFFER(s)" | ||
| 4970 | msgstr "" | ||
| 4971 | |||
| 4972 | #, c-format | ||
| 4973 | msgid ", %s%d of %d requested servers responded" | ||
| 4974 | msgstr "" | ||
| 4975 | |||
| 4976 | #, c-format | ||
| 4977 | msgid ", requested address (%s) was %soffered" | ||
| 4978 | msgstr "" | ||
| 4979 | |||
| 4980 | msgid "not " | ||
| 4981 | msgstr "" | ||
| 4982 | |||
| 4983 | #, c-format | ||
| 4984 | msgid ", max lease time = " | ||
| 4985 | msgstr "" | ||
| 4986 | |||
| 4987 | #, c-format | ||
| 4988 | msgid "Infinity" | ||
| 4989 | msgstr "" | ||
| 4990 | |||
| 4991 | msgid "Got unexpected non-option argument" | ||
| 4992 | msgstr "" | ||
| 4993 | |||
| 4994 | #, c-format | ||
| 4995 | msgid "Error: DLPI stream API failed to get MAC in check_ctrl: %s.\n" | ||
| 4996 | msgstr "" | ||
| 4997 | |||
| 4998 | #, c-format | ||
| 4999 | msgid "Error: DLPI stream API failed to get MAC in put_ctrl/putmsg(): %s.\n" | ||
| 5000 | msgstr "" | ||
| 5001 | |||
| 5002 | #, c-format | ||
| 5003 | msgid "Error: DLPI stream API failed to get MAC in put_both/putmsg().\n" | ||
| 5004 | msgstr "" | ||
| 5005 | |||
| 5006 | #, c-format | ||
| 5007 | msgid "" | ||
| 5008 | "Error: DLPI stream API failed to get MAC in dl_attach_req/open(%s..): %s.\n" | ||
| 5009 | msgstr "" | ||
| 5010 | |||
| 5011 | #, c-format | ||
| 5012 | msgid "Error: DLPI stream API failed to get MAC in dl_bind/check_ctrl(): %s.\n" | ||
| 5013 | msgstr "" | ||
| 5014 | |||
| 5015 | #, c-format | ||
| 5016 | msgid "Hardware address: " | ||
| 5017 | msgstr "" | ||
| 5018 | |||
| 5019 | msgid "This plugin tests the availability of DHCP servers on a network." | ||
| 5020 | msgstr "" | ||
| 5021 | |||
| 5022 | msgid "IP address of DHCP server that we must hear from" | ||
| 5023 | msgstr "" | ||
| 5024 | |||
| 5025 | msgid "IP address that should be offered by at least one DHCP server" | ||
| 5026 | msgstr "" | ||
| 5027 | |||
| 5028 | msgid "Seconds to wait for DHCPOFFER before timeout occurs" | ||
| 5029 | msgstr "" | ||
| 5030 | |||
| 5031 | msgid "Interface to to use for listening (i.e. eth0)" | ||
| 5032 | msgstr "" | ||
| 5033 | |||
| 5034 | msgid "MAC address to use in the DHCP request" | ||
| 5035 | msgstr "" | ||
| 5036 | |||
| 5037 | msgid "Unicast testing: mimic a DHCP relay, requires -s" | ||
| 5038 | msgstr "" | ||
| 5039 | |||
| 5040 | msgid "specify a target" | ||
| 5041 | msgstr "" | ||
| 5042 | |||
| 5043 | msgid "Use IPv4 (default) or IPv6 to communicate with the targets" | ||
| 5044 | msgstr "" | ||
| 5045 | |||
| 5046 | #, fuzzy | ||
| 5047 | msgid "warning threshold (currently " | ||
| 5048 | msgstr "Warning threshold Integer sein" | ||
| 5049 | |||
| 5050 | #, fuzzy | ||
| 5051 | msgid "critical threshold (currently " | ||
| 5052 | msgstr "Critical threshold muss ein Integer sein" | ||
| 5053 | |||
| 5054 | #, fuzzy | ||
| 5055 | msgid "specify a source IP address or device name" | ||
| 5056 | msgstr "Hostname oder Serveradresse muss angegeben werden" | ||
| 5057 | |||
| 5058 | msgid "number of packets to send (currently " | ||
| 5059 | msgstr "" | ||
| 5060 | |||
| 5061 | msgid "max packet interval (currently " | ||
| 5062 | msgstr "" | ||
| 5063 | |||
| 5064 | msgid "max target interval (currently " | ||
| 5065 | msgstr "" | ||
| 5066 | |||
| 5067 | msgid "number of alive hosts required for success" | ||
| 5068 | msgstr "" | ||
| 5069 | |||
| 5070 | msgid "TTL on outgoing packets (currently " | ||
| 5071 | msgstr "" | ||
| 5072 | |||
| 5073 | msgid "timeout value (seconds, currently " | ||
| 5074 | msgstr "" | ||
| 5075 | |||
| 5076 | msgid "Number of icmp data bytes to send" | ||
| 5077 | msgstr "" | ||
| 5078 | |||
| 5079 | msgid "Packet size will be data bytes + icmp header (currently" | ||
| 5080 | msgstr "" | ||
| 5081 | |||
| 5082 | msgid "verbose" | ||
| 5083 | msgstr "" | ||
| 5084 | |||
| 5085 | msgid "The -H switch is optional. Naming a host (or several) to check is not." | ||
| 5086 | msgstr "" | ||
| 5087 | |||
| 5088 | msgid "" | ||
| 5089 | "Threshold format for -w and -c is 200.25,60% for 200.25 msec RTA and 60%" | ||
| 5090 | msgstr "" | ||
| 5091 | |||
| 5092 | msgid "packet loss. The default values should work well for most users." | ||
| 5093 | msgstr "" | ||
| 5094 | |||
| 5095 | msgid "" | ||
| 5096 | "You can specify different RTA factors using the standardized abbreviations" | ||
| 5097 | msgstr "" | ||
| 5098 | |||
| 5099 | msgid "" | ||
| 5100 | "us (microseconds), ms (milliseconds, default) or just plain s for seconds." | ||
| 5101 | msgstr "" | ||
| 5102 | |||
| 5103 | msgid "The -v switch can be specified several times for increased verbosity." | ||
| 5104 | msgstr "" | ||
| 5105 | |||
| 5106 | #, fuzzy, c-format | ||
| 5107 | #~ msgid "%s - Plugin timed out after %d seconds\n" | ||
| 5108 | #~ msgstr "CRITICAL - Dokumentendatum ist %d Sekunden in der Zukunft\n" | ||
| 5109 | |||
| 5110 | #, fuzzy | ||
| 5111 | #~ msgid "Critical Process Count must be an integer!" | ||
| 5112 | #~ msgstr "Critical threshold muss ein Integer sein" | ||
| 5113 | |||
| 5114 | #, fuzzy | ||
| 5115 | #~ msgid "Warning Process Count must be an integer!" | ||
| 5116 | #~ msgstr "Warning threshold Integer sein" | ||
| 5117 | |||
| 5118 | #, fuzzy | ||
| 5119 | #~ msgid "CRITICAL - Cannot retrieve server certificate." | ||
| 5120 | #~ msgstr "CRITICAL - Konnte kein Serverzertifikat erhalten\n" | ||
| 5121 | |||
| 5122 | #~ msgid "CRITICAL - Cannot retrieve server certificate.\n" | ||
| 5123 | #~ msgstr "CRITICAL - Konnte kein Serverzertifikat erhalten\n" | ||
| 5124 | |||
| 5125 | #~ msgid "Invalid HTTP response received from host\n" | ||
| 5126 | #~ msgstr "Ungültige HTTP Antwort von Host empfangen\n" | ||
| 5127 | |||
| 5128 | #~ msgid "Invalid HTTP response received from host on port %d\n" | ||
| 5129 | #~ msgstr "Ungültige HTTP Antwort von Host erhalten auf Port %d\n" | ||
| 5130 | |||
| 5131 | #~ msgid "HTTP CRITICAL: %s\n" | ||
| 5132 | #~ msgstr "HTTP CRITICAL: %s\n" | ||
| 5133 | |||
| 5134 | #~ msgid "HTTP WARNING: %s\n" | ||
| 5135 | #~ msgstr "HTTP WARNING: %s\n" | ||
| 5136 | |||
| 5137 | #~ msgid "HTTP UNKNOWN" | ||
| 5138 | #~ msgstr "HTTP UNKNOWN" | ||
| 5139 | |||
| 5140 | #~ msgid "HTTP OK" | ||
| 5141 | #~ msgstr "HTTP OK" | ||
| 5142 | |||
| 5143 | #~ msgid "HTTP WARNING" | ||
| 5144 | #~ msgstr "HTTP WARNING" | ||
| 5145 | |||
| 5146 | #~ msgid "HTTP CRITICAL" | ||
| 5147 | #~ msgstr "HTTP CRITICAL" | ||
| 5148 | |||
| 5149 | #, fuzzy | ||
| 5150 | #~ msgid "HTTP OK %s - %.3f second response time %s|%s %s\n" | ||
| 5151 | #~ msgstr "HTTP OK %s - %.3f Sekunde Antwortzeit %s%s|%s %s\n" | ||
| 5152 | |||
| 5153 | #~ msgid "HTTP CRITICAL - string not found%s|%s %s\n" | ||
| 5154 | #~ msgstr "HTTP CRITICAL - Text nicht gefunden%s|%s %s\n" | ||
| 5155 | |||
| 5156 | #, fuzzy | ||
| 5157 | #~ msgid "HTTP UNKNOWN - could not allocate url\n" | ||
| 5158 | #~ msgstr "HTTP UNKNOWN - Konnte·url·nicht·zuweisen\n" | ||
| 5159 | |||
| 5160 | #, fuzzy | ||
| 5161 | #~ msgid "snmpget returned an error status" | ||
| 5162 | #~ msgstr "dig hat einen Fehler zurückgegeben" | ||
| 5163 | |||
| 5164 | #, fuzzy | ||
| 5165 | #~ msgid "Invalid critical threshold" | ||
| 5166 | #~ msgstr "Critical threshold muss ein Integer sein" | ||
| 5167 | |||
| 5168 | #, fuzzy | ||
| 5169 | #~ msgid "Invalid warning threshold" | ||
| 5170 | #~ msgstr "Warning threshold Integer sein" | ||
| 5171 | |||
| 5172 | #, fuzzy | ||
| 5173 | #~ msgid "HTTP WARNING: %s - %.3f second response time %s|%s %s\n" | ||
| 5174 | #~ msgstr "HTTP WARNING: %s - %.3f Sekunden Antwortzeit %s%s|%s %s\n" | ||
| 5175 | |||
| 5176 | #, fuzzy | ||
| 5177 | #~ msgid "%s does not exist\n" | ||
| 5178 | #~ msgstr "%s [%s nicht gefunden]" | ||
| 5179 | |||
| 5180 | #, fuzzy | ||
| 5181 | #~ msgid "Unknown error" | ||
| 5182 | #~ msgstr "Papierfehler" | ||
| 5183 | |||
| 5184 | #, fuzzy | ||
| 5185 | #~ msgid "Unknown argument - %s" | ||
| 5186 | #~ msgstr "" | ||
| 5187 | #~ "%s: Unbekanntes Argument: %s\n" | ||
| 5188 | #~ "\n" | ||
| 5189 | |||
| 5190 | #~ msgid "" | ||
| 5191 | #~ " -1, --proto1\n" | ||
| 5192 | #~ " tell ssh to use Protocol 1\n" | ||
| 5193 | #~ " -2, --proto2\n" | ||
| 5194 | #~ " tell ssh to use Protocol 2\n" | ||
| 5195 | #~ " -S, --skiplines=n\n" | ||
| 5196 | #~ " Ignore first n lines on STDERR (to suppress a logon banner)\n" | ||
| 5197 | #~ " -f\n" | ||
| 5198 | #~ " tells ssh to fork rather than create a tty\n" | ||
| 5199 | #~ msgstr "" | ||
| 5200 | #~ " -1, --proto1\n" | ||
| 5201 | #~ " ssh anweisen Protokoll 1 zu verwenden\n" | ||
| 5202 | #~ " -2, --proto2\n" | ||
| 5203 | #~ " ssh anweisen Protokoll 2 zu verwenden\n" | ||
| 5204 | #~ " -S, --skiplines=n\n" | ||
| 5205 | #~ " Ignoriere die ersten n Zeilen auf STDERR (um Logon Banner zu " | ||
| 5206 | #~ "unterdrücken)\n" | ||
| 5207 | #~ " -f\n" | ||
| 5208 | #~ " ssh anweisen fork zu nutzen statt ein tty zu erzeugen\n" | ||
| 5209 | |||
| 5210 | #~ msgid "" | ||
| 5211 | #~ " -C, --command='COMMAND STRING'\n" | ||
| 5212 | #~ " command to execute on the remote machine\n" | ||
| 5213 | #~ " -l, --logname=USERNAME\n" | ||
| 5214 | #~ " SSH user name on remote host [optional]\n" | ||
| 5215 | #~ " -i, --identity=KEYFILE\n" | ||
| 5216 | #~ " identity of an authorized key [optional]\n" | ||
| 5217 | #~ " -O, --output=FILE\n" | ||
| 5218 | #~ " external command file for nagios [optional]\n" | ||
| 5219 | #~ " -s, --services=LIST\n" | ||
| 5220 | #~ " list of nagios service names, separated by ':' [optional]\n" | ||
| 5221 | #~ " -n, --name=NAME\n" | ||
| 5222 | #~ " short name of host in nagios configuration [optional]\n" | ||
| 5223 | #~ msgstr "" | ||
| 5224 | #~ " -C, --command='COMMAND STRING'\n" | ||
| 5225 | #~ " Befehl der auf der entfernten Maschine ausgeführt werden soll\n" | ||
| 5226 | #~ " -l, --logname=USERNAME\n" | ||
| 5227 | #~ " SSH user name auf dem entfernten Host [optional]\n" | ||
| 5228 | #~ " -i, --identity=KEYFILE\n" | ||
| 5229 | #~ " zu verwendende Schlüsseldatei [optional]\n" | ||
| 5230 | #~ " -O, --output=FILE\n" | ||
| 5231 | #~ " externe Befehlsdatei für nagios [optional]\n" | ||
| 5232 | #~ " -s, --services=LIST\n" | ||
| 5233 | #~ " Liste von nagios Servicenamen, getrennt durch ':' [optional]\n" | ||
| 5234 | #~ " -n, --name=NAME\n" | ||
| 5235 | #~ " Shortname des Hosts in der nagios Konfiguration [optional]\n" | ||
| 5236 | |||
| 5237 | #, fuzzy | ||
| 5238 | #~ msgid "Warning inode threshold must be percentage!\n" | ||
| 5239 | #~ msgstr "Warning threshold muss ein Integer oder ein Prozentwert sein!\n" | ||
| 5240 | |||
| 5241 | #, fuzzy | ||
| 5242 | #~ msgid "Critical inode threshold must be percentage!\n" | ||
| 5243 | #~ msgstr "Critical threshold muss ein Integer oder ein Prozentwert sein!\n" | ||
| 5244 | |||
| 5245 | #~ msgid "INPUT ERROR: No thresholds specified" | ||
| 5246 | #~ msgstr "FEHLER: Kein Schwellwert angegeben" | ||
| 5247 | |||
| 5248 | #~ msgid "" | ||
| 5249 | #~ "INPUT ERROR: C_DFP (%f) should be less than W_DFP (%.1f) and both should " | ||
| 5250 | #~ "be between zero and 100 percent, inclusive" | ||
| 5251 | #~ msgstr "" | ||
| 5252 | #~ "INPUT ERROR: C_DFP (%f) sollte kleiner sein als W_DFP (%.1f) und beide " | ||
| 5253 | #~ "sollten zwischen 0 und 100 Prozent liegen" | ||
| 5254 | |||
| 5255 | #, fuzzy | ||
| 5256 | #~ msgid "" | ||
| 5257 | #~ "INPUT ERROR: C_IDFP (%f) should be less than W_IDFP (%.1f) and both " | ||
| 5258 | #~ "should be between zero and 100 percent, inclusive" | ||
| 5259 | #~ msgstr "" | ||
| 5260 | #~ "INPUT ERROR: C_DFP (%f) sollte kleiner sein als W_DFP (%.1f) und beide " | ||
| 5261 | #~ "sollten zwischen 0 und 100 Prozent liegen" | ||
| 5262 | |||
| 5263 | #~ msgid "" | ||
| 5264 | #~ "INPUT ERROR: C_DF (%lu) should be less than W_DF (%lu) and both should be " | ||
| 5265 | #~ "greater than zero" | ||
| 5266 | #~ msgstr "" | ||
| 5267 | #~ "INPUT ERROR: C_DF (%lu) sollte kleiner sein als W_DF (%lu) und beide " | ||
| 5268 | #~ "sollten größer als 0 sein" | ||
| 5269 | |||
| 5270 | #, fuzzy | ||
| 5271 | #~ msgid "No response from host on port %d\n" | ||
| 5272 | #~ msgstr "Ungültige HTTP Antwort von Host erhalten auf Port %d\n" | ||
| 5273 | |||
| 5274 | #, fuzzy | ||
| 5275 | #~ msgid "Invalid response received from host on port %d\n" | ||
| 5276 | #~ msgstr "Ungültige HTTP Antwort von Host erhalten auf Port %d\n" | ||
| 5277 | |||
| 5278 | #~ msgid "%.3f seconds response time (%s)" | ||
| 5279 | #~ msgstr "%.3f Sekunden Antwortzeit (%s)" | ||
| 5280 | |||
| 5281 | #~ msgid "" | ||
| 5282 | #~ " -w, --warning=INTEGER\n" | ||
| 5283 | #~ " Exit with WARNING status if less than INTEGER --units of disk are " | ||
| 5284 | #~ "free\n" | ||
| 5285 | #~ " -w, --warning=PERCENT%%\n" | ||
| 5286 | #~ " Exit with WARNING status if less than PERCENT of disk space is free\n" | ||
| 5287 | #~ " -c, --critical=INTEGER\n" | ||
| 5288 | #~ " Exit with CRITICAL status if less than INTEGER --units of disk are " | ||
| 5289 | #~ "free\n" | ||
| 5290 | #~ " -c, --critical=PERCENT%%\n" | ||
| 5291 | #~ " Exit with CRITICAL status if less than PERCENT of disk space is free\n" | ||
| 5292 | #~ " -C, --clear\n" | ||
| 5293 | #~ " Clear thresholds\n" | ||
| 5294 | #~ msgstr "" | ||
| 5295 | #~ " -w, --warning=INTEGER\n" | ||
| 5296 | #~ " meldet Status WARNING, wenn weniger als INTEGER --Einheiten frei\n" | ||
| 5297 | #~ " -w, --warning=PERCENT%%\n" | ||
| 5298 | #~ " meldet Status WARNING, wenn weniger als PERCENT --Plattenplatz frei\n" | ||
| 5299 | #~ " -c, --critical=INTEGER\n" | ||
| 5300 | #~ " meldet Status CRITICAL, wenn weniger als INTEGER --Einheiten frei\n" | ||
| 5301 | #~ " -c, --critical=PERCENT%%\n" | ||
| 5302 | #~ " meldet Status CRITICAL, wenn weniger als PERCENT --Plattenplatz frei\n" | ||
| 5303 | #~ " -C, --clear\n" | ||
| 5304 | #~ " Schwellwerte löschen\n" | ||
| 5305 | |||
| 5306 | #~ msgid "" | ||
| 5307 | #~ "Examples:\n" | ||
| 5308 | #~ " check_disk -w 10% -c 5% -p /tmp -p /var -C -w 100000 -c 50000 -p /\n" | ||
| 5309 | #~ " Checks /tmp and /var at 10%,5% and / at 100MB, 50MB\n" | ||
| 5310 | #~ msgstr "" | ||
| 5311 | #~ "Beispiel:\n" | ||
| 5312 | #~ " check_disk -w 10% -c 5% -p /tmp -p /var -C -w 100000 -c 50000 -p /\n" | ||
| 5313 | #~ " Prüft /tmp und /var mit 10%,5% und / mit 100MB, 50MB\n" | ||
| 5314 | |||
| 5315 | #~ msgid "" | ||
| 5316 | #~ "This plugin uses the nslookup program to obtain the IP address\n" | ||
| 5317 | #~ "for the given host/domain query. A optional DNS server to use may\n" | ||
| 5318 | #~ "be specified. If no DNS server is specified, the default server(s)\n" | ||
| 5319 | #~ "specified in /etc/resolv.conf will be used.\n" | ||
| 5320 | #~ "\n" | ||
| 5321 | #~ msgstr "" | ||
| 5322 | #~ "Dieses Plugin nutzt nslookup, um die IP-Adresse des angegebenen\n" | ||
| 5323 | #~ "Hosts zu erfragen. Optional kann ein DNS-Server angegeben werden\n" | ||
| 5324 | #~ "Wenn kein DNS-Server angegeben wird, so wird der Standardserver aus\n" | ||
| 5325 | #~ "/etc/resolv.conf genutzt.\n" | ||
| 5326 | #~ "\n" | ||
| 5327 | |||
| 5328 | #~ msgid "HTTP CRITICAL - Could not make SSL connection\n" | ||
| 5329 | #~ msgstr "HTTP CRITICAL - Konnte keine SSL Verbindung herstellen\n" | ||
| 5330 | |||
| 5331 | #~ msgid "Client Certificate Required\n" | ||
| 5332 | #~ msgstr "Clientzertifikat benötigt\n" | ||
| 5333 | |||
| 5334 | #~ msgid "CRITICAL - Cannot create SSL context.\n" | ||
| 5335 | #~ msgstr "CRITICAL - Konnte SSL Kontext nicht erzeugen.\n" | ||
| 5336 | |||
| 5337 | #~ msgid "CRITICAL - Cannot initiate SSL handshake.\n" | ||
| 5338 | #~ msgstr "CRITICAL - Konnte SSL Handshake nicht starten.\n" | ||
| 5339 | |||
| 5340 | #, fuzzy | ||
| 5341 | #~ msgid "Failed to allocate memory for hostname" | ||
| 5342 | #~ msgstr "konnte keinen Speicher für '%s' reservieren\n" | ||
| 5343 | |||
| 5344 | #, fuzzy | ||
| 5345 | #~ msgid "CRITICAL - %d of %d hosts are alive\n" | ||
| 5346 | #~ msgstr "CRITICAL - Serverdatum \"%100s\" konnte nicht verarbeitet werden" | ||
| 5347 | |||
| 5348 | #, fuzzy | ||
| 5349 | #~ msgid "%s has no address data\n" | ||
| 5350 | #~ msgstr "Nameserver %s hat keine Datensätze\n" | ||
| 5351 | |||
| 5352 | #, fuzzy | ||
| 5353 | #~ msgid "CRITICAL - Could not make SSL connection\n" | ||
| 5354 | #~ msgstr "HTTP CRITICAL - Konnte keine SSL Verbindung herstellen\n" | ||
| 5355 | |||
| 5356 | #, fuzzy | ||
| 5357 | #~ msgid "Unexpected response from host: %s\n" | ||
| 5358 | #~ msgstr "Keine Antwort vom Host \n" | ||
| 5359 | |||
| 5360 | #, fuzzy | ||
| 5361 | #~ msgid "Certificate expires today (%s).\n" | ||
| 5362 | #~ msgstr "Clientzertifikat benötigt\n" | ||
| 5363 | |||
| 5364 | #, fuzzy | ||
| 5365 | #~ msgid "ERROR: Cannot create SSL context.\n" | ||
| 5366 | #~ msgstr "CRITICAL - Konnte SSL Kontext nicht erzeugen.\n" | ||
| 5367 | |||
| 5368 | #, fuzzy | ||
| 5369 | #~ msgid "ERROR: Cannot retrieve server certificate.\n" | ||
| 5370 | #~ msgstr "CRITICAL - Konnte kein Serverzertifikat erhalten\n" | ||
| 5371 | |||
| 5372 | #, fuzzy | ||
| 5373 | #~ msgid "ERROR: Cannot initiate SSL handshake.\n" | ||
| 5374 | #~ msgstr "CRITICAL - Konnte SSL Handshake nicht starten.\n" | ||
| 5375 | |||
| 5376 | #~ msgid "" | ||
| 5377 | #~ "%s: Unknown argument: %s\n" | ||
| 5378 | #~ "\n" | ||
| 5379 | #~ msgstr "" | ||
| 5380 | #~ "%s: Unbekanntes Argument: %s\n" | ||
| 5381 | #~ "\n" | ||
| 5382 | |||
| 5383 | #~ msgid "Critical time must be a nonnegative integer" | ||
| 5384 | #~ msgstr "Critical time muss ein positiver Integer sein" | ||
| 5385 | |||
| 5386 | #~ msgid "Time interval must be a nonnegative integer" | ||
| 5387 | #~ msgstr "Time interval muss ein positiver Integer sein" | ||
| 5388 | |||
| 5389 | #~ msgid "check_http: invalid option - SSL is not available\n" | ||
| 5390 | #~ msgstr "check_http: ungültige Option - SSL ist nicht verfügbar\n" | ||
| 5391 | |||
| 5392 | #~ msgid "invalid hostname/address" | ||
| 5393 | #~ msgstr "Ungültige(r) Hostname/Adresse" | ||
diff --git a/po/fr.po b/po/fr.po deleted file mode 100644 index dfc2c5dc..00000000 --- a/po/fr.po +++ /dev/null | |||
| @@ -1,5384 +0,0 @@ | |||
| 1 | # translation of fr.po to | ||
| 2 | # Messages français pour Nagios Plugins | ||
| 3 | # Copyright (C) 2003-2023 Nagios Plugin Development Group | ||
| 4 | # This file is distributed under the same license as the nagiosplug package. | ||
| 5 | # | ||
| 6 | # Karl DeBisschop <kdebisschop@users.sourceforge.net>, 2003. | ||
| 7 | # Benoit Mortier <benoit.mortier@opensides.be>, 2004, 2006, 2007. | ||
| 8 | # Thomas Guyot-Sionnest <dermoth@aei.ca>, 2007. | ||
| 9 | msgid "" | ||
| 10 | msgstr "" | ||
| 11 | "Project-Id-Version: PACKAGE VERSION\n" | ||
| 12 | "Report-Msgid-Bugs-To: devel@monitoring-plugins.org\n" | ||
| 13 | "POT-Creation-Date: 2023-09-05 00:31+0200\n" | ||
| 14 | "PO-Revision-Date: 2010-04-21 23:38-0400\n" | ||
| 15 | "Last-Translator: \n" | ||
| 16 | "Language-Team: Monitoring Plugin Development Team <devel@monitoring-plugins.org>\n" | ||
| 17 | "Language: fr\n" | ||
| 18 | "MIME-Version: 1.0\n" | ||
| 19 | "Content-Type: text/plain; charset=UTF-8\n" | ||
| 20 | "Content-Transfer-Encoding: 8bit\n" | ||
| 21 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" | ||
| 22 | "X-Generator: KBabel 1.11.4\n" | ||
| 23 | |||
| 24 | msgid "Could not parse arguments" | ||
| 25 | msgstr "Impossible de décomposer les arguments" | ||
| 26 | |||
| 27 | msgid "Cannot catch SIGALRM" | ||
| 28 | msgstr "Impossible d'obtenir le signal SIGALRM" | ||
| 29 | |||
| 30 | #, fuzzy, c-format | ||
| 31 | msgid "SSH connection failed: %s\n" | ||
| 32 | msgstr "L'exécution de la commande à distance %s à échoué\n" | ||
| 33 | |||
| 34 | #, c-format | ||
| 35 | msgid "Remote command execution failed: %s\n" | ||
| 36 | msgstr "L'exécution de la commande à distance %s à échoué\n" | ||
| 37 | |||
| 38 | #, c-format | ||
| 39 | msgid "%s - check_by_ssh: Remote command '%s' returned status %d\n" | ||
| 40 | msgstr "" | ||
| 41 | |||
| 42 | #, c-format | ||
| 43 | msgid "SSH WARNING: could not open %s\n" | ||
| 44 | msgstr "SSH AVERTISSEMENT: impossible d'ouvrir %s\n" | ||
| 45 | |||
| 46 | #, c-format | ||
| 47 | msgid "%s: Error parsing output\n" | ||
| 48 | msgstr "%s: Erreur d'analyse du résultat\n" | ||
| 49 | |||
| 50 | msgid "Timeout interval must be a positive integer" | ||
| 51 | msgstr "Le délai d'attente doit être un entier positif" | ||
| 52 | |||
| 53 | msgid "Port must be a positive integer" | ||
| 54 | msgstr "Le numéro du port doit être un entier positif" | ||
| 55 | |||
| 56 | msgid "skip-stdout argument must be an integer" | ||
| 57 | msgstr "Le nombres de lignes à sauter (skip-stdout) doit être un entier" | ||
| 58 | |||
| 59 | msgid "skip-stderr argument must be an integer" | ||
| 60 | msgstr "Le nombres de lignes à sauter (skip-stderr) doit être un entier" | ||
| 61 | |||
| 62 | #, c-format | ||
| 63 | msgid "%s: You must provide a host name\n" | ||
| 64 | msgstr "%s: Vous devez fournir un nom d'hôte\n" | ||
| 65 | |||
| 66 | msgid "No remotecmd" | ||
| 67 | msgstr "Pas de commande distante" | ||
| 68 | |||
| 69 | #, c-format | ||
| 70 | msgid "%s: Argument limit of %d exceeded\n" | ||
| 71 | msgstr "" | ||
| 72 | |||
| 73 | msgid "Can not (re)allocate 'commargv' buffer\n" | ||
| 74 | msgstr "Impossible de réallouer le tampon 'commargv'\n" | ||
| 75 | |||
| 76 | #, c-format | ||
| 77 | msgid "" | ||
| 78 | "%s: In passive mode, you must provide a service name for each command.\n" | ||
| 79 | msgstr "" | ||
| 80 | "%s: En mode passif, vous devez fournir un service pour chaque commande.\n" | ||
| 81 | |||
| 82 | #, fuzzy, c-format | ||
| 83 | msgid "" | ||
| 84 | "%s: In passive mode, you must provide the host short name from the " | ||
| 85 | "monitoring configs.\n" | ||
| 86 | msgstr "" | ||
| 87 | "%s: En mode passif, vous devez fournir le nom court du hôte mentionné dans " | ||
| 88 | "la configuration de nagios.\n" | ||
| 89 | |||
| 90 | #, c-format | ||
| 91 | msgid "This plugin uses SSH to execute commands on a remote host" | ||
| 92 | msgstr "Ce plugin utilise SSH pour exécuter des commandes sur un hôte distant" | ||
| 93 | |||
| 94 | msgid "tell ssh to use Protocol 1 [optional]" | ||
| 95 | msgstr "dire à ssh d'utiliser le protocole version 1 [optionnel]" | ||
| 96 | |||
| 97 | msgid "tell ssh to use Protocol 2 [optional]" | ||
| 98 | msgstr "dire à ssh d'utiliser le protocole 2 [optionnel]" | ||
| 99 | |||
| 100 | msgid "Ignore all or (if specified) first n lines on STDOUT [optional]" | ||
| 101 | msgstr "" | ||
| 102 | |||
| 103 | msgid "Ignore all or (if specified) first n lines on STDERR [optional]" | ||
| 104 | msgstr "" | ||
| 105 | |||
| 106 | msgid "Exit with an warning, if there is an output on STDERR" | ||
| 107 | msgstr "" | ||
| 108 | |||
| 109 | msgid "" | ||
| 110 | "tells ssh to fork rather than create a tty [optional]. This will always " | ||
| 111 | "return OK if ssh is executed" | ||
| 112 | msgstr "" | ||
| 113 | |||
| 114 | msgid "command to execute on the remote machine" | ||
| 115 | msgstr "commande à exécuter sur la machine distante" | ||
| 116 | |||
| 117 | msgid "SSH user name on remote host [optional]" | ||
| 118 | msgstr "Nom d'utilisateur ssh sur la machine distante [optionnel]" | ||
| 119 | |||
| 120 | msgid "identity of an authorized key [optional]" | ||
| 121 | msgstr "Identité de la clé autorisée [optionnel]" | ||
| 122 | |||
| 123 | #, fuzzy | ||
| 124 | msgid "external command file for monitoring [optional]" | ||
| 125 | msgstr "commande externe pour nagios [optionnel]" | ||
| 126 | |||
| 127 | #, fuzzy | ||
| 128 | msgid "list of monitoring service names, separated by ':' [optional]" | ||
| 129 | msgstr "liste des services nagios, séparés par ':' [optionnel] " | ||
| 130 | |||
| 131 | #, fuzzy | ||
| 132 | msgid "short name of host in the monitoring configuration [optional]" | ||
| 133 | msgstr "nom court de l'hôte dans la configuration nagios [optionnel]" | ||
| 134 | |||
| 135 | msgid "Call ssh with '-o OPTION' (may be used multiple times) [optional]" | ||
| 136 | msgstr "" | ||
| 137 | "appelle ssh avec '-o OPTION' (peut être utilisé plusieurs fois) [optionnel]" | ||
| 138 | |||
| 139 | #, fuzzy | ||
| 140 | msgid "Tell ssh to use this configfile [optional]" | ||
| 141 | msgstr "dire à ssh d'utiliser le protocole version 1 [optionnel]" | ||
| 142 | |||
| 143 | msgid "Tell ssh to suppress warning and diagnostic messages [optional]" | ||
| 144 | msgstr "" | ||
| 145 | "dire à ssh de supprimer les messages d'erreurs et de diagnostic [optionnel]" | ||
| 146 | |||
| 147 | msgid "Make connection problems return UNKNOWN instead of CRITICAL" | ||
| 148 | msgstr "" | ||
| 149 | |||
| 150 | msgid "The most common mode of use is to refer to a local identity file with" | ||
| 151 | msgstr "" | ||
| 152 | |||
| 153 | msgid "the '-i' option. In this mode, the identity pair should have a null" | ||
| 154 | msgstr "" | ||
| 155 | |||
| 156 | msgid "passphrase and the public key should be listed in the authorized_keys" | ||
| 157 | msgstr "" | ||
| 158 | |||
| 159 | msgid "file of the remote host. Usually the key will be restricted to running" | ||
| 160 | msgstr "" | ||
| 161 | |||
| 162 | msgid "only one command on the remote server. If the remote SSH server tracks" | ||
| 163 | msgstr "" | ||
| 164 | |||
| 165 | msgid "invocation arguments, the one remote program may be an agent that can" | ||
| 166 | msgstr "" | ||
| 167 | |||
| 168 | msgid "execute additional commands as proxy" | ||
| 169 | msgstr "" | ||
| 170 | |||
| 171 | msgid "To use passive mode, provide multiple '-C' options, and provide" | ||
| 172 | msgstr "Pour utiliser le mode passif, utilisez plusieurs fois l'option '-C',et" | ||
| 173 | |||
| 174 | msgid "" | ||
| 175 | "all of -O, -s, and -n options (servicelist order must match '-C'options)" | ||
| 176 | msgstr "" | ||
| 177 | "et les options -O, -s, n (l'ordre des services doit correspondre aux " | ||
| 178 | "multiples options '-C)" | ||
| 179 | |||
| 180 | msgid "Examples:" | ||
| 181 | msgstr "Exemples:" | ||
| 182 | |||
| 183 | msgid "Usage:" | ||
| 184 | msgstr "Utilisation:" | ||
| 185 | |||
| 186 | #, fuzzy, c-format | ||
| 187 | msgid "Host/Service Cluster Plugin for Monitoring" | ||
| 188 | msgstr "Plugin de Cluster d'Hôte/Service pour Nagios 2" | ||
| 189 | |||
| 190 | msgid "Options:" | ||
| 191 | msgstr "Options:" | ||
| 192 | |||
| 193 | msgid "Check service cluster status" | ||
| 194 | msgstr "Vérifie l'état d'un cluster de services" | ||
| 195 | |||
| 196 | msgid "Check host cluster status" | ||
| 197 | msgstr "Vérifie l'état d'un cluster d'hôtes" | ||
| 198 | |||
| 199 | msgid "Optional prepended text output (i.e. \"Host cluster\")" | ||
| 200 | msgstr "Texte optionnel accolé à la sortie (i.e. \"Cluster d'hôtes\")" | ||
| 201 | |||
| 202 | msgid "Specifies the range of hosts or services in cluster that must be in a" | ||
| 203 | msgstr "Défini le nombre d'hôtes ou de services du cluster qui doivent être" | ||
| 204 | |||
| 205 | msgid "non-OK state in order to return a WARNING status level" | ||
| 206 | msgstr "dans un état non-OK pour retourner un état AVERTISSEMENT" | ||
| 207 | |||
| 208 | msgid "non-OK state in order to return a CRITICAL status level" | ||
| 209 | msgstr "dans un état non-OK pour retourner un état CRITIQUE" | ||
| 210 | |||
| 211 | msgid "The status codes of the hosts or services in the cluster, separated by" | ||
| 212 | msgstr "Les codes d'état des hôtes ou des services du cluster, séparés par des" | ||
| 213 | |||
| 214 | msgid "commas" | ||
| 215 | msgstr "virgules" | ||
| 216 | |||
| 217 | msgid "Notes:" | ||
| 218 | msgstr "Notes:" | ||
| 219 | |||
| 220 | msgid "" | ||
| 221 | "Will alert critical if there are 3 or more service data points in a non-OK" | ||
| 222 | msgstr "" | ||
| 223 | |||
| 224 | msgid "state." | ||
| 225 | msgstr "" | ||
| 226 | |||
| 227 | #, c-format | ||
| 228 | msgid "Looking for: '%s'\n" | ||
| 229 | msgstr "Recherche de: '%s'\n" | ||
| 230 | |||
| 231 | msgid "dig returned an error status" | ||
| 232 | msgstr "dig à renvoyé un état d'erreur" | ||
| 233 | |||
| 234 | msgid "Server not found in ANSWER SECTION" | ||
| 235 | msgstr "Le serveur n'a pas été trouvé dans l'ANSWER SECTION" | ||
| 236 | |||
| 237 | msgid "No ANSWER SECTION found" | ||
| 238 | msgstr "Pas d' ANSWER SECTION trouvé" | ||
| 239 | |||
| 240 | msgid "Probably a non-existent host/domain" | ||
| 241 | msgstr "Probablement un hôte/domaine inexistant" | ||
| 242 | |||
| 243 | #, c-format | ||
| 244 | msgid "Port must be a positive integer - %s" | ||
| 245 | msgstr "Le numéro du port doit être un entier positif - %s" | ||
| 246 | |||
| 247 | #, c-format | ||
| 248 | msgid "Warning interval must be a positive integer - %s" | ||
| 249 | msgstr "Le seuil d'avertissement doit être un entier positif - %s" | ||
| 250 | |||
| 251 | #, c-format | ||
| 252 | msgid "Critical interval must be a positive integer - %s" | ||
| 253 | msgstr "Le seuil critique doit être un entier positif - %s" | ||
| 254 | |||
| 255 | #, c-format | ||
| 256 | msgid "Timeout interval must be a positive integer - %s" | ||
| 257 | msgstr "Le délai d'attente doit être un entier positif - %s" | ||
| 258 | |||
| 259 | #, fuzzy, c-format | ||
| 260 | msgid "This plugin tests the DNS service on the specified host using dig" | ||
| 261 | msgstr "Ce plugin teste le service DNS sur l'hôte spécifié en utilisant dig" | ||
| 262 | |||
| 263 | msgid "Force dig to only use IPv4 query transport" | ||
| 264 | msgstr "" | ||
| 265 | |||
| 266 | msgid "Force dig to only use IPv6 query transport" | ||
| 267 | msgstr "" | ||
| 268 | |||
| 269 | msgid "Machine name to lookup" | ||
| 270 | msgstr "Nom de machine à rechercher" | ||
| 271 | |||
| 272 | msgid "Record type to lookup (default: A)" | ||
| 273 | msgstr "Type d'enregistrement à rechercher (par défaut: A)" | ||
| 274 | |||
| 275 | msgid "" | ||
| 276 | "An address expected to be in the answer section. If not set, uses whatever" | ||
| 277 | msgstr "" | ||
| 278 | "Une adresse qui devrait se trouver dans la section réponce. Si omit, utilise" | ||
| 279 | |||
| 280 | msgid "was in -l" | ||
| 281 | msgstr "ce qui est passé au paramètre -l" | ||
| 282 | |||
| 283 | msgid "Pass STRING as argument(s) to dig" | ||
| 284 | msgstr "" | ||
| 285 | |||
| 286 | #, c-format | ||
| 287 | msgid "DISK %s: %s not found\n" | ||
| 288 | msgstr "DISK %s: %s non trouvé\n" | ||
| 289 | |||
| 290 | #, c-format | ||
| 291 | msgid "CRITICAL" | ||
| 292 | msgstr "CRITIQUE" | ||
| 293 | |||
| 294 | #, c-format | ||
| 295 | msgid "unit type %s not known\n" | ||
| 296 | msgstr "unité de type %s inconnue\n" | ||
| 297 | |||
| 298 | #, c-format | ||
| 299 | msgid "failed allocating storage for '%s'\n" | ||
| 300 | msgstr "Impossible d'allouer de l'espace pour '%s'\n" | ||
| 301 | |||
| 302 | #, c-format | ||
| 303 | msgid "UNKNOWN" | ||
| 304 | msgstr "INCONNU" | ||
| 305 | |||
| 306 | msgid "Must set a threshold value before using -p\n" | ||
| 307 | msgstr "" | ||
| 308 | |||
| 309 | msgid "Must set -E before selecting paths\n" | ||
| 310 | msgstr "" | ||
| 311 | |||
| 312 | msgid "Must set group value before selecting paths\n" | ||
| 313 | msgstr "" | ||
| 314 | |||
| 315 | msgid "" | ||
| 316 | "Paths need to be selected before using -i/-I. Use -A to select all paths " | ||
| 317 | "explicitly" | ||
| 318 | msgstr "" | ||
| 319 | |||
| 320 | msgid "Could not compile regular expression" | ||
| 321 | msgstr "Impossible de compiler l'expression rationnelle" | ||
| 322 | |||
| 323 | msgid "Must set a threshold value before using -r/-R\n" | ||
| 324 | msgstr "" | ||
| 325 | |||
| 326 | msgid "Regular expression did not match any path or disk" | ||
| 327 | msgstr "" | ||
| 328 | |||
| 329 | msgid "Unknown argument" | ||
| 330 | msgstr "Argument inconnu" | ||
| 331 | |||
| 332 | #, c-format | ||
| 333 | msgid " for %s\n" | ||
| 334 | msgstr " pour %s\n" | ||
| 335 | |||
| 336 | msgid "" | ||
| 337 | "This plugin checks the amount of used disk space on a mounted file system" | ||
| 338 | msgstr "Ce plugin vérifie la place utilisé sur un système de fichier monté" | ||
| 339 | |||
| 340 | msgid "" | ||
| 341 | "and generates an alert if free space is less than one of the threshold values" | ||
| 342 | msgstr "" | ||
| 343 | "et génère une alerte si la place disponible est plus petite qu'un des seuils " | ||
| 344 | "fourni" | ||
| 345 | |||
| 346 | msgid "Exit with WARNING status if less than INTEGER units of disk are free" | ||
| 347 | msgstr "" | ||
| 348 | "Sortir avec un résultat AVERTISSEMENT si moins de X unités de disques sont " | ||
| 349 | "libres" | ||
| 350 | |||
| 351 | msgid "Exit with WARNING status if less than PERCENT of disk space is free" | ||
| 352 | msgstr "" | ||
| 353 | "Sortir avec un résultat AVERTISSEMENT si moins de X pour-cent du disque est " | ||
| 354 | "libre" | ||
| 355 | |||
| 356 | msgid "Exit with CRITICAL status if less than INTEGER units of disk are free" | ||
| 357 | msgstr "" | ||
| 358 | "Sortir avec un résultat CRITIQUE si moins de X unités du disque sont libres" | ||
| 359 | |||
| 360 | #, fuzzy | ||
| 361 | msgid "Exit with CRITICAL status if less than PERCENT of disk space is free" | ||
| 362 | msgstr "" | ||
| 363 | "Sortir avec un résultat CRITIQUE si moins de X pour-cent du disque est libre" | ||
| 364 | |||
| 365 | msgid "Exit with WARNING status if less than PERCENT of inode space is free" | ||
| 366 | msgstr "" | ||
| 367 | "Sortir avec un résultat AVERTISSEMENT si moins de X pour-cent des inodes " | ||
| 368 | "sont libres" | ||
| 369 | |||
| 370 | msgid "Exit with CRITICAL status if less than PERCENT of inode space is free" | ||
| 371 | msgstr "" | ||
| 372 | "Sortir avec un résultat CRITIQUE si moins de X pour-cent des inodes sont " | ||
| 373 | "libres" | ||
| 374 | |||
| 375 | msgid "" | ||
| 376 | "Mount point or block device as emitted by the mount(8) command (may be " | ||
| 377 | "repeated)" | ||
| 378 | msgstr "" | ||
| 379 | |||
| 380 | msgid "Ignore device (only works if -p unspecified)" | ||
| 381 | msgstr "Ignorer le périphérique (marche seulement lorsque -p est utilisé)" | ||
| 382 | |||
| 383 | msgid "Clear thresholds" | ||
| 384 | msgstr "Effacer les seuils" | ||
| 385 | |||
| 386 | msgid "For paths or partitions specified with -p, only check for exact paths" | ||
| 387 | msgstr "" | ||
| 388 | |||
| 389 | msgid "Display only devices/mountpoints with errors" | ||
| 390 | msgstr "Afficher seulement les périphériques/point de montage avec des erreurs" | ||
| 391 | |||
| 392 | msgid "Don't account root-reserved blocks into freespace in perfdata" | ||
| 393 | msgstr "" | ||
| 394 | |||
| 395 | msgid "Display inode usage in perfdata" | ||
| 396 | msgstr "" | ||
| 397 | |||
| 398 | msgid "" | ||
| 399 | "Group paths. Thresholds apply to (free-)space of all partitions together" | ||
| 400 | msgstr "" | ||
| 401 | |||
| 402 | msgid "Same as '--units kB'" | ||
| 403 | msgstr "Pareil à '--units kB'" | ||
| 404 | |||
| 405 | msgid "Only check local filesystems" | ||
| 406 | msgstr "Vérifier seulement les systèmes de fichiers locaux" | ||
| 407 | |||
| 408 | msgid "" | ||
| 409 | "Only check local filesystems against thresholds. Yet call stat on remote " | ||
| 410 | "filesystems" | ||
| 411 | msgstr "" | ||
| 412 | |||
| 413 | msgid "to test if they are accessible (e.g. to detect Stale NFS Handles)" | ||
| 414 | msgstr "" | ||
| 415 | |||
| 416 | #, fuzzy | ||
| 417 | msgid "Display the (block) device instead of the mount point" | ||
| 418 | msgstr "Afficher le point de montage au lieu de la partition" | ||
| 419 | |||
| 420 | msgid "Same as '--units MB'" | ||
| 421 | msgstr "Pareil à '--units MB'" | ||
| 422 | |||
| 423 | msgid "Explicitly select all paths. This is equivalent to -R '.*'" | ||
| 424 | msgstr "" | ||
| 425 | |||
| 426 | msgid "" | ||
| 427 | "Case insensitive regular expression for path/partition (may be repeated)" | ||
| 428 | msgstr "" | ||
| 429 | "Expression rationnelle indépendante de la case pour un répertoire ou une " | ||
| 430 | "partition (peut être utilisé plusieurs fois)" | ||
| 431 | |||
| 432 | msgid "Regular expression for path or partition (may be repeated)" | ||
| 433 | msgstr "" | ||
| 434 | "Expression rationnelle pour un répertoire ou une partition (peut être " | ||
| 435 | "utilisé plusieurs fois)" | ||
| 436 | |||
| 437 | msgid "" | ||
| 438 | "Regular expression to ignore selected path/partition (case insensitive) (may " | ||
| 439 | "be repeated)" | ||
| 440 | msgstr "" | ||
| 441 | "Expression rationnelle pour ignorer un répertoire ou une partition (peut " | ||
| 442 | "être utilisé plusieurs fois)" | ||
| 443 | |||
| 444 | msgid "" | ||
| 445 | "Regular expression to ignore selected path or partition (may be repeated)" | ||
| 446 | msgstr "" | ||
| 447 | "Expression rationnelle pour ignorer un répertoire ou une partition (peut " | ||
| 448 | "être utilisé plusieurs fois)" | ||
| 449 | |||
| 450 | msgid "" | ||
| 451 | "Return OK if no filesystem matches, filesystem does not exist or is " | ||
| 452 | "inaccessible." | ||
| 453 | msgstr "" | ||
| 454 | |||
| 455 | msgid "(Provide this option before -p / -r / --ereg-path if used)" | ||
| 456 | msgstr "" | ||
| 457 | |||
| 458 | msgid "Choose bytes, kB, MB, GB, TB (default: MB)" | ||
| 459 | msgstr "Choisissez octets, kb, MB, GB, TB (par défaut: MB)" | ||
| 460 | |||
| 461 | msgid "Ignore all filesystems of indicated type (may be repeated)" | ||
| 462 | msgstr "" | ||
| 463 | "Ignorer tout les systèmes de fichiers qui correspondent au type indiqué " | ||
| 464 | "(peut être utilisé plusieurs fois)" | ||
| 465 | |||
| 466 | #, fuzzy | ||
| 467 | msgid "Check only filesystems of indicated type (may be repeated)" | ||
| 468 | msgstr "" | ||
| 469 | "Ignorer tout les systèmes de fichiers qui correspondent au type indiqué " | ||
| 470 | "(peut être utilisé plusieurs fois)" | ||
| 471 | |||
| 472 | msgid "Checks /tmp and /var at 10% and 5%, and / at 100MB and 50MB" | ||
| 473 | msgstr "Vérifie /tmp à 10% et /var à 5% et / à 100MB et 50MB" | ||
| 474 | |||
| 475 | msgid "" | ||
| 476 | "Checks all filesystems not matching -r at 100M and 50M. The fs matching the -" | ||
| 477 | "r regex" | ||
| 478 | msgstr "" | ||
| 479 | |||
| 480 | msgid "" | ||
| 481 | "are grouped which means the freespace thresholds are applied to all disks " | ||
| 482 | "together" | ||
| 483 | msgstr "" | ||
| 484 | |||
| 485 | msgid "" | ||
| 486 | "Checks /foo for 1000M/500M and /bar for 5/3%. All remaining volumes use " | ||
| 487 | "100M/50M" | ||
| 488 | msgstr "" | ||
| 489 | |||
| 490 | #, c-format | ||
| 491 | msgid "%s %s: %s\n" | ||
| 492 | msgstr "" | ||
| 493 | |||
| 494 | msgid "is not accessible" | ||
| 495 | msgstr "" | ||
| 496 | |||
| 497 | msgid "nslookup returned an error status" | ||
| 498 | msgstr "nslookup à retourné un code d'erreur" | ||
| 499 | |||
| 500 | msgid "Warning plugin error" | ||
| 501 | msgstr "Alerte erreur de plugin" | ||
| 502 | |||
| 503 | #, fuzzy, c-format | ||
| 504 | msgid "DNS CRITICAL - '%s' returned empty server string\n" | ||
| 505 | msgstr "DNS CRITIQUE - '%s' à retourné un nom d'hôte vide\n" | ||
| 506 | |||
| 507 | #, fuzzy, c-format | ||
| 508 | msgid "DNS CRITICAL - No response from DNS %s\n" | ||
| 509 | msgstr "Pas de réponse du DNS %s\n" | ||
| 510 | |||
| 511 | #, c-format | ||
| 512 | msgid "DNS CRITICAL - '%s' returned empty host name string\n" | ||
| 513 | msgstr "DNS CRITIQUE - '%s' à retourné un nom d'hôte vide\n" | ||
| 514 | |||
| 515 | msgid "Non-authoritative answer:" | ||
| 516 | msgstr "Réponse non autoritative:" | ||
| 517 | |||
| 518 | #, fuzzy, c-format | ||
| 519 | msgid "Domain '%s' was not found by the server\n" | ||
| 520 | msgstr "Le domaine %s n'a pas été trouvé par le serveur\n" | ||
| 521 | |||
| 522 | #, c-format | ||
| 523 | msgid "DNS CRITICAL - '%s' msg parsing exited with no address\n" | ||
| 524 | msgstr "DNS CRITIQUE - '%s' n'a pas retourné d'adresse\n" | ||
| 525 | |||
| 526 | #, c-format | ||
| 527 | msgid "expected '%s' but got '%s'" | ||
| 528 | msgstr "j'attendais '%s' mais j'ai reçu '%s'" | ||
| 529 | |||
| 530 | #, fuzzy, c-format | ||
| 531 | msgid "Domain '%s' was found by the server: '%s'\n" | ||
| 532 | msgstr "Le domaine %s n'a pas été trouvé par le serveur\n" | ||
| 533 | |||
| 534 | #, c-format | ||
| 535 | msgid "server %s is not authoritative for %s" | ||
| 536 | msgstr "serveur %s n'est pas autoritaire pour %s" | ||
| 537 | |||
| 538 | #, c-format | ||
| 539 | msgid "OK" | ||
| 540 | msgstr "OK" | ||
| 541 | |||
| 542 | #, c-format | ||
| 543 | msgid "WARNING" | ||
| 544 | msgstr "AVERTISSEMENT" | ||
| 545 | |||
| 546 | #, c-format | ||
| 547 | msgid "%.3f second response time" | ||
| 548 | msgid_plural "%.3f seconds response time" | ||
| 549 | msgstr[0] "%.3f secondes de temps de réponse " | ||
| 550 | msgstr[1] "%.3f secondes de temps de réponse " | ||
| 551 | |||
| 552 | #, c-format | ||
| 553 | msgid ". %s returns %s" | ||
| 554 | msgstr ". %s renvoie %s" | ||
| 555 | |||
| 556 | #, c-format | ||
| 557 | msgid "DNS WARNING - %s\n" | ||
| 558 | msgstr "DNS AVERTISSEMENT - %s\n" | ||
| 559 | |||
| 560 | msgid " Probably a non-existent host/domain" | ||
| 561 | msgstr " Probablement un hôte/domaine inexistant" | ||
| 562 | |||
| 563 | #, c-format | ||
| 564 | msgid "DNS CRITICAL - %s\n" | ||
| 565 | msgstr "DNS CRITIQUE - %s\n" | ||
| 566 | |||
| 567 | #, c-format | ||
| 568 | msgid "DNS UNKNOWN - %s\n" | ||
| 569 | msgstr "DNS INCONNU - %s\n" | ||
| 570 | |||
| 571 | msgid "Note: nslookup is deprecated and may be removed from future releases." | ||
| 572 | msgstr "" | ||
| 573 | "Note: nslookup est obsolète et pourra être retiré dans les prochaines " | ||
| 574 | "versions." | ||
| 575 | |||
| 576 | msgid "Consider using the `dig' or `host' programs instead. Run nslookup with" | ||
| 577 | msgstr "" | ||
| 578 | "Veuillez utiliser le programme 'dig' ou 'host' Ã la place. Faire fonctionner " | ||
| 579 | "nslookup avec" | ||
| 580 | |||
| 581 | msgid "the `-sil[ent]' option to prevent this message from appearing." | ||
| 582 | msgstr "L'option '-sil[ent]' empêche l'apparition de ce message." | ||
| 583 | |||
| 584 | #, c-format | ||
| 585 | msgid "No response from DNS %s\n" | ||
| 586 | msgstr "Pas de réponse du DNS %s\n" | ||
| 587 | |||
| 588 | #, c-format | ||
| 589 | msgid "DNS %s has no records\n" | ||
| 590 | msgstr "Le DNS %s n'a pas d'enregistrements\n" | ||
| 591 | |||
| 592 | #, c-format | ||
| 593 | msgid "Connection to DNS %s was refused\n" | ||
| 594 | msgstr "La connexion au DNS %s à été refusée\n" | ||
| 595 | |||
| 596 | #, c-format | ||
| 597 | msgid "Query was refused by DNS server at %s\n" | ||
| 598 | msgstr "La requête à été refusée par le serveur DNS %s\n" | ||
| 599 | |||
| 600 | #, c-format | ||
| 601 | msgid "No information returned by DNS server at %s\n" | ||
| 602 | msgstr "Pas d'information renvoyée par le serveur DNS %s\n" | ||
| 603 | |||
| 604 | msgid "Network is unreachable\n" | ||
| 605 | msgstr "Le réseau est inaccessible\n" | ||
| 606 | |||
| 607 | #, c-format | ||
| 608 | msgid "DNS failure for %s\n" | ||
| 609 | msgstr "DNS à échoué pour %s\n" | ||
| 610 | |||
| 611 | msgid "Input buffer overflow\n" | ||
| 612 | msgstr "Le tampon d'entrée a débordé\n" | ||
| 613 | |||
| 614 | msgid "" | ||
| 615 | "This plugin uses the nslookup program to obtain the IP address for the given " | ||
| 616 | "host/domain query." | ||
| 617 | msgstr "" | ||
| 618 | "Ce plugin utilise le programme nslookup pour obtenir l'adresse IP de l'hôte/" | ||
| 619 | "domaine à interroger." | ||
| 620 | |||
| 621 | msgid "An optional DNS server to use may be specified." | ||
| 622 | msgstr "Un serveur DNS à utiliser peut être indiqué." | ||
| 623 | |||
| 624 | msgid "" | ||
| 625 | "If no DNS server is specified, the default server(s) specified in /etc/" | ||
| 626 | "resolv.conf will be used." | ||
| 627 | msgstr "" | ||
| 628 | "Si aucun serveur DNS n'est spécifié, les serveurs spécifiés dans /etc/resolv." | ||
| 629 | "conf seront utilisé." | ||
| 630 | |||
| 631 | msgid "The name or address you want to query" | ||
| 632 | msgstr "Le nom ou l'adresse que vous voulez interroger" | ||
| 633 | |||
| 634 | msgid "Optional DNS server you want to use for the lookup" | ||
| 635 | msgstr "Serveur DNS que vous voulez utiliser pour la recherche" | ||
| 636 | |||
| 637 | #, fuzzy | ||
| 638 | msgid "" | ||
| 639 | "Optional IP-ADDRESS/CIDR you expect the DNS server to return. HOST must end" | ||
| 640 | msgstr "" | ||
| 641 | "Adresse IP que le serveur DNS doit retourner. Les hôtes doivent se terminer " | ||
| 642 | |||
| 643 | #, fuzzy | ||
| 644 | msgid "" | ||
| 645 | "with a dot (.). This option can be repeated multiple times (Returns OK if any" | ||
| 646 | msgstr "avec un point (.). Cette option peut être répétée (Retourne OK si une" | ||
| 647 | |||
| 648 | msgid "value matches)." | ||
| 649 | msgstr "" | ||
| 650 | |||
| 651 | msgid "" | ||
| 652 | "Expect the DNS server to return NXDOMAIN (i.e. the domain was not found)" | ||
| 653 | msgstr "" | ||
| 654 | |||
| 655 | msgid "Cannot be used together with -a" | ||
| 656 | msgstr "" | ||
| 657 | |||
| 658 | msgid "Optionally expect the DNS server to be authoritative for the lookup" | ||
| 659 | msgstr "Serveur DNS qui doit normalement être autoritaire pour la recherche" | ||
| 660 | |||
| 661 | msgid "Return warning if elapsed time exceeds value. Default off" | ||
| 662 | msgstr "" | ||
| 663 | "Renvoie une alerte si le temps écoulé dépasse la valeur indiquée. Désactivé " | ||
| 664 | "par défaut" | ||
| 665 | |||
| 666 | msgid "Return critical if elapsed time exceeds value. Default off" | ||
| 667 | msgstr "" | ||
| 668 | "Renvoie critique si le temps utilisé dépasse la valeur indiquée. Désactivé " | ||
| 669 | "par défaut" | ||
| 670 | |||
| 671 | msgid "" | ||
| 672 | "Return critical if the list of expected addresses does not match all " | ||
| 673 | "addresses" | ||
| 674 | msgstr "" | ||
| 675 | |||
| 676 | msgid "returned. Default off" | ||
| 677 | msgstr "" | ||
| 678 | |||
| 679 | msgid "Arguments to check_dummy must be an integer" | ||
| 680 | msgstr "Les arguments pour check_dummy doivent être des entiers" | ||
| 681 | |||
| 682 | #, c-format | ||
| 683 | msgid "Status %d is not a supported error state\n" | ||
| 684 | msgstr "Le résultat %d n'est pas un résultat supporté\n" | ||
| 685 | |||
| 686 | msgid "" | ||
| 687 | "This plugin will simply return the state corresponding to the numeric value" | ||
| 688 | msgstr "" | ||
| 689 | "Ce plugin renverra simplement l'état correspondant à la valeur numérique" | ||
| 690 | |||
| 691 | msgid "of the <state> argument with optional text" | ||
| 692 | msgstr "du paramètre <state> avec un texte optionnel" | ||
| 693 | |||
| 694 | #, c-format | ||
| 695 | msgid "Could not open pipe: %s\n" | ||
| 696 | msgstr "Impossible d'ouvrir le pipe: %s\n" | ||
| 697 | |||
| 698 | #, c-format | ||
| 699 | msgid "Could not open stderr for %s\n" | ||
| 700 | msgstr "Impossible d'ouvrir la sortie d'erreur standard pour %s\n" | ||
| 701 | |||
| 702 | #, fuzzy | ||
| 703 | msgid "FPING UNKNOWN - IP address not found\n" | ||
| 704 | msgstr "PING INCONNU - Hôte non trouvé (%s)\n" | ||
| 705 | |||
| 706 | msgid "FPING UNKNOWN - invalid commandline argument\n" | ||
| 707 | msgstr "" | ||
| 708 | |||
| 709 | #, fuzzy | ||
| 710 | msgid "FPING UNKNOWN - failed system call\n" | ||
| 711 | msgstr "PING INCONNU - Hôte non trouvé (%s)\n" | ||
| 712 | |||
| 713 | #, fuzzy, c-format | ||
| 714 | msgid "FPING %s - %s (rta=%f ms)|%s\n" | ||
| 715 | msgstr "FPING %s - %s (perte=%.0f%% )|%s\n" | ||
| 716 | |||
| 717 | #, c-format | ||
| 718 | msgid "FPING UNKNOWN - %s not found\n" | ||
| 719 | msgstr "PING INCONNU - Hôte non trouvé (%s)\n" | ||
| 720 | |||
| 721 | #, c-format | ||
| 722 | msgid "FPING CRITICAL - %s is unreachable\n" | ||
| 723 | msgstr "PING CRITIQUE - Hôte inaccessible (%s)\n" | ||
| 724 | |||
| 725 | #, fuzzy, c-format | ||
| 726 | msgid "FPING UNKNOWN - %s parameter error\n" | ||
| 727 | msgstr "PING INCONNU - Hôte non trouvé (%s)\n" | ||
| 728 | |||
| 729 | #, c-format | ||
| 730 | msgid "FPING CRITICAL - %s is down\n" | ||
| 731 | msgstr "FPING CRITIQUE - %s est en panne\n" | ||
| 732 | |||
| 733 | #, c-format | ||
| 734 | msgid "FPING %s - %s (loss=%.0f%%, rta=%f ms)|%s %s\n" | ||
| 735 | msgstr "FPING %s - %s (perte=%.0f%%, rta=%f ms)|%s %s\n" | ||
| 736 | |||
| 737 | #, c-format | ||
| 738 | msgid "FPING %s - %s (loss=%.0f%% )|%s\n" | ||
| 739 | msgstr "FPING %s - %s (perte=%.0f%% )|%s\n" | ||
| 740 | |||
| 741 | msgid "Invalid hostname/address" | ||
| 742 | msgstr "Adresse/Nom d'hôte invalide" | ||
| 743 | |||
| 744 | msgid "IPv6 support not available\n" | ||
| 745 | msgstr "Support IPv6 non disponible\n" | ||
| 746 | |||
| 747 | msgid "Packet size must be a positive integer" | ||
| 748 | msgstr "La taille du paquet doit être un entier positif" | ||
| 749 | |||
| 750 | msgid "Packet count must be a positive integer" | ||
| 751 | msgstr "Le nombre de paquets doit être un entier positif" | ||
| 752 | |||
| 753 | msgid "Target timeout must be a positive integer" | ||
| 754 | msgstr "Le seuil d'avertissement doit être un entier positif" | ||
| 755 | |||
| 756 | msgid "Interval must be a positive integer" | ||
| 757 | msgstr "Le délai d'attente doit être un entier positif" | ||
| 758 | |||
| 759 | msgid "Hostname was not supplied" | ||
| 760 | msgstr "Le nom de l'hôte n'a pas été spécifié" | ||
| 761 | |||
| 762 | #, c-format | ||
| 763 | msgid "%s: Only one threshold may be packet loss (%s)\n" | ||
| 764 | msgstr "" | ||
| 765 | "%s: Seulement un seuil peut être utilisé pour les pertes de paquets (%s)\n" | ||
| 766 | |||
| 767 | #, c-format | ||
| 768 | msgid "%s: Only one threshold must be packet loss (%s)\n" | ||
| 769 | msgstr "" | ||
| 770 | "%s: Seulement un seuil doit être utilisé pour les pertes de paquets (%s)\n" | ||
| 771 | |||
| 772 | msgid "" | ||
| 773 | "This plugin will use the fping command to ping the specified host for a fast " | ||
| 774 | "check" | ||
| 775 | msgstr "" | ||
| 776 | "Ce plugin va utiliser la commande fping pour pinger l'hôte de manière rapide." | ||
| 777 | |||
| 778 | msgid "Note that it is necessary to set the suid flag on fping." | ||
| 779 | msgstr "" | ||
| 780 | "Veuillez noter qu'il est nécessaire de mettre le bit suid sur le programme " | ||
| 781 | "fping." | ||
| 782 | |||
| 783 | msgid "" | ||
| 784 | "name or IP Address of host to ping (IP Address bypasses name lookup, " | ||
| 785 | "reducing system load)" | ||
| 786 | msgstr "" | ||
| 787 | "nom ou adresse IP des hôtes à pinger (l'indication d'un adresse IP évite une " | ||
| 788 | "recherche sur le nom, ce qui réduit la charge système)" | ||
| 789 | |||
| 790 | msgid "warning threshold pair" | ||
| 791 | msgstr "Valeurs pour le seuil d'avertissement" | ||
| 792 | |||
| 793 | msgid "critical threshold pair" | ||
| 794 | msgstr "Valeurs pour le seuil critique" | ||
| 795 | |||
| 796 | msgid "Return OK after first successful reply" | ||
| 797 | msgstr "" | ||
| 798 | |||
| 799 | msgid "size of ICMP packet" | ||
| 800 | msgstr "taille du paquet ICMP" | ||
| 801 | |||
| 802 | msgid "number of ICMP packets to send" | ||
| 803 | msgstr "nombre de paquets ICMP Ã envoyer" | ||
| 804 | |||
| 805 | msgid "Target timeout (ms)" | ||
| 806 | msgstr "" | ||
| 807 | |||
| 808 | msgid "Interval (ms) between sending packets" | ||
| 809 | msgstr "" | ||
| 810 | |||
| 811 | msgid "name or IP Address of sourceip" | ||
| 812 | msgstr "" | ||
| 813 | |||
| 814 | msgid "source interface name" | ||
| 815 | msgstr "" | ||
| 816 | |||
| 817 | #, c-format | ||
| 818 | msgid "" | ||
| 819 | "THRESHOLD is <rta>,<pl>%% where <rta> is the round trip average travel time " | ||
| 820 | "(ms)" | ||
| 821 | msgstr "" | ||
| 822 | "Le seuil est <rta>,<pl>%% ou <rta> est le temps moyen pour l'aller retour " | ||
| 823 | "(ms)" | ||
| 824 | |||
| 825 | msgid "" | ||
| 826 | "which triggers a WARNING or CRITICAL state, and <pl> is the percentage of" | ||
| 827 | msgstr "" | ||
| 828 | "qui déclenche résultat AVERTISSEMENT ou CRITIQUE, et <pl> est le pourcentage " | ||
| 829 | "de" | ||
| 830 | |||
| 831 | msgid "packet loss to trigger an alarm state." | ||
| 832 | msgstr "paquets perdu pour déclencher une alarme." | ||
| 833 | |||
| 834 | msgid "IPv4 is used by default. Specify -6 to use IPv6." | ||
| 835 | msgstr "" | ||
| 836 | |||
| 837 | #, c-format | ||
| 838 | msgid "CRITICAL - Host type parameter incorrect!\n" | ||
| 839 | msgstr "CRITIQUE - Argument de type hôte incorrect!\n" | ||
| 840 | |||
| 841 | #, c-format | ||
| 842 | msgid "CRITICAL - Host not found\n" | ||
| 843 | msgstr "CRITIQUE - Hôte non trouvé\n" | ||
| 844 | |||
| 845 | #, c-format | ||
| 846 | msgid "CRITICAL - Game server down or unavailable\n" | ||
| 847 | msgstr "CRITIQUE - Serveur de jeux en panne ou non disponible\n" | ||
| 848 | |||
| 849 | #, c-format | ||
| 850 | msgid "CRITICAL - Game server timeout\n" | ||
| 851 | msgstr "CRITIQUE - Temps d'attente pour le serveur de jeux dépassé\n" | ||
| 852 | |||
| 853 | #, c-format | ||
| 854 | msgid "This plugin tests game server connections with the specified host." | ||
| 855 | msgstr "Le plugin teste la connexion au serveur de jeux avec l'hôte spécifié." | ||
| 856 | |||
| 857 | msgid "Optional port of which to connect" | ||
| 858 | msgstr "" | ||
| 859 | |||
| 860 | msgid "Field number in raw qstat output that contains game name" | ||
| 861 | msgstr "" | ||
| 862 | |||
| 863 | msgid "Field number in raw qstat output that contains map name" | ||
| 864 | msgstr "" | ||
| 865 | |||
| 866 | msgid "Field number in raw qstat output that contains ping time" | ||
| 867 | msgstr "" | ||
| 868 | |||
| 869 | msgid "" | ||
| 870 | "This plugin uses the 'qstat' command, the popular game server status query " | ||
| 871 | "tool." | ||
| 872 | msgstr "" | ||
| 873 | "Ce plugin utilise la commande 'qstat', un programme répandu pour questioner " | ||
| 874 | "les serveurs de jeux." | ||
| 875 | |||
| 876 | msgid "" | ||
| 877 | "If you don't have the package installed, you will need to download it from" | ||
| 878 | msgstr "" | ||
| 879 | "Si vous n'avez pas le programme installé, vous devrez le télécharger depuis" | ||
| 880 | |||
| 881 | #, fuzzy | ||
| 882 | msgid "https://github.com/multiplay/qstat before you can use this plugin." | ||
| 883 | msgstr "" | ||
| 884 | "http://www.activesw.com/people/steve/qstat.html avant de pouvoir utiliser ce " | ||
| 885 | "plugin." | ||
| 886 | |||
| 887 | msgid "Paper Jam" | ||
| 888 | msgstr "Bourrage Papier" | ||
| 889 | |||
| 890 | msgid "Out of Paper" | ||
| 891 | msgstr "Plus de Papier" | ||
| 892 | |||
| 893 | msgid "Printer Offline" | ||
| 894 | msgstr "Imprimante hors ligne" | ||
| 895 | |||
| 896 | msgid "Peripheral Error" | ||
| 897 | msgstr "Erreur du périphérique" | ||
| 898 | |||
| 899 | msgid "Intervention Required" | ||
| 900 | msgstr "Intervention Requise" | ||
| 901 | |||
| 902 | msgid "Toner Low" | ||
| 903 | msgstr "Toner Faible" | ||
| 904 | |||
| 905 | msgid "Insufficient Memory" | ||
| 906 | msgstr "Mémoire Insuffisante" | ||
| 907 | |||
| 908 | msgid "A Door is Open" | ||
| 909 | msgstr "Une porte est ouverte" | ||
| 910 | |||
| 911 | msgid "Output Tray is Full" | ||
| 912 | msgstr "Le bac de sortie est plein" | ||
| 913 | |||
| 914 | msgid "Data too Slow for Engine" | ||
| 915 | msgstr "Le données arrivent trop lentement pour l'imprimante" | ||
| 916 | |||
| 917 | msgid "Unknown Paper Error" | ||
| 918 | msgstr "Erreur de papier inconnue" | ||
| 919 | |||
| 920 | #, c-format | ||
| 921 | msgid "Printer ok - (%s)\n" | ||
| 922 | msgstr "Imprimante ok - (%s)\n" | ||
| 923 | |||
| 924 | #, fuzzy | ||
| 925 | msgid "Port must be a positive short integer" | ||
| 926 | msgstr "Le numéro du port doit être un entier positif" | ||
| 927 | |||
| 928 | msgid "This plugin tests the STATUS of an HP printer with a JetDirect card." | ||
| 929 | msgstr "Ce plugin teste l'état d'une imprimante HP avec une carte JetDirect." | ||
| 930 | |||
| 931 | msgid "Net-snmp must be installed on the computer running the plugin." | ||
| 932 | msgstr "Net-snmp doit être installé sur l'ordinateur qui exécute le plugin." | ||
| 933 | |||
| 934 | msgid "The SNMP community name " | ||
| 935 | msgstr "Le nom de la communauté SNMP " | ||
| 936 | |||
| 937 | #, c-format | ||
| 938 | msgid "(default=%s)" | ||
| 939 | msgstr "(défaut=%s)" | ||
| 940 | |||
| 941 | #, fuzzy | ||
| 942 | msgid "Specify the port to check " | ||
| 943 | msgstr "Nom de l'hôte à vérifier" | ||
| 944 | |||
| 945 | #, fuzzy | ||
| 946 | msgid "Disable paper check " | ||
| 947 | msgstr "Variable a vérifier" | ||
| 948 | |||
| 949 | msgid "file does not exist or is not readable" | ||
| 950 | msgstr "" | ||
| 951 | |||
| 952 | msgid "Invalid certificate expiration period" | ||
| 953 | msgstr "Période d'expiration du certificat invalide" | ||
| 954 | |||
| 955 | msgid "" | ||
| 956 | "Invalid option - Valid SSL/TLS versions: 2, 3, 1, 1.1, 1.2 (with optional " | ||
| 957 | "'+' suffix)" | ||
| 958 | msgstr "" | ||
| 959 | |||
| 960 | msgid "Invalid option - SSL is not available" | ||
| 961 | msgstr "Option invalide - SSL n'est pas disponible" | ||
| 962 | |||
| 963 | msgid "Invalid max_redirs count" | ||
| 964 | msgstr "" | ||
| 965 | |||
| 966 | msgid "Invalid onredirect option" | ||
| 967 | msgstr "" | ||
| 968 | |||
| 969 | #, c-format | ||
| 970 | msgid "option f:%d \n" | ||
| 971 | msgstr "option f:%d \n" | ||
| 972 | |||
| 973 | msgid "Invalid port number" | ||
| 974 | msgstr "Numéro de port invalide" | ||
| 975 | |||
| 976 | #, c-format | ||
| 977 | msgid "Could Not Compile Regular Expression: %s" | ||
| 978 | msgstr "Impossible de compiler l'expression rationnelle: %s" | ||
| 979 | |||
| 980 | msgid "IPv6 support not available" | ||
| 981 | msgstr "Support IPv6 non disponible" | ||
| 982 | |||
| 983 | msgid "You must specify a server address or host name" | ||
| 984 | msgstr "Vous devez spécifier une adresse ou un nom d'hôte" | ||
| 985 | |||
| 986 | msgid "" | ||
| 987 | "If you use a client certificate you must also specify a private key file" | ||
| 988 | msgstr "" | ||
| 989 | |||
| 990 | msgid "HTTP UNKNOWN - Memory allocation error\n" | ||
| 991 | msgstr "HTTP INCONNU - Impossible d'allouer la mémoire\n" | ||
| 992 | |||
| 993 | #, c-format | ||
| 994 | msgid "%sServer date unknown, " | ||
| 995 | msgstr "%sDate du serveur inconnue, " | ||
| 996 | |||
| 997 | #, c-format | ||
| 998 | msgid "%sDocument modification date unknown, " | ||
| 999 | msgstr "%sDate de modification du document inconnue, " | ||
| 1000 | |||
| 1001 | #, c-format | ||
| 1002 | msgid "%sServer date \"%100s\" unparsable, " | ||
| 1003 | msgstr "%sDate du serveur \"%100s\" illisible, " | ||
| 1004 | |||
| 1005 | #, c-format | ||
| 1006 | msgid "%sDocument date \"%100s\" unparsable, " | ||
| 1007 | msgstr "%sDate du document \"%100s\" illisible, " | ||
| 1008 | |||
| 1009 | #, c-format | ||
| 1010 | msgid "%sDocument is %d seconds in the future, " | ||
| 1011 | msgstr "%sLa date du document est %d secondes dans le futur, " | ||
| 1012 | |||
| 1013 | #, c-format | ||
| 1014 | msgid "%sLast modified %.1f days ago, " | ||
| 1015 | msgstr "%sDernière modification %.1f jours auparavant, " | ||
| 1016 | |||
| 1017 | #, c-format | ||
| 1018 | msgid "%sLast modified %d:%02d:%02d ago, " | ||
| 1019 | msgstr "%sDernière modification %d:%02d:%02d auparavant, " | ||
| 1020 | |||
| 1021 | msgid "HTTP CRITICAL - Unable to open TCP socket\n" | ||
| 1022 | msgstr "HTTP CRITIQUE - Impossible d'ouvrir un socket TCP\n" | ||
| 1023 | |||
| 1024 | #, fuzzy | ||
| 1025 | msgid "HTTP UNKNOWN - Could not allocate memory for full_page\n" | ||
| 1026 | msgstr "HTTP INCONNU - Impossible d'allouer une adresse\n" | ||
| 1027 | |||
| 1028 | msgid "HTTP CRITICAL - Error on receive\n" | ||
| 1029 | msgstr "HTTP CRITIQUE - Erreur dans la réception\n" | ||
| 1030 | |||
| 1031 | msgid "HTTP CRITICAL - No data received from host\n" | ||
| 1032 | msgstr "HTTP CRITIQUE - Pas de données reçues de l'hôte\n" | ||
| 1033 | |||
| 1034 | #, c-format | ||
| 1035 | msgid "Invalid HTTP response received from host: %s\n" | ||
| 1036 | msgstr "Réponse HTTP reçue de l'hôte invalide: %s\n" | ||
| 1037 | |||
| 1038 | #, c-format | ||
| 1039 | msgid "Invalid HTTP response received from host on port %d: %s\n" | ||
| 1040 | msgstr "Réponse HTTP reçue de l'hôte sur le port %d invalide: %s\n" | ||
| 1041 | |||
| 1042 | #, c-format | ||
| 1043 | msgid "" | ||
| 1044 | "%s\n" | ||
| 1045 | "%s" | ||
| 1046 | msgstr "" | ||
| 1047 | |||
| 1048 | #, c-format | ||
| 1049 | msgid "Status line output matched \"%s\" - " | ||
| 1050 | msgstr "La ligne d'état correspond à \"%s\" - " | ||
| 1051 | |||
| 1052 | #, c-format | ||
| 1053 | msgid "HTTP CRITICAL: Invalid Status Line (%s)\n" | ||
| 1054 | msgstr "HTTP CRITIQUE: Ligne d'état non valide (%s)\n" | ||
| 1055 | |||
| 1056 | #, c-format | ||
| 1057 | msgid "HTTP CRITICAL: Invalid Status (%s)\n" | ||
| 1058 | msgstr "HTTP CRITIQUE: Etat Invalide (%s)\n" | ||
| 1059 | |||
| 1060 | #, c-format | ||
| 1061 | msgid "%s - " | ||
| 1062 | msgstr "" | ||
| 1063 | |||
| 1064 | #, fuzzy, c-format | ||
| 1065 | msgid "%sheader '%s' not found on '%s://%s:%d%s', " | ||
| 1066 | msgstr "%schaîne non trouvée, " | ||
| 1067 | |||
| 1068 | #, fuzzy, c-format | ||
| 1069 | msgid "%sstring '%s' not found on '%s://%s:%d%s', " | ||
| 1070 | msgstr "%schaîne non trouvée, " | ||
| 1071 | |||
| 1072 | #, c-format | ||
| 1073 | msgid "%spattern not found, " | ||
| 1074 | msgstr "%sexpression non trouvée, " | ||
| 1075 | |||
| 1076 | #, c-format | ||
| 1077 | msgid "%spattern found, " | ||
| 1078 | msgstr "%sexpression trouvée, " | ||
| 1079 | |||
| 1080 | #, c-format | ||
| 1081 | msgid "%sExecute Error: %s, " | ||
| 1082 | msgstr "%sErreur d'exécution: %s, " | ||
| 1083 | |||
| 1084 | #, c-format | ||
| 1085 | msgid "%spage size %d too large, " | ||
| 1086 | msgstr "%sla taille de la page est trop grande (%d), " | ||
| 1087 | |||
| 1088 | #, c-format | ||
| 1089 | msgid "%spage size %d too small, " | ||
| 1090 | msgstr "%sla taille de la page est trop petite (%d), " | ||
| 1091 | |||
| 1092 | #, fuzzy, c-format | ||
| 1093 | msgid "%s - %d bytes in %.3f second response time %s|%s %s %s %s %s %s %s" | ||
| 1094 | msgstr "%s - %d octets en %.3f secondes de temps de réponse %s|%s %s" | ||
| 1095 | |||
| 1096 | #, c-format | ||
| 1097 | msgid "%s - %d bytes in %.3f second response time %s|%s %s" | ||
| 1098 | msgstr "%s - %d octets en %.3f secondes de temps de réponse %s|%s %s" | ||
| 1099 | |||
| 1100 | msgid "HTTP UNKNOWN - Could not allocate addr\n" | ||
| 1101 | msgstr "HTTP INCONNU - Impossible d'allouer une adresse\n" | ||
| 1102 | |||
| 1103 | msgid "HTTP UNKNOWN - Could not allocate URL\n" | ||
| 1104 | msgstr "HTTP INCONNU - Impossible d'allouer l'URL\n" | ||
| 1105 | |||
| 1106 | #, c-format | ||
| 1107 | msgid "HTTP UNKNOWN - Could not find redirect location - %s%s\n" | ||
| 1108 | msgstr "" | ||
| 1109 | "HTTP INCONNU - Impossible de trouver l'endroit de la redirection - %s%s\n" | ||
| 1110 | |||
| 1111 | #, c-format | ||
| 1112 | msgid "HTTP UNKNOWN - Empty redirect location%s\n" | ||
| 1113 | msgstr "HTTP INCONNU - endroit de redirection vide%s\n" | ||
| 1114 | |||
| 1115 | #, c-format | ||
| 1116 | msgid "HTTP UNKNOWN - Could not parse redirect location - %s%s\n" | ||
| 1117 | msgstr "" | ||
| 1118 | "HTTP INCONNU - Impossible de définir l'endroit de la redirection - %s%s\n" | ||
| 1119 | |||
| 1120 | #, c-format | ||
| 1121 | msgid "HTTP WARNING - maximum redirection depth %d exceeded - %s://%s:%d%s%s\n" | ||
| 1122 | msgstr "" | ||
| 1123 | "HTTP AVERTISSEMENT - le niveau maximum de redirection %d à été dépassé - " | ||
| 1124 | "%s://%s:%d%s%s\n" | ||
| 1125 | |||
| 1126 | #, fuzzy, c-format | ||
| 1127 | msgid "HTTP CRITICAL - redirection creates an infinite loop - %s://%s:%d%s%s\n" | ||
| 1128 | msgstr "" | ||
| 1129 | "HTTP AVERTISSEMENT - la redirection crée une boucle infinie - %s://%s:" | ||
| 1130 | "%d%s%s\n" | ||
| 1131 | |||
| 1132 | #, c-format | ||
| 1133 | msgid "HTTP UNKNOWN - Redirection to port above %d - %s://%s:%d%s%s\n" | ||
| 1134 | msgstr "HTTP INCONNU - Redirection à un port supérieur à %d - %s://%s:%d%s%s\n" | ||
| 1135 | |||
| 1136 | #, c-format | ||
| 1137 | msgid "Redirection to %s://%s:%d%s\n" | ||
| 1138 | msgstr "Redirection vers %s://%s:%d%s\n" | ||
| 1139 | |||
| 1140 | msgid "This plugin tests the HTTP service on the specified host. It can test" | ||
| 1141 | msgstr "" | ||
| 1142 | "Ce plugin teste le service HTTP sur l'hôte spécifié. Il peut tester les" | ||
| 1143 | |||
| 1144 | msgid "normal (http) and secure (https) servers, follow redirects, search for" | ||
| 1145 | msgstr "" | ||
| 1146 | "serveurs normaux (http) et sécurisés (https), suivre les redirections, " | ||
| 1147 | "rechercher des" | ||
| 1148 | |||
| 1149 | msgid "strings and regular expressions, check connection times, and report on" | ||
| 1150 | msgstr "" | ||
| 1151 | "chaînes de caractères et expressions rationnelles, vérifier le temps de " | ||
| 1152 | "réponse" | ||
| 1153 | |||
| 1154 | msgid "certificate expiration times." | ||
| 1155 | msgstr "et rapporter la date d'expiration du certificat." | ||
| 1156 | |||
| 1157 | #, c-format | ||
| 1158 | msgid "In the first form, make an HTTP request." | ||
| 1159 | msgstr "" | ||
| 1160 | |||
| 1161 | #, c-format | ||
| 1162 | msgid "" | ||
| 1163 | "In the second form, connect to the server and check the TLS certificate." | ||
| 1164 | msgstr "" | ||
| 1165 | |||
| 1166 | #, c-format | ||
| 1167 | msgid "NOTE: One or both of -H and -I must be specified" | ||
| 1168 | msgstr "NOTE: les paramètres -H et -I peuvent être spécifiés" | ||
| 1169 | |||
| 1170 | msgid "Host name argument for servers using host headers (virtual host)" | ||
| 1171 | msgstr "" | ||
| 1172 | |||
| 1173 | msgid "Append a port to include it in the header (eg: example.com:5000)" | ||
| 1174 | msgstr "" | ||
| 1175 | |||
| 1176 | msgid "" | ||
| 1177 | "IP address or name (use numeric address if possible to bypass DNS lookup)." | ||
| 1178 | msgstr "" | ||
| 1179 | |||
| 1180 | msgid "Port number (default: " | ||
| 1181 | msgstr "Numéro du port (défaut: " | ||
| 1182 | |||
| 1183 | msgid "" | ||
| 1184 | "Connect via SSL. Port defaults to 443. VERSION is optional, and prevents" | ||
| 1185 | msgstr "" | ||
| 1186 | |||
| 1187 | msgid "auto-negotiation (2 = SSLv2, 3 = SSLv3, 1 = TLSv1, 1.1 = TLSv1.1," | ||
| 1188 | msgstr "" | ||
| 1189 | |||
| 1190 | msgid "1.2 = TLSv1.2). With a '+' suffix, newer versions are also accepted." | ||
| 1191 | msgstr "" | ||
| 1192 | |||
| 1193 | msgid "Enable SSL/TLS hostname extension support (SNI)" | ||
| 1194 | msgstr "" | ||
| 1195 | |||
| 1196 | msgid "" | ||
| 1197 | "Minimum number of days a certificate has to be valid. Port defaults to 443" | ||
| 1198 | msgstr "" | ||
| 1199 | "Nombre de jours minimum pour que le certificat soit valide. Port par défaut " | ||
| 1200 | "443" | ||
| 1201 | |||
| 1202 | msgid "" | ||
| 1203 | "(when this option is used the URL is not checked by default. You can use" | ||
| 1204 | msgstr "" | ||
| 1205 | |||
| 1206 | msgid " --continue-after-certificate to override this behavior)" | ||
| 1207 | msgstr "" | ||
| 1208 | |||
| 1209 | msgid "" | ||
| 1210 | "Allows the HTTP check to continue after performing the certificate check." | ||
| 1211 | msgstr "" | ||
| 1212 | |||
| 1213 | msgid "Does nothing unless -C is used." | ||
| 1214 | msgstr "" | ||
| 1215 | |||
| 1216 | msgid "Name of file that contains the client certificate (PEM format)" | ||
| 1217 | msgstr "" | ||
| 1218 | |||
| 1219 | msgid "to be used in establishing the SSL session" | ||
| 1220 | msgstr "" | ||
| 1221 | |||
| 1222 | msgid "Name of file containing the private key (PEM format)" | ||
| 1223 | msgstr "" | ||
| 1224 | |||
| 1225 | msgid "matching the client certificate" | ||
| 1226 | msgstr "" | ||
| 1227 | |||
| 1228 | msgid "Comma-delimited list of strings, at least one of them is expected in" | ||
| 1229 | msgstr "" | ||
| 1230 | "Liste the chaines de charactères séparées par des virgules, au moins une " | ||
| 1231 | "d'elles" | ||
| 1232 | |||
| 1233 | msgid "the first (status) line of the server response (default: " | ||
| 1234 | msgstr "est attendue dans la première ligne de réponse du serveur (défaut: " | ||
| 1235 | |||
| 1236 | msgid "" | ||
| 1237 | "If specified skips all other status line logic (ex: 3xx, 4xx, 5xx processing)" | ||
| 1238 | msgstr "" | ||
| 1239 | "Si spécifié, surpasse toute autre logique de status (ex: 3xx, 4xx, 5xx)" | ||
| 1240 | |||
| 1241 | #, fuzzy | ||
| 1242 | msgid "String to expect in the response headers" | ||
| 1243 | msgstr "Chaîne de caractères à attendre en réponse" | ||
| 1244 | |||
| 1245 | msgid "String to expect in the content" | ||
| 1246 | msgstr "Chaîne de caractère attendue dans le contenu" | ||
| 1247 | |||
| 1248 | msgid "URL to GET or POST (default: /)" | ||
| 1249 | msgstr "URL pour le GET ou le POST (défaut: /)" | ||
| 1250 | |||
| 1251 | msgid "URL encoded http POST data" | ||
| 1252 | msgstr "" | ||
| 1253 | |||
| 1254 | msgid "Set HTTP method." | ||
| 1255 | msgstr "" | ||
| 1256 | |||
| 1257 | msgid "Don't wait for document body: stop reading after headers." | ||
| 1258 | msgstr "" | ||
| 1259 | "Ne pas attendre pour le corps du document: arrêter de lire après les entêtes" | ||
| 1260 | |||
| 1261 | msgid "(Note that this still does an HTTP GET or POST, not a HEAD.)" | ||
| 1262 | msgstr "(Veuillez noter qu'un HTTP GET ou POST est effectué, pas un HEAD.)" | ||
| 1263 | |||
| 1264 | msgid "Warn if document is more than SECONDS old. the number can also be of" | ||
| 1265 | msgstr "" | ||
| 1266 | |||
| 1267 | msgid "the form \"10m\" for minutes, \"10h\" for hours, or \"10d\" for days." | ||
| 1268 | msgstr "" | ||
| 1269 | |||
| 1270 | msgid "specify Content-Type header media type when POSTing\n" | ||
| 1271 | msgstr "" | ||
| 1272 | |||
| 1273 | msgid "Allow regex to span newlines (must precede -r or -R)" | ||
| 1274 | msgstr "" | ||
| 1275 | |||
| 1276 | msgid "Search page for regex STRING" | ||
| 1277 | msgstr "" | ||
| 1278 | |||
| 1279 | msgid "Search page for case-insensitive regex STRING" | ||
| 1280 | msgstr "" | ||
| 1281 | |||
| 1282 | msgid "Return CRITICAL if found, OK if not\n" | ||
| 1283 | msgstr "" | ||
| 1284 | |||
| 1285 | msgid "Username:password on sites with basic authentication" | ||
| 1286 | msgstr "" | ||
| 1287 | |||
| 1288 | msgid "Username:password on proxy-servers with basic authentication" | ||
| 1289 | msgstr "" | ||
| 1290 | |||
| 1291 | msgid "String to be sent in http header as \"User Agent\"" | ||
| 1292 | msgstr "" | ||
| 1293 | |||
| 1294 | msgid "" | ||
| 1295 | "Any other tags to be sent in http header. Use multiple times for additional " | ||
| 1296 | "headers" | ||
| 1297 | msgstr "" | ||
| 1298 | |||
| 1299 | msgid "Print additional performance data" | ||
| 1300 | msgstr "" | ||
| 1301 | |||
| 1302 | msgid "Print body content below status line" | ||
| 1303 | msgstr "" | ||
| 1304 | |||
| 1305 | msgid "Wrap output in HTML link (obsoleted by urlize)" | ||
| 1306 | msgstr "" | ||
| 1307 | |||
| 1308 | msgid "How to handle redirected pages. sticky is like follow but stick to the" | ||
| 1309 | msgstr "" | ||
| 1310 | |||
| 1311 | msgid "specified IP address. stickyport also ensures port stays the same." | ||
| 1312 | msgstr "" | ||
| 1313 | |||
| 1314 | #, fuzzy | ||
| 1315 | msgid "Maximal number of redirects (default: " | ||
| 1316 | msgstr "PROCS - nombre de processus (défaut)" | ||
| 1317 | |||
| 1318 | msgid "Minimum page size required (bytes) : Maximum page size required (bytes)" | ||
| 1319 | msgstr "" | ||
| 1320 | |||
| 1321 | msgid "This plugin will attempt to open an HTTP connection with the host." | ||
| 1322 | msgstr "Ce plugin va essayer d'ouvrir un connexion SMTP avec l'hôte." | ||
| 1323 | |||
| 1324 | msgid "" | ||
| 1325 | "Successful connects return STATE_OK, refusals and timeouts return " | ||
| 1326 | "STATE_CRITICAL" | ||
| 1327 | msgstr "" | ||
| 1328 | |||
| 1329 | msgid "" | ||
| 1330 | "other errors return STATE_UNKNOWN. Successful connects, but incorrect " | ||
| 1331 | "response" | ||
| 1332 | msgstr "" | ||
| 1333 | |||
| 1334 | msgid "" | ||
| 1335 | "messages from the host result in STATE_WARNING return values. If you are" | ||
| 1336 | msgstr "" | ||
| 1337 | |||
| 1338 | msgid "" | ||
| 1339 | "checking a virtual server that uses 'host headers' you must supply the FQDN" | ||
| 1340 | msgstr "" | ||
| 1341 | |||
| 1342 | msgid "(fully qualified domain name) as the [host_name] argument." | ||
| 1343 | msgstr "" | ||
| 1344 | |||
| 1345 | msgid "This plugin can also check whether an SSL enabled web server is able to" | ||
| 1346 | msgstr "" | ||
| 1347 | |||
| 1348 | msgid "serve content (optionally within a specified time) or whether the X509 " | ||
| 1349 | msgstr "" | ||
| 1350 | |||
| 1351 | msgid "certificate is still valid for the specified number of days." | ||
| 1352 | msgstr "" | ||
| 1353 | |||
| 1354 | #, fuzzy | ||
| 1355 | msgid "Please note that this plugin does not check if the presented server" | ||
| 1356 | msgstr "Ce plugin vérifie le service ntp sur l'hôte" | ||
| 1357 | |||
| 1358 | msgid "certificate matches the hostname of the server, or if the certificate" | ||
| 1359 | msgstr "" | ||
| 1360 | |||
| 1361 | msgid "has a valid chain of trust to one of the locally installed CAs." | ||
| 1362 | msgstr "" | ||
| 1363 | |||
| 1364 | msgid "" | ||
| 1365 | "When the 'www.verisign.com' server returns its content within 5 seconds," | ||
| 1366 | msgstr "" | ||
| 1367 | |||
| 1368 | msgid "" | ||
| 1369 | "a STATE_OK will be returned. When the server returns its content but exceeds" | ||
| 1370 | msgstr "" | ||
| 1371 | |||
| 1372 | msgid "" | ||
| 1373 | "the 5-second threshold, a STATE_WARNING will be returned. When an error " | ||
| 1374 | "occurs," | ||
| 1375 | msgstr "" | ||
| 1376 | |||
| 1377 | msgid "a STATE_CRITICAL will be returned." | ||
| 1378 | msgstr "" | ||
| 1379 | |||
| 1380 | msgid "" | ||
| 1381 | "When the certificate of 'www.verisign.com' is valid for more than 14 days," | ||
| 1382 | msgstr "" | ||
| 1383 | |||
| 1384 | msgid "" | ||
| 1385 | "a STATE_OK is returned. When the certificate is still valid, but for less " | ||
| 1386 | "than" | ||
| 1387 | msgstr "" | ||
| 1388 | |||
| 1389 | msgid "" | ||
| 1390 | "14 days, a STATE_WARNING is returned. A STATE_CRITICAL will be returned when" | ||
| 1391 | msgstr "" | ||
| 1392 | |||
| 1393 | msgid "the certificate is expired." | ||
| 1394 | msgstr "le certificat est expiré." | ||
| 1395 | |||
| 1396 | msgid "" | ||
| 1397 | "When the certificate of 'www.verisign.com' is valid for more than 30 days," | ||
| 1398 | msgstr "" | ||
| 1399 | |||
| 1400 | msgid "30 days, but more than 14 days, a STATE_WARNING is returned." | ||
| 1401 | msgstr "" | ||
| 1402 | |||
| 1403 | msgid "" | ||
| 1404 | "A STATE_CRITICAL will be returned when certificate expires in less than 14 " | ||
| 1405 | "days" | ||
| 1406 | msgstr "" | ||
| 1407 | |||
| 1408 | msgid "" | ||
| 1409 | "check_http -I 192.168.100.35 -p 80 -u https://www.verisign.com/ -S -j " | ||
| 1410 | "CONNECT -H www.verisign.com " | ||
| 1411 | msgstr "" | ||
| 1412 | |||
| 1413 | msgid "" | ||
| 1414 | "all these options are needed: -I <proxy> -p <proxy-port> -u <check-url> -" | ||
| 1415 | "S(sl) -j CONNECT -H <webserver>" | ||
| 1416 | msgstr "" | ||
| 1417 | |||
| 1418 | msgid "" | ||
| 1419 | "a STATE_CRITICAL will be returned. By adding a colon to the method you can " | ||
| 1420 | "set the method used" | ||
| 1421 | msgstr "" | ||
| 1422 | |||
| 1423 | msgid "inside the proxied connection: -j CONNECT:POST" | ||
| 1424 | msgstr "" | ||
| 1425 | |||
| 1426 | #, c-format | ||
| 1427 | msgid "Could not connect to the server at port %i\n" | ||
| 1428 | msgstr "Impossible de se connecter au serveur port %i\n" | ||
| 1429 | |||
| 1430 | #, c-format | ||
| 1431 | msgid "Could not set protocol version %d\n" | ||
| 1432 | msgstr "Impossible d'utiliser le protocole version %d\n" | ||
| 1433 | |||
| 1434 | #, c-format | ||
| 1435 | msgid "Could not init TLS at port %i!\n" | ||
| 1436 | msgstr "Impossible d'initialiser TLS sur le port %i!\n" | ||
| 1437 | |||
| 1438 | #, c-format | ||
| 1439 | msgid "TLS not supported by the libraries!\n" | ||
| 1440 | msgstr "TLS n'est pas supporté!\n" | ||
| 1441 | |||
| 1442 | #, c-format | ||
| 1443 | msgid "Could not init startTLS at port %i!\n" | ||
| 1444 | msgstr "Impossible d'initialiser startTLS sur le port %i!\n" | ||
| 1445 | |||
| 1446 | #, c-format | ||
| 1447 | msgid "startTLS not supported by the library, needs LDAPv3!\n" | ||
| 1448 | msgstr "" | ||
| 1449 | "startTLS n'est pas supporté par la librairie LDAP, j'ai besoin de LDAPv3!\n" | ||
| 1450 | |||
| 1451 | #, c-format | ||
| 1452 | msgid "Could not bind to the LDAP server\n" | ||
| 1453 | msgstr "Impossible de se connecter au serveur LDAP\n" | ||
| 1454 | |||
| 1455 | #, c-format | ||
| 1456 | msgid "Could not search/find objectclasses in %s\n" | ||
| 1457 | msgstr "Impossible de chercher/trouver les objectclasses dans %s\n" | ||
| 1458 | |||
| 1459 | #, fuzzy, c-format | ||
| 1460 | msgid "LDAP %s - found %d entries in %.3f seconds|%s %s\n" | ||
| 1461 | msgstr "%s - %d octets en %.3f secondes de temps de réponse %s|%s %s" | ||
| 1462 | |||
| 1463 | #, c-format | ||
| 1464 | msgid "LDAP %s - %.3f seconds response time|%s\n" | ||
| 1465 | msgstr "LDAP %s - %.3f secondes de temps de réponse|%s\n" | ||
| 1466 | |||
| 1467 | #, c-format | ||
| 1468 | msgid "%s cannot be combined with %s" | ||
| 1469 | msgstr "" | ||
| 1470 | |||
| 1471 | msgid "Please specify the host name\n" | ||
| 1472 | msgstr "Veuillez spécifier le nom de l'hôte\n" | ||
| 1473 | |||
| 1474 | msgid "Please specify the LDAP base\n" | ||
| 1475 | msgstr "Veuillez spécifier la base LDAP\n" | ||
| 1476 | |||
| 1477 | msgid "ldap attribute to search (default: \"(objectclass=*)\"" | ||
| 1478 | msgstr "" | ||
| 1479 | |||
| 1480 | msgid "ldap base (eg. ou=my unit, o=my org, c=at" | ||
| 1481 | msgstr "" | ||
| 1482 | |||
| 1483 | msgid "ldap bind DN (if required)" | ||
| 1484 | msgstr "" | ||
| 1485 | |||
| 1486 | msgid "" | ||
| 1487 | "ldap password (if required, or set the password through environment variable " | ||
| 1488 | "'LDAP_PASSWORD')" | ||
| 1489 | msgstr "" | ||
| 1490 | |||
| 1491 | msgid "use starttls mechanism introduced in protocol version 3" | ||
| 1492 | msgstr "utiliser le fonctionnement starttls du protocole version 3" | ||
| 1493 | |||
| 1494 | msgid "use ldaps (ldap v2 ssl method). this also sets the default port to" | ||
| 1495 | msgstr "" | ||
| 1496 | |||
| 1497 | msgid "use ldap protocol version 2" | ||
| 1498 | msgstr "utiliser le protocole ldap version 2" | ||
| 1499 | |||
| 1500 | msgid "use ldap protocol version 3" | ||
| 1501 | msgstr "utiliser le protocole ldap version 3" | ||
| 1502 | |||
| 1503 | msgid "default protocol version:" | ||
| 1504 | msgstr "version du protocole par défaut:" | ||
| 1505 | |||
| 1506 | #, fuzzy | ||
| 1507 | msgid "Number of found entries to result in warning status" | ||
| 1508 | msgstr "Décalage résultant en un avertissement (secondes)" | ||
| 1509 | |||
| 1510 | #, fuzzy | ||
| 1511 | msgid "Number of found entries to result in critical status" | ||
| 1512 | msgstr "Décalage résultant en un état critique (secondes)" | ||
| 1513 | |||
| 1514 | msgid "If this plugin is called via 'check_ldaps', method 'STARTTLS' will be" | ||
| 1515 | msgstr "" | ||
| 1516 | |||
| 1517 | #, c-format | ||
| 1518 | msgid "" | ||
| 1519 | " implied (using default port %i) unless --port=636 is specified. In that " | ||
| 1520 | "case\n" | ||
| 1521 | msgstr "" | ||
| 1522 | |||
| 1523 | msgid "'SSL on connect' will be used no matter how the plugin was called." | ||
| 1524 | msgstr "" | ||
| 1525 | |||
| 1526 | msgid "" | ||
| 1527 | "This detection is deprecated, please use 'check_ldap' with the '--starttls' " | ||
| 1528 | "or '--ssl' flags" | ||
| 1529 | msgstr "" | ||
| 1530 | |||
| 1531 | msgid "to define the behaviour explicitly instead." | ||
| 1532 | msgstr "" | ||
| 1533 | |||
| 1534 | msgid "The parameters --warn-entries and --crit-entries are optional." | ||
| 1535 | msgstr "" | ||
| 1536 | |||
| 1537 | msgid "Warning threshold must be float or float triplet!\n" | ||
| 1538 | msgstr "Le seuil d'alerte doit être un nombre à virgule flottante!\n" | ||
| 1539 | |||
| 1540 | #, c-format | ||
| 1541 | msgid "Error opening %s\n" | ||
| 1542 | msgstr "Erreur à l'ouverture de %s\n" | ||
| 1543 | |||
| 1544 | #, fuzzy, c-format | ||
| 1545 | msgid "could not parse load from uptime %s: %d\n" | ||
| 1546 | msgstr "Lecture des arguments impossible\n" | ||
| 1547 | |||
| 1548 | #, c-format | ||
| 1549 | msgid "Error code %d returned in %s\n" | ||
| 1550 | msgstr "Le code erreur %d à été retourné par %s\n" | ||
| 1551 | |||
| 1552 | #, c-format | ||
| 1553 | msgid "Error in getloadavg()\n" | ||
| 1554 | msgstr "Erreur dans la fonction getloadavg()\n" | ||
| 1555 | |||
| 1556 | #, c-format | ||
| 1557 | msgid "Error processing %s\n" | ||
| 1558 | msgstr "Erreur lors de l'utilisation de %s\n" | ||
| 1559 | |||
| 1560 | #, c-format | ||
| 1561 | msgid "load average: %.2f, %.2f, %.2f" | ||
| 1562 | msgstr "Charge moyenne: %.2f, %.2f, %.2f" | ||
| 1563 | |||
| 1564 | #, c-format | ||
| 1565 | msgid "Critical threshold for %d-minute load average is not specified\n" | ||
| 1566 | msgstr "" | ||
| 1567 | "Le seuil critique pour la charge système après %d minutes n'est pas " | ||
| 1568 | "spécifié\n" | ||
| 1569 | |||
| 1570 | #, c-format | ||
| 1571 | msgid "Warning threshold for %d-minute load average is not specified\n" | ||
| 1572 | msgstr "" | ||
| 1573 | "Le seuil d'avertissement pour la charge système après %d minutes n'est pas " | ||
| 1574 | "spécifié\n" | ||
| 1575 | |||
| 1576 | #, c-format | ||
| 1577 | msgid "" | ||
| 1578 | "Parameter inconsistency: %d-minute \"warning load\" is greater than " | ||
| 1579 | "\"critical load\"\n" | ||
| 1580 | msgstr "" | ||
| 1581 | "Arguments Incorrects: %d-minute \"alerte charge système\" est plus grand que " | ||
| 1582 | "\"alerte critique charge système\"\n" | ||
| 1583 | |||
| 1584 | #, c-format | ||
| 1585 | msgid "This plugin tests the current system load average." | ||
| 1586 | msgstr "Ce plugin teste la charge système actuelle." | ||
| 1587 | |||
| 1588 | msgid "Exit with WARNING status if load average exceeds WLOADn" | ||
| 1589 | msgstr "" | ||
| 1590 | "Sortir avec un résultat AVERTISSEMENT si la charge moyenne dépasse WLOAD" | ||
| 1591 | |||
| 1592 | msgid "Exit with CRITICAL status if load average exceed CLOADn" | ||
| 1593 | msgstr "Sortir avec un résultat CRITIQUE si la charge moyenne excède CLOAD" | ||
| 1594 | |||
| 1595 | msgid "the load average format is the same used by \"uptime\" and \"w\"" | ||
| 1596 | msgstr "" | ||
| 1597 | |||
| 1598 | msgid "Divide the load averages by the number of CPUs (when possible)" | ||
| 1599 | msgstr "" | ||
| 1600 | |||
| 1601 | msgid "Number of processes to show when printing the top consuming processes." | ||
| 1602 | msgstr "" | ||
| 1603 | |||
| 1604 | msgid "NUMBER_OF_PROCS=0 disables this feature. Default value is 0" | ||
| 1605 | msgstr "" | ||
| 1606 | |||
| 1607 | #, c-format | ||
| 1608 | msgid "'%s' exited with non-zero status.\n" | ||
| 1609 | msgstr "" | ||
| 1610 | |||
| 1611 | #, c-format | ||
| 1612 | msgid "some error occurred getting procs list.\n" | ||
| 1613 | msgstr "" | ||
| 1614 | |||
| 1615 | msgid "Could not parse arguments\n" | ||
| 1616 | msgstr "Lecture des arguments impossible\n" | ||
| 1617 | |||
| 1618 | #, c-format | ||
| 1619 | msgid "Unable to open MRTG log file\n" | ||
| 1620 | msgstr "Impossible d'ouvrir le fichier de log de MRTG\n" | ||
| 1621 | |||
| 1622 | #, c-format | ||
| 1623 | msgid "Unable to process MRTG log file\n" | ||
| 1624 | msgstr "Impossible de traiter le fichier de log de MRTG\n" | ||
| 1625 | |||
| 1626 | #, c-format | ||
| 1627 | msgid "MRTG data has expired (%d minutes old)\n" | ||
| 1628 | msgstr "Les données de MRTG on expirées (vieilles de %d minutes)\n" | ||
| 1629 | |||
| 1630 | msgid "Avg" | ||
| 1631 | msgstr "Moyenne" | ||
| 1632 | |||
| 1633 | msgid "Max" | ||
| 1634 | msgstr "Max" | ||
| 1635 | |||
| 1636 | msgid "Invalid variable number" | ||
| 1637 | msgstr "Numéro de la variable invalide" | ||
| 1638 | |||
| 1639 | #, c-format | ||
| 1640 | msgid "" | ||
| 1641 | "%s is not a valid expiration time\n" | ||
| 1642 | "Use '%s -h' for additional help\n" | ||
| 1643 | msgstr "" | ||
| 1644 | "%s n'est pas un temps d'expiration valide\n" | ||
| 1645 | "Utilisez '%s -h' pour de l'aide supplémentaire\n" | ||
| 1646 | |||
| 1647 | msgid "Invalid variable number\n" | ||
| 1648 | msgstr "Numéro de la variable invalide\n" | ||
| 1649 | |||
| 1650 | msgid "You must supply the variable number" | ||
| 1651 | msgstr "Vous devez fournir le numéro de la variable" | ||
| 1652 | |||
| 1653 | msgid "" | ||
| 1654 | "This plugin will check either the average or maximum value of one of the" | ||
| 1655 | msgstr "Ce plugin va vérifier la moyenne ou le maximum d'une " | ||
| 1656 | |||
| 1657 | msgid "two variables recorded in an MRTG log file." | ||
| 1658 | msgstr "deux variables du fichier de log de MRTG." | ||
| 1659 | |||
| 1660 | msgid "The MRTG log file containing the data you want to monitor" | ||
| 1661 | msgstr "" | ||
| 1662 | |||
| 1663 | msgid "Minutes before MRTG data is considered to be too old" | ||
| 1664 | msgstr "" | ||
| 1665 | |||
| 1666 | msgid "Should we check average or maximum values?" | ||
| 1667 | msgstr "" | ||
| 1668 | |||
| 1669 | msgid "Which variable set should we inspect? (1 or 2)" | ||
| 1670 | msgstr "" | ||
| 1671 | |||
| 1672 | msgid "Threshold value for data to result in WARNING status" | ||
| 1673 | msgstr "" | ||
| 1674 | |||
| 1675 | msgid "Threshold value for data to result in CRITICAL status" | ||
| 1676 | msgstr "" | ||
| 1677 | |||
| 1678 | msgid "Type label for data (Examples: Conns, \"Processor Load\", In, Out)" | ||
| 1679 | msgstr "" | ||
| 1680 | |||
| 1681 | msgid "Option units label for data (Example: Packets/Sec, Errors/Sec," | ||
| 1682 | msgstr "" | ||
| 1683 | |||
| 1684 | #, c-format | ||
| 1685 | msgid "\"Bytes Per Second\", \"%% Utilization\")" | ||
| 1686 | msgstr "" | ||
| 1687 | |||
| 1688 | msgid "" | ||
| 1689 | "If the value exceeds the <vwl> threshold, a WARNING status is returned. If" | ||
| 1690 | msgstr "" | ||
| 1691 | |||
| 1692 | msgid "" | ||
| 1693 | "the value exceeds the <vcl> threshold, a CRITICAL status is returned. If" | ||
| 1694 | msgstr "" | ||
| 1695 | |||
| 1696 | msgid "the data in the log file is older than <expire_minutes> old, a WARNING" | ||
| 1697 | msgstr "" | ||
| 1698 | |||
| 1699 | msgid "status is returned and a warning message is printed." | ||
| 1700 | msgstr "" | ||
| 1701 | |||
| 1702 | msgid "" | ||
| 1703 | "This plugin is useful for monitoring MRTG data that does not correspond to" | ||
| 1704 | msgstr "" | ||
| 1705 | |||
| 1706 | msgid "" | ||
| 1707 | "bandwidth usage. (Use the check_mrtgtraf plugin for monitoring bandwidth)." | ||
| 1708 | msgstr "" | ||
| 1709 | |||
| 1710 | msgid "" | ||
| 1711 | "It can be used to monitor any kind of data that MRTG is monitoring - errors," | ||
| 1712 | msgstr "" | ||
| 1713 | |||
| 1714 | msgid "" | ||
| 1715 | "packets/sec, etc. I use MRTG in conjunction with the Novell NLM that allows" | ||
| 1716 | msgstr "" | ||
| 1717 | |||
| 1718 | msgid "" | ||
| 1719 | "me to track processor utilization, user connections, drive space, etc and" | ||
| 1720 | msgstr "" | ||
| 1721 | |||
| 1722 | msgid "this plugin works well for monitoring that kind of data as well." | ||
| 1723 | msgstr "" | ||
| 1724 | |||
| 1725 | msgid "" | ||
| 1726 | "- This plugin only monitors one of the two variables stored in the MRTG log" | ||
| 1727 | msgstr "" | ||
| 1728 | "- Ce plugin vérifie seulement une ou deux variables écrites dans un fichier " | ||
| 1729 | "de log MRTG" | ||
| 1730 | |||
| 1731 | msgid "file. If you want to monitor both values you will have to define two" | ||
| 1732 | msgstr "" | ||
| 1733 | |||
| 1734 | msgid "commands with different values for the <variable> argument. Of course," | ||
| 1735 | msgstr "" | ||
| 1736 | |||
| 1737 | msgid "you can always hack the code to make this plugin work for you..." | ||
| 1738 | msgstr "" | ||
| 1739 | |||
| 1740 | msgid "" | ||
| 1741 | "- MRTG stands for the Multi Router Traffic Grapher. It can be downloaded " | ||
| 1742 | "from" | ||
| 1743 | msgstr "" | ||
| 1744 | |||
| 1745 | msgid "Unable to open MRTG log file" | ||
| 1746 | msgstr "Impossible d'ouvrir le fichier de log de MRTG" | ||
| 1747 | |||
| 1748 | msgid "Unable to process MRTG log file" | ||
| 1749 | msgstr "Impossible de traiter le fichier de log de MRTG" | ||
| 1750 | |||
| 1751 | #, fuzzy, c-format | ||
| 1752 | msgid "%s. In = %0.1f %s/s, %s. Out = %0.1f %s/s|%s %s\n" | ||
| 1753 | msgstr "%s. Entrée = %0.1f %s, %s. Sortie = %0.1f %s|%s %s\n" | ||
| 1754 | |||
| 1755 | #, c-format | ||
| 1756 | msgid "Traffic %s - %s\n" | ||
| 1757 | msgstr "Trafic %s - %s\n" | ||
| 1758 | |||
| 1759 | msgid "" | ||
| 1760 | "This plugin will check the incoming/outgoing transfer rates of a router," | ||
| 1761 | msgstr "" | ||
| 1762 | "Ce plugin va vérifier le taux de transfert en entrée/sortie d'un routeur," | ||
| 1763 | |||
| 1764 | msgid "switch, etc recorded in an MRTG log. If the newest log entry is older" | ||
| 1765 | msgstr "" | ||
| 1766 | |||
| 1767 | msgid "than <expire_minutes>, a WARNING status is returned. If either the" | ||
| 1768 | msgstr "" | ||
| 1769 | |||
| 1770 | msgid "incoming or outgoing rates exceed the <icl> or <ocl> thresholds (in" | ||
| 1771 | msgstr "" | ||
| 1772 | |||
| 1773 | msgid "Bytes/sec), a CRITICAL status results. If either of the rates exceed" | ||
| 1774 | msgstr "" | ||
| 1775 | |||
| 1776 | msgid "the <iwl> or <owl> thresholds (in Bytes/sec), a WARNING status results." | ||
| 1777 | msgstr "" | ||
| 1778 | |||
| 1779 | msgid "File to read log from" | ||
| 1780 | msgstr "" | ||
| 1781 | |||
| 1782 | msgid "Minutes after which log expires" | ||
| 1783 | msgstr "" | ||
| 1784 | |||
| 1785 | msgid "Test average or maximum" | ||
| 1786 | msgstr "" | ||
| 1787 | |||
| 1788 | msgid "Warning threshold pair <incoming>,<outgoing>" | ||
| 1789 | msgstr "Paire de seuils d'avertissement <entrant>,<sortant>" | ||
| 1790 | |||
| 1791 | msgid "Critical threshold pair <incoming>,<outgoing>" | ||
| 1792 | msgstr "Paire de seuils critique <entrant>,<sortant>" | ||
| 1793 | |||
| 1794 | msgid "" | ||
| 1795 | "- MRTG stands for Multi Router Traffic Grapher. It can be downloaded from" | ||
| 1796 | msgstr "" | ||
| 1797 | |||
| 1798 | msgid "- While MRTG can monitor things other than traffic rates, this" | ||
| 1799 | msgstr "" | ||
| 1800 | |||
| 1801 | msgid " plugin probably won't work with much else without modification." | ||
| 1802 | msgstr "" | ||
| 1803 | |||
| 1804 | msgid "- The calculated i/o rates are a little off from what MRTG actually" | ||
| 1805 | msgstr "" | ||
| 1806 | |||
| 1807 | msgid " reports. I'm not sure why this is right now, but will look into it" | ||
| 1808 | msgstr "" | ||
| 1809 | |||
| 1810 | msgid " for future enhancements of this plugin." | ||
| 1811 | msgstr "" | ||
| 1812 | |||
| 1813 | #, c-format | ||
| 1814 | msgid "Usage" | ||
| 1815 | msgstr "Utilisation" | ||
| 1816 | |||
| 1817 | #, fuzzy, c-format | ||
| 1818 | msgid "status store_result error: %s\n" | ||
| 1819 | msgstr "erreur slave store_result: %s\n" | ||
| 1820 | |||
| 1821 | #, c-format | ||
| 1822 | msgid "slave query error: %s\n" | ||
| 1823 | msgstr "erreur de requête de l'esclave: %s\n" | ||
| 1824 | |||
| 1825 | #, c-format | ||
| 1826 | msgid "slave store_result error: %s\n" | ||
| 1827 | msgstr "erreur slave store_result: %s\n" | ||
| 1828 | |||
| 1829 | msgid "No slaves defined" | ||
| 1830 | msgstr "Pas d'esclave spécifié" | ||
| 1831 | |||
| 1832 | #, c-format | ||
| 1833 | msgid "slave fetch row error: %s\n" | ||
| 1834 | msgstr "erreur esclave lecture d'une ligne: %s\n" | ||
| 1835 | |||
| 1836 | #, c-format | ||
| 1837 | msgid "Slave running: %s" | ||
| 1838 | msgstr "L'esclave fonctionne: %s" | ||
| 1839 | |||
| 1840 | msgid "This program tests connections to a MySQL server" | ||
| 1841 | msgstr "Ce plugin teste une connexion vers un serveur MySQL" | ||
| 1842 | |||
| 1843 | msgid "Ignore authentication failure and check for mysql connectivity only" | ||
| 1844 | msgstr "" | ||
| 1845 | |||
| 1846 | msgid "Use the specified socket (has no effect if -H is used)" | ||
| 1847 | msgstr "" | ||
| 1848 | |||
| 1849 | msgid "Check database with indicated name" | ||
| 1850 | msgstr "" | ||
| 1851 | |||
| 1852 | msgid "Read from the specified client options file" | ||
| 1853 | msgstr "" | ||
| 1854 | |||
| 1855 | msgid "Use a client options group" | ||
| 1856 | msgstr "" | ||
| 1857 | |||
| 1858 | msgid "Connect using the indicated username" | ||
| 1859 | msgstr "" | ||
| 1860 | |||
| 1861 | msgid "Use the indicated password to authenticate the connection" | ||
| 1862 | msgstr "" | ||
| 1863 | |||
| 1864 | msgid "IMPORTANT: THIS FORM OF AUTHENTICATION IS NOT SECURE!!!" | ||
| 1865 | msgstr "" | ||
| 1866 | |||
| 1867 | msgid "Your clear-text password could be visible as a process table entry" | ||
| 1868 | msgstr "" | ||
| 1869 | |||
| 1870 | msgid "Check if the slave thread is running properly." | ||
| 1871 | msgstr "" | ||
| 1872 | |||
| 1873 | msgid "Exit with WARNING status if slave server is more than INTEGER seconds" | ||
| 1874 | msgstr "" | ||
| 1875 | "Sortir avec un résultat AVERTISSEMENT si le serveur esclave est plus de X " | ||
| 1876 | |||
| 1877 | msgid "behind master" | ||
| 1878 | msgstr "secondes en retard sur le maître" | ||
| 1879 | |||
| 1880 | msgid "Exit with CRITICAL status if slave server is more then INTEGER seconds" | ||
| 1881 | msgstr "Sortir avec un résultat CRITIQUE si le serveur esclave est plus de X " | ||
| 1882 | |||
| 1883 | msgid "Use ssl encryption" | ||
| 1884 | msgstr "" | ||
| 1885 | |||
| 1886 | msgid "Path to CA signing the cert" | ||
| 1887 | msgstr "" | ||
| 1888 | |||
| 1889 | msgid "Path to SSL certificate" | ||
| 1890 | msgstr "" | ||
| 1891 | |||
| 1892 | msgid "Path to private SSL key" | ||
| 1893 | msgstr "" | ||
| 1894 | |||
| 1895 | msgid "Path to CA directory" | ||
| 1896 | msgstr "" | ||
| 1897 | |||
| 1898 | msgid "List of valid SSL ciphers" | ||
| 1899 | msgstr "" | ||
| 1900 | |||
| 1901 | msgid "" | ||
| 1902 | "There are no required arguments. By default, the local database is checked" | ||
| 1903 | msgstr "" | ||
| 1904 | "Il n'y a pas d'arguments nécessaires. Par défaut la base de donnée locale " | ||
| 1905 | "est testée" | ||
| 1906 | |||
| 1907 | msgid "" | ||
| 1908 | "using the default unix socket. You can force TCP on localhost by using an" | ||
| 1909 | msgstr "" | ||
| 1910 | |||
| 1911 | msgid "IP address or FQDN ('localhost' will use the socket as well)." | ||
| 1912 | msgstr "" | ||
| 1913 | |||
| 1914 | msgid "You must specify -p with an empty string to force an empty password," | ||
| 1915 | msgstr "" | ||
| 1916 | |||
| 1917 | msgid "overriding any my.cnf settings." | ||
| 1918 | msgstr "" | ||
| 1919 | |||
| 1920 | msgid "Cannot open status log for reading!" | ||
| 1921 | msgstr "Impossible d'ouvrir le fichier status log en lecture!" | ||
| 1922 | |||
| 1923 | #, c-format | ||
| 1924 | msgid "Found process: %s %s\n" | ||
| 1925 | msgstr "Processus trouvé: %s %s\n" | ||
| 1926 | |||
| 1927 | msgid "Could not locate a running Nagios process!" | ||
| 1928 | msgstr "Impossible de trouver un processus Nagios actif!" | ||
| 1929 | |||
| 1930 | msgid "Cannot parse Nagios log file for valid time" | ||
| 1931 | msgstr "" | ||
| 1932 | "Impossible de trouver une date/heure valide dans le fichier de log de Nagios" | ||
| 1933 | |||
| 1934 | #, c-format | ||
| 1935 | msgid "%d process" | ||
| 1936 | msgid_plural "%d processes" | ||
| 1937 | msgstr[0] "%d processus" | ||
| 1938 | msgstr[1] "%d processus" | ||
| 1939 | |||
| 1940 | #, c-format | ||
| 1941 | msgid "status log updated %d second ago" | ||
| 1942 | msgid_plural "status log updated %d seconds ago" | ||
| 1943 | msgstr[0] "status log mis à jour %d secondes auparavant" | ||
| 1944 | msgstr[1] "status log mis à jour %d secondes auparavant" | ||
| 1945 | |||
| 1946 | msgid "Expiration time must be an integer (seconds)\n" | ||
| 1947 | msgstr "Le délai d'expiration doit être un entier (en secondes)\n" | ||
| 1948 | |||
| 1949 | #, fuzzy | ||
| 1950 | msgid "Timeout must be an integer (seconds)\n" | ||
| 1951 | msgstr "Le délai d'expiration doit être un entier (en secondes)\n" | ||
| 1952 | |||
| 1953 | msgid "You must provide the status_log\n" | ||
| 1954 | msgstr "Vous devez fournir le status_log\n" | ||
| 1955 | |||
| 1956 | msgid "You must provide a process string\n" | ||
| 1957 | msgstr "Vous devez fournir un nom de processus\n" | ||
| 1958 | |||
| 1959 | msgid "" | ||
| 1960 | "This plugin checks the status of the Nagios process on the local machine" | ||
| 1961 | msgstr "Ce plugin vérifie l'état du processus Nagios sur la machine locale." | ||
| 1962 | |||
| 1963 | msgid "" | ||
| 1964 | "The plugin will check to make sure the Nagios status log is no older than" | ||
| 1965 | msgstr "Ce plugin vérifie que le status log de Nagios n'est pas plus vieux que" | ||
| 1966 | |||
| 1967 | msgid "the number of minutes specified by the expires option." | ||
| 1968 | msgstr "le nombre de minutes spécifies par l'option expire." | ||
| 1969 | |||
| 1970 | msgid "" | ||
| 1971 | "It also checks the process table for a process matching the command argument." | ||
| 1972 | msgstr "" | ||
| 1973 | |||
| 1974 | msgid "Name of the log file to check" | ||
| 1975 | msgstr "Nom du fichier log à vérifier" | ||
| 1976 | |||
| 1977 | msgid "Minutes aging after which logfile is considered stale" | ||
| 1978 | msgstr "" | ||
| 1979 | |||
| 1980 | msgid "Substring to search for in process arguments" | ||
| 1981 | msgstr "" | ||
| 1982 | |||
| 1983 | msgid "Timeout for the plugin in seconds" | ||
| 1984 | msgstr "" | ||
| 1985 | |||
| 1986 | #, c-format | ||
| 1987 | msgid "Wrong client version - running: %s, required: %s" | ||
| 1988 | msgstr "Mauvaise version du client utilisée: %s, nécessaire: %s" | ||
| 1989 | |||
| 1990 | msgid "missing -l parameters" | ||
| 1991 | msgstr "Arguments -l manquants" | ||
| 1992 | |||
| 1993 | msgid "wrong -l parameter." | ||
| 1994 | msgstr "Arguments -l erronés." | ||
| 1995 | |||
| 1996 | msgid "CPU Load" | ||
| 1997 | msgstr "Charge CPU" | ||
| 1998 | |||
| 1999 | #, c-format | ||
| 2000 | msgid " %lu%% (%lu min average)" | ||
| 2001 | msgstr " %lu%% (%lu moyenne minimale)" | ||
| 2002 | |||
| 2003 | #, c-format | ||
| 2004 | msgid " '%lu min avg Load'=%lu%%;%lu;%lu;0;100" | ||
| 2005 | msgstr " '%lu Charge moyenne minimale'=%lu%%;%lu;%lu;0;100" | ||
| 2006 | |||
| 2007 | msgid "not enough values for -l parameters" | ||
| 2008 | msgstr "pas assez de valeur pour l'argument -l" | ||
| 2009 | |||
| 2010 | msgid "wrong -l argument" | ||
| 2011 | msgstr "Argument -l erroné" | ||
| 2012 | |||
| 2013 | #, fuzzy, c-format | ||
| 2014 | msgid "System Uptime - %u day(s) %u hour(s) %u minute(s) |uptime=%lu" | ||
| 2015 | msgstr "Système démarré - %u jour(s) %u heure(s) %u minute(s)" | ||
| 2016 | |||
| 2017 | #, c-format | ||
| 2018 | msgid "%s:\\ - total: %.2f Gb - used: %.2f Gb (%.0f%%) - free %.2f Gb (%.0f%%)" | ||
| 2019 | msgstr "" | ||
| 2020 | "%s:\\ - total: %.2f Gb - utilisé: %.2f Gb (%.0f%%) - libre %.2f Gb (%.0f%%)" | ||
| 2021 | |||
| 2022 | #, c-format | ||
| 2023 | msgid "'%s:\\ Used Space'=%.2fGb;%.2f;%.2f;0.00;%.2f" | ||
| 2024 | msgstr "'%s:\\ Espace Utilisé'=%.2fGb;%.2f;%.2f;0.00;%.2f" | ||
| 2025 | |||
| 2026 | msgid "Free disk space : Invalid drive" | ||
| 2027 | msgstr "Espace disque libre : Lecteur invalide" | ||
| 2028 | |||
| 2029 | msgid "No service/process specified" | ||
| 2030 | msgstr "Pas de service/processus spécifié" | ||
| 2031 | |||
| 2032 | msgid "could not fetch information from server\n" | ||
| 2033 | msgstr "Impossible d'obtenir l'information depuis le serveur\n" | ||
| 2034 | |||
| 2035 | #, fuzzy, c-format | ||
| 2036 | msgid "" | ||
| 2037 | "Memory usage: total:%.2f MB - used: %.2f MB (%.0f%%) - free: %.2f MB (%.0f%%)" | ||
| 2038 | msgstr "" | ||
| 2039 | "Mémoire utilisée: total:%.2f Mb - utilisée: %.2f Mb (%.0f%%) - libre: %.2f " | ||
| 2040 | "Mb (%.0f%%)" | ||
| 2041 | |||
| 2042 | #, fuzzy, c-format | ||
| 2043 | msgid "'Memory usage'=%.2fMB;%.2f;%.2f;0.00;%.2f" | ||
| 2044 | msgstr "'Mémoire utilisée'=%.2fMb;%.2f;%.2f;0.00;%.2f" | ||
| 2045 | |||
| 2046 | msgid "No counter specified" | ||
| 2047 | msgstr "Pas de compteur spécifié" | ||
| 2048 | |||
| 2049 | msgid "Minimum value contains non-numbers" | ||
| 2050 | msgstr "La valeur minimum contient des caractères non numériques" | ||
| 2051 | |||
| 2052 | msgid "Maximum value contains non-numbers" | ||
| 2053 | msgstr "La valeur maximum contient des caractères non numériques" | ||
| 2054 | |||
| 2055 | msgid "No unit counter specified" | ||
| 2056 | msgstr "Pas de compteur spécifié" | ||
| 2057 | |||
| 2058 | msgid "Please specify a variable to check" | ||
| 2059 | msgstr "Veuillez préciser une variable a vérifier" | ||
| 2060 | |||
| 2061 | msgid "Server port must be an integer\n" | ||
| 2062 | msgstr "Le port du serveur doit être un nombre entier\n" | ||
| 2063 | |||
| 2064 | msgid "You must provide a server address or host name" | ||
| 2065 | msgstr "Vous devez spécifier une adresse ou un nom d'hôte" | ||
| 2066 | |||
| 2067 | msgid "None" | ||
| 2068 | msgstr "Aucun" | ||
| 2069 | |||
| 2070 | msgid "This plugin collects data from the NSClient service running on a" | ||
| 2071 | msgstr "" | ||
| 2072 | "Ce plugin collecte les données depuis le service NSClient tournant sur un" | ||
| 2073 | |||
| 2074 | msgid "Windows NT/2000/XP/2003 server." | ||
| 2075 | msgstr "Serveur Windows NT/2000/XP/2003." | ||
| 2076 | |||
| 2077 | msgid "Name of the host to check" | ||
| 2078 | msgstr "Nom de l'hôte à vérifier" | ||
| 2079 | |||
| 2080 | msgid "Optional port number (default: " | ||
| 2081 | msgstr "Numéro de port optionnel (défaut: " | ||
| 2082 | |||
| 2083 | msgid "Password needed for the request" | ||
| 2084 | msgstr "Mot de passe nécessaire pour la requête" | ||
| 2085 | |||
| 2086 | msgid "Threshold which will result in a warning status" | ||
| 2087 | msgstr "" | ||
| 2088 | |||
| 2089 | msgid "Threshold which will result in a critical status" | ||
| 2090 | msgstr "" | ||
| 2091 | |||
| 2092 | msgid "Seconds before connection attempt times out (default: " | ||
| 2093 | msgstr "" | ||
| 2094 | |||
| 2095 | msgid "Parameters passed to specified check (see below)" | ||
| 2096 | msgstr "" | ||
| 2097 | |||
| 2098 | msgid "Display options (currently only SHOWALL works)" | ||
| 2099 | msgstr "" | ||
| 2100 | |||
| 2101 | msgid "Return UNKNOWN on timeouts" | ||
| 2102 | msgstr "" | ||
| 2103 | |||
| 2104 | msgid "Print this help screen" | ||
| 2105 | msgstr "Afficher l'écran d'aide" | ||
| 2106 | |||
| 2107 | msgid "Print version information" | ||
| 2108 | msgstr "Afficher la version" | ||
| 2109 | |||
| 2110 | msgid "Variable to check" | ||
| 2111 | msgstr "Variable a vérifier" | ||
| 2112 | |||
| 2113 | msgid "Valid variables are:" | ||
| 2114 | msgstr "Les variables valides sont" | ||
| 2115 | |||
| 2116 | msgid "Get the NSClient version" | ||
| 2117 | msgstr "Obtenir la version de NSClient" | ||
| 2118 | |||
| 2119 | msgid "If -l <version> is specified, will return warning if versions differ." | ||
| 2120 | msgstr "" | ||
| 2121 | "si l'argument -l <version> est spécifié, une alerte AVERTISSEMENT sera " | ||
| 2122 | "renvoyée, si les versions sont différentes." | ||
| 2123 | |||
| 2124 | msgid "Average CPU load on last x minutes." | ||
| 2125 | msgstr "Moyenne de la charge CPU sur les dernières x minutes." | ||
| 2126 | |||
| 2127 | msgid "Request a -l parameter with the following syntax:" | ||
| 2128 | msgstr "Demande un paramètre -l avec la syntaxe suivante:" | ||
| 2129 | |||
| 2130 | msgid "-l <minutes range>,<warning threshold>,<critical threshold>." | ||
| 2131 | msgstr "-l <plage de minutes>,<seuil d'avertissement>,<seuil critique>." | ||
| 2132 | |||
| 2133 | msgid "<minute range> should be less than 24*60." | ||
| 2134 | msgstr "<plage de minutes> devrait être inférieur à 24*60." | ||
| 2135 | |||
| 2136 | msgid "" | ||
| 2137 | "Thresholds are percentage and up to 10 requests can be done in one shot." | ||
| 2138 | msgstr "" | ||
| 2139 | "Les seuils sonts en pourcentage et un maximum de 10 requêtes peuvent être " | ||
| 2140 | "effectuées à la fois." | ||
| 2141 | |||
| 2142 | msgid "Get the uptime of the machine." | ||
| 2143 | msgstr "Obtenir le temps de service de la machine." | ||
| 2144 | |||
| 2145 | msgid "-l <unit> " | ||
| 2146 | msgstr "" | ||
| 2147 | |||
| 2148 | msgid "<unit> = seconds, minutes, hours, or days. (default: minutes)" | ||
| 2149 | msgstr "" | ||
| 2150 | |||
| 2151 | #, fuzzy | ||
| 2152 | msgid "Thresholds will use the unit specified above." | ||
| 2153 | msgstr "Ce plugin va vérifier l'heure sur l'hôte spécifié." | ||
| 2154 | |||
| 2155 | msgid "Size and percentage of disk use." | ||
| 2156 | msgstr "Taille et pourcentage de l'utilisation disque." | ||
| 2157 | |||
| 2158 | msgid "Request a -l parameter containing the drive letter only." | ||
| 2159 | msgstr "Demande un paramètre -l contennant uniquement la lettre du lecteur." | ||
| 2160 | |||
| 2161 | msgid "Warning and critical thresholds can be specified with -w and -c." | ||
| 2162 | msgstr "Les seuils d'alerte et critiques peuvent être spécifiés avec -w et -c." | ||
| 2163 | |||
| 2164 | msgid "Memory use." | ||
| 2165 | msgstr "Mémoire utilisée." | ||
| 2166 | |||
| 2167 | msgid "Check the state of one or several services." | ||
| 2168 | msgstr "Vérifier l'état d'un ou plusieurs services." | ||
| 2169 | |||
| 2170 | msgid "Request a -l parameters with the following syntax:" | ||
| 2171 | msgstr "Demande un paramètre -l avec la syntaxe suivante:" | ||
| 2172 | |||
| 2173 | msgid "-l <service1>,<service2>,<service3>,..." | ||
| 2174 | msgstr "-l <service1>,<service2>,<service3>,..." | ||
| 2175 | |||
| 2176 | msgid "You can specify -d SHOWALL in case you want to see working services" | ||
| 2177 | msgstr "Vous pouvez spécifier -d SHOWALL pour voir les services fonctionnant" | ||
| 2178 | |||
| 2179 | msgid "in the returned string." | ||
| 2180 | msgstr "dans la chaîne de caractère renvoyée." | ||
| 2181 | |||
| 2182 | msgid "Check if one or several process are running." | ||
| 2183 | msgstr "Vérifie si un ou plusieurs processus sont démarrés." | ||
| 2184 | |||
| 2185 | msgid "Same syntax as SERVICESTATE." | ||
| 2186 | msgstr "Même syntaxe que SERVICESTATE." | ||
| 2187 | |||
| 2188 | msgid "Check any performance counter of Windows NT/2000." | ||
| 2189 | msgstr "Vérifier n'importe quel compteur de performance sur Windows NT/2000." | ||
| 2190 | |||
| 2191 | msgid "-l \"\\\\<performance object>\\\\counter\",\"<description>" | ||
| 2192 | msgstr "-l \"\\\\<catégorie>\\\\compteur\",\"<description>" | ||
| 2193 | |||
| 2194 | msgid "The <description> parameter is optional and is given to a printf " | ||
| 2195 | msgstr "Le paramètre <description> est optionnel et est passé à la fonction " | ||
| 2196 | |||
| 2197 | msgid "output command which requires a float parameter." | ||
| 2198 | msgstr "de sortie printf qui demande un paramètre de type float." | ||
| 2199 | |||
| 2200 | #, c-format | ||
| 2201 | msgid "If <description> does not include \"%%\", it is used as a label." | ||
| 2202 | msgstr "Si <description> n'inclus pas \"%%\", il est utilisé comme étiquette." | ||
| 2203 | |||
| 2204 | msgid "Some examples:" | ||
| 2205 | msgstr "Exemples:" | ||
| 2206 | |||
| 2207 | msgid "Check any performance counter object of Windows NT/2000." | ||
| 2208 | msgstr "Vérifie n'importe quel compteur de performance de Windows NT/2000." | ||
| 2209 | |||
| 2210 | msgid "" | ||
| 2211 | "Syntax: check_nt -H <hostname> -p <port> -v INSTANCES -l <counter object>" | ||
| 2212 | msgstr "" | ||
| 2213 | |||
| 2214 | msgid "<counter object> is a Windows Perfmon Counter object (eg. Process)," | ||
| 2215 | msgstr "" | ||
| 2216 | |||
| 2217 | msgid "if it is two words, it should be enclosed in quotes" | ||
| 2218 | msgstr "" | ||
| 2219 | |||
| 2220 | msgid "The returned results will be a comma-separated list of instances on " | ||
| 2221 | msgstr "" | ||
| 2222 | |||
| 2223 | msgid " the selected computer for that object." | ||
| 2224 | msgstr "" | ||
| 2225 | |||
| 2226 | msgid "" | ||
| 2227 | "The purpose of this is to be run from command line to determine what " | ||
| 2228 | "instances" | ||
| 2229 | msgstr "" | ||
| 2230 | |||
| 2231 | msgid "" | ||
| 2232 | " are available for monitoring without having to log onto the Windows server" | ||
| 2233 | msgstr "" | ||
| 2234 | |||
| 2235 | msgid " to run Perfmon directly." | ||
| 2236 | msgstr "" | ||
| 2237 | |||
| 2238 | msgid "" | ||
| 2239 | "It can also be used in scripts that automatically create the monitoring " | ||
| 2240 | "service" | ||
| 2241 | msgstr "" | ||
| 2242 | |||
| 2243 | msgid " configuration files." | ||
| 2244 | msgstr "" | ||
| 2245 | |||
| 2246 | msgid "check_nt -H 192.168.1.1 -p 1248 -v INSTANCES -l Process" | ||
| 2247 | msgstr "" | ||
| 2248 | |||
| 2249 | msgid "" | ||
| 2250 | "- The NSClient service should be running on the server to get any information" | ||
| 2251 | msgstr "" | ||
| 2252 | "- Le service NSClient doit rouler sur le serveur pour obtenir les " | ||
| 2253 | "informations" | ||
| 2254 | |||
| 2255 | msgid "- Critical thresholds should be lower than warning thresholds" | ||
| 2256 | msgstr "" | ||
| 2257 | "- Les seuils critiques doivent être plus bas que les seuils d'avertissement" | ||
| 2258 | |||
| 2259 | msgid "- Default port 1248 is sometimes in use by other services. The error" | ||
| 2260 | msgstr "" | ||
| 2261 | "- Le port par défaut 1248 est parfois utilisé par d'autres services. L'erreur" | ||
| 2262 | |||
| 2263 | msgid "" | ||
| 2264 | "output when this happens contains \"Cannot map xxxxx to protocol number\"." | ||
| 2265 | msgstr "qui en résulte contiens \"Cannot map xxxxx to protocol number\"." | ||
| 2266 | |||
| 2267 | msgid "One fix for this is to change the port to something else on check_nt " | ||
| 2268 | msgstr "" | ||
| 2269 | "Une possibilité pour corriger ce problème est de changer le port dans " | ||
| 2270 | "check_nt " | ||
| 2271 | |||
| 2272 | msgid "and on the client service it's connecting to." | ||
| 2273 | msgstr "et dans le service auquel il se connecte." | ||
| 2274 | |||
| 2275 | #, c-format | ||
| 2276 | msgid "jitter response too large (%lu bytes)\n" | ||
| 2277 | msgstr "" | ||
| 2278 | |||
| 2279 | msgid "NTP CRITICAL:" | ||
| 2280 | msgstr "NTP CRITIQUE:" | ||
| 2281 | |||
| 2282 | msgid "NTP WARNING:" | ||
| 2283 | msgstr "NTP AVERTISSEMENT:" | ||
| 2284 | |||
| 2285 | msgid "NTP OK:" | ||
| 2286 | msgstr "NTP OK:" | ||
| 2287 | |||
| 2288 | msgid "NTP UNKNOWN:" | ||
| 2289 | msgstr "NTP INCONNU:" | ||
| 2290 | |||
| 2291 | msgid "Offset unknown" | ||
| 2292 | msgstr "Décalage inconnu" | ||
| 2293 | |||
| 2294 | msgid "Offset" | ||
| 2295 | msgstr "Décalage" | ||
| 2296 | |||
| 2297 | msgid "This plugin checks the selected ntp server" | ||
| 2298 | msgstr "Ce plugin vérifie le service ntp sur l'hôte" | ||
| 2299 | |||
| 2300 | msgid "Offset to result in warning status (seconds)" | ||
| 2301 | msgstr "Décalage résultant en un avertissement (secondes)" | ||
| 2302 | |||
| 2303 | msgid "Offset to result in critical status (seconds)" | ||
| 2304 | msgstr "Décalage résultant en un état critique (secondes)" | ||
| 2305 | |||
| 2306 | msgid "Warning threshold for jitter" | ||
| 2307 | msgstr "Seuil d'avertissement pour la variation (jitter)" | ||
| 2308 | |||
| 2309 | msgid "Critical threshold for jitter" | ||
| 2310 | msgstr "Seuil critique pour la variation (jitter)" | ||
| 2311 | |||
| 2312 | msgid "Normal offset check:" | ||
| 2313 | msgstr "Vérification normale du décalage:" | ||
| 2314 | |||
| 2315 | msgid "" | ||
| 2316 | "Check jitter too, avoiding critical notifications if jitter isn't available" | ||
| 2317 | msgstr "" | ||
| 2318 | "Vérifier aussi la variation (jitter) en évitant les notifications s'il n'est " | ||
| 2319 | "pas dispoible" | ||
| 2320 | |||
| 2321 | msgid "(See Notes above for more details on thresholds formats):" | ||
| 2322 | msgstr "" | ||
| 2323 | "(Voir les Notes ci-dessus pour plus de détails sur le format des seuils)" | ||
| 2324 | |||
| 2325 | msgid "WARNING: check_ntp is deprecated. Please use check_ntp_peer or" | ||
| 2326 | msgstr "ATTENTION: check_ntp est périmé, utilisez plutôt check_ntp_peer" | ||
| 2327 | |||
| 2328 | msgid "check_ntp_time instead." | ||
| 2329 | msgstr "ou check_ntp_time." | ||
| 2330 | |||
| 2331 | msgid "Server not synchronized" | ||
| 2332 | msgstr "Le serveur n'est pas synchronisé" | ||
| 2333 | |||
| 2334 | msgid "Server has the LI_ALARM bit set" | ||
| 2335 | msgstr "" | ||
| 2336 | |||
| 2337 | msgid "" | ||
| 2338 | "Returns UNKNOWN instead of CRITICAL or WARNING if server isn't synchronized" | ||
| 2339 | msgstr "" | ||
| 2340 | "Retourne INCONNU au lieu de CRITIQUE ou AVERTISSEMENT si le serveur n'est " | ||
| 2341 | "pas synchronisé" | ||
| 2342 | |||
| 2343 | #, fuzzy | ||
| 2344 | msgid "Warning threshold for stratum of server's synchronization peer" | ||
| 2345 | msgstr "Seuil d'avertissement pour le stratum" | ||
| 2346 | |||
| 2347 | #, fuzzy | ||
| 2348 | msgid "Critical threshold for stratum of server's synchronization peer" | ||
| 2349 | msgstr "Seuil critique pour le stratum" | ||
| 2350 | |||
| 2351 | msgid "Warning threshold for number of usable time sources (\"truechimers\")" | ||
| 2352 | msgstr "" | ||
| 2353 | "Seuil d'avertissement pour le nombre de sources de temps utilisable " | ||
| 2354 | "(\"truechimers\")" | ||
| 2355 | |||
| 2356 | msgid "Critical threshold for number of usable time sources (\"truechimers\")" | ||
| 2357 | msgstr "" | ||
| 2358 | "Seuil critique pour le nombre de sources de temps utilisable " | ||
| 2359 | "(\"truechimers\")" | ||
| 2360 | |||
| 2361 | msgid "This plugin checks an NTP server independent of any commandline" | ||
| 2362 | msgstr "Ce plugin vérifie un serveur NTP sans recours aux programmes de" | ||
| 2363 | |||
| 2364 | msgid "programs or external libraries." | ||
| 2365 | msgstr "la ligne de commande ou libraries externes" | ||
| 2366 | |||
| 2367 | msgid "Use this plugin to check the health of an NTP server. It supports" | ||
| 2368 | msgstr "" | ||
| 2369 | "Utilisez ce plugin pour vérifier le service NTP sur l'hôte. Il supporte la" | ||
| 2370 | |||
| 2371 | msgid "checking the offset with the sync peer, the jitter and stratum. This" | ||
| 2372 | msgstr "" | ||
| 2373 | "vérification du décalage avec le pair se synchronisation, la variation " | ||
| 2374 | "(jitter) et le stratum." | ||
| 2375 | |||
| 2376 | msgid "plugin will not check the clock offset between the local host and NTP" | ||
| 2377 | msgstr "" | ||
| 2378 | "Ce plugin ne vérifie pas le décalage entre le serveur local et le serveur" | ||
| 2379 | |||
| 2380 | msgid "server; please use check_ntp_time for that purpose." | ||
| 2381 | msgstr "NTP; utilisez plutôt check_ntp_time à cette fin." | ||
| 2382 | |||
| 2383 | msgid "Simple NTP server check:" | ||
| 2384 | msgstr "Vérification simple du serveur NTP:" | ||
| 2385 | |||
| 2386 | msgid "Only check the number of usable time sources (\"truechimers\"):" | ||
| 2387 | msgstr "" | ||
| 2388 | |||
| 2389 | msgid "Check only stratum:" | ||
| 2390 | msgstr "Vérification du stratum seulement:" | ||
| 2391 | |||
| 2392 | msgid "This plugin checks the clock offset with the ntp server" | ||
| 2393 | msgstr "Ce plugin vérifie le décalage de l'horloge avec le serveur ntp" | ||
| 2394 | |||
| 2395 | msgid "Returns UNKNOWN instead of CRITICAL if offset cannot be found" | ||
| 2396 | msgstr "Retourne INCONNU au lieu de CRITIQUE si le décalage est inconnu" | ||
| 2397 | |||
| 2398 | msgid "Expected offset of the ntp server relative to local server (seconds)" | ||
| 2399 | msgstr "" | ||
| 2400 | |||
| 2401 | msgid "This plugin checks the clock offset between the local host and a" | ||
| 2402 | msgstr "Ce plugin vérifie le décalage de l'horloge entre se serveur local et" | ||
| 2403 | |||
| 2404 | msgid "remote NTP server. It is independent of any commandline programs or" | ||
| 2405 | msgstr "le serveur NTP distant. Il ne fait aucun recours aux programmes de" | ||
| 2406 | |||
| 2407 | msgid "external libraries." | ||
| 2408 | msgstr "la ligne de commande ou libraries externes." | ||
| 2409 | |||
| 2410 | msgid "If you'd rather want to monitor an NTP server, please use" | ||
| 2411 | msgstr "Si vous voulez plutôt surveiller un serveur NTP, veuillez" | ||
| 2412 | |||
| 2413 | msgid "check_ntp_peer." | ||
| 2414 | msgstr "utiliser check_ntp_peer." | ||
| 2415 | |||
| 2416 | msgid "--time-offset is useful for compensating for servers with known" | ||
| 2417 | msgstr "" | ||
| 2418 | |||
| 2419 | msgid "and expected clock skew." | ||
| 2420 | msgstr "" | ||
| 2421 | |||
| 2422 | #, c-format | ||
| 2423 | msgid "NetWare %s: " | ||
| 2424 | msgstr "NetWare %s: " | ||
| 2425 | |||
| 2426 | #, c-format | ||
| 2427 | msgid "Up %s," | ||
| 2428 | msgstr "Démarré %s," | ||
| 2429 | |||
| 2430 | #, c-format | ||
| 2431 | msgid "Load %s - %s %s-min load average = %lu%%|load%s=%lu;%lu;%lu;0;100" | ||
| 2432 | msgstr "" | ||
| 2433 | "Charge %s - %s %s charge système minimale = %lu%%|charge%s=%lu;%lu;%lu;0;100" | ||
| 2434 | |||
| 2435 | #, c-format | ||
| 2436 | msgid "Conns %s - %lu current connections|Conns=%lu;%lu;%lu;;" | ||
| 2437 | msgstr "Conns %s - %lu connections actuelles|Conns=%lu;%lu;%lu;;" | ||
| 2438 | |||
| 2439 | #, c-format | ||
| 2440 | msgid "%s: Long term cache hits = %lu%%" | ||
| 2441 | msgstr "%s: Accès cache longue durée = %lu%%" | ||
| 2442 | |||
| 2443 | #, c-format | ||
| 2444 | msgid "%s: Total cache buffers = %lu|Cachebuffers=%lu;%lu;%lu;;" | ||
| 2445 | msgstr "%s: Total des caches tampons= %lu|Caches Tampons=%lu,%lu;%lu;;" | ||
| 2446 | |||
| 2447 | #, c-format | ||
| 2448 | msgid "%s: Dirty cache buffers = %lu|Dirty-Cache-Buffers=%lu;%lu;%lu;;" | ||
| 2449 | msgstr "%s: cache tampons sales = %lu|caches tampons sales=%lu;%lu;%lu;;" | ||
| 2450 | |||
| 2451 | #, c-format | ||
| 2452 | msgid "%s: LRU sitting time = %lu minutes" | ||
| 2453 | msgstr "" | ||
| 2454 | |||
| 2455 | #, c-format | ||
| 2456 | msgid "CRITICAL - Volume '%s' does not exist!" | ||
| 2457 | msgstr "CRITIQUE: Le volume '%s' n'existe pas!" | ||
| 2458 | |||
| 2459 | #, c-format | ||
| 2460 | msgid "%s%lu KB free on volume %s|KBFree%s=%lu;%lu;%lu;;" | ||
| 2461 | msgstr "%s%lu KB libre sur le volume %s|KB libres%s=%lu;%lu;%lu;;" | ||
| 2462 | |||
| 2463 | msgid "Only " | ||
| 2464 | msgstr "Seulement" | ||
| 2465 | |||
| 2466 | #, c-format | ||
| 2467 | msgid "%s%lu MB free on volume %s|MBFree%s=%lu;%lu;%lu;;" | ||
| 2468 | msgstr "%s%lu MB libre sur le volume %s|MBlibre%s=%lu;%lu;%lu;;" | ||
| 2469 | |||
| 2470 | #, c-format | ||
| 2471 | msgid "%s%lu MB used on volume %s|MBUsed%s=%lu;%lu;%lu;;" | ||
| 2472 | msgstr "" | ||
| 2473 | |||
| 2474 | #, c-format | ||
| 2475 | msgid "" | ||
| 2476 | "%lu MB (%lu%%) free on volume %s - total %lu MB|FreeMB%s=%lu;%lu;%lu;0;100" | ||
| 2477 | msgstr "" | ||
| 2478 | "%lu MB (%lu%%) libre sur le volume %s - total %lu MB|MBlibre%s=%lu;%lu;" | ||
| 2479 | "%lu;0;100" | ||
| 2480 | |||
| 2481 | #, c-format | ||
| 2482 | msgid "Directory Services Database is %s (DS version %s)" | ||
| 2483 | msgstr "La base de données Directory Services est %s (DS version %s)" | ||
| 2484 | |||
| 2485 | #, c-format | ||
| 2486 | msgid "Logins are %s" | ||
| 2487 | msgstr "Les logins sont %s" | ||
| 2488 | |||
| 2489 | msgid "enabled" | ||
| 2490 | msgstr "activé" | ||
| 2491 | |||
| 2492 | msgid "disabled" | ||
| 2493 | msgstr "désactivé" | ||
| 2494 | |||
| 2495 | msgid "CRITICAL - NRM Status is bad!" | ||
| 2496 | msgstr "CRITIQUE - le statut NRM est mauvais!" | ||
| 2497 | |||
| 2498 | msgid "Warning - NRM Status is suspect!" | ||
| 2499 | msgstr "" | ||
| 2500 | |||
| 2501 | msgid "OK - NRM Status is good!" | ||
| 2502 | msgstr "OK - Le status du NRM est bon!" | ||
| 2503 | |||
| 2504 | #, c-format | ||
| 2505 | msgid "%lu of %lu (%lu%%) packet receive buffers used" | ||
| 2506 | msgstr "%lu de %lu (%lu%%) paquets du tampon de réception utilisés" | ||
| 2507 | |||
| 2508 | #, c-format | ||
| 2509 | msgid "%lu entries in SAP table" | ||
| 2510 | msgstr "%lu entrées dans la table SAP" | ||
| 2511 | |||
| 2512 | #, c-format | ||
| 2513 | msgid "%lu entries in SAP table for SAP type %d" | ||
| 2514 | msgstr "%lu entrées dans la table SAP pour le type SAP %d" | ||
| 2515 | |||
| 2516 | #, c-format | ||
| 2517 | msgid "%s%lu KB purgeable on volume %s|Purge%s=%lu;%lu;%lu;;" | ||
| 2518 | msgstr "%s%lu KB effaçables sur le volume %s|Purge%s=%lu;%lu;%lu;;" | ||
| 2519 | |||
| 2520 | #, c-format | ||
| 2521 | msgid "%s%lu MB purgeable on volume %s|Purge%s=%lu;%lu;%lu;;" | ||
| 2522 | msgstr "%s%lu KB effaçables sur le volume %s|Purge%s=%lu;%lu;%lu;;" | ||
| 2523 | |||
| 2524 | #, c-format | ||
| 2525 | msgid "%lu MB (%lu%%) purgeable on volume %s|Purgeable%s=%lu;%lu;%lu;0;100" | ||
| 2526 | msgstr "" | ||
| 2527 | "%lu MB (%lu%%) effaçables sur le volume %s|Effacable%s=%lu;%lu;%lu;0;100" | ||
| 2528 | |||
| 2529 | #, c-format | ||
| 2530 | msgid "%s%lu KB not yet purgeable on volume %s" | ||
| 2531 | msgstr "%s%lu KB pas encore effaçables sur le volume %s" | ||
| 2532 | |||
| 2533 | #, c-format | ||
| 2534 | msgid "%lu MB (%lu%%) not yet purgeable on volume %s" | ||
| 2535 | msgstr "%lu MB (%lu%%) pas encore effaçables sur le volume %s" | ||
| 2536 | |||
| 2537 | #, c-format | ||
| 2538 | msgid "%lu open files|Openfiles=%lu;%lu;%lu;0,0" | ||
| 2539 | msgstr "" | ||
| 2540 | |||
| 2541 | #, c-format | ||
| 2542 | msgid "%lu abended threads|Abends=%lu;%lu;%lu;;" | ||
| 2543 | msgstr "%lu processus avortés|Avortés=%lu;%lu;%lu;;" | ||
| 2544 | |||
| 2545 | #, c-format | ||
| 2546 | msgid "%lu current service processes (%lu max)|Processes=%lu;%lu;%lu;0;%lu" | ||
| 2547 | msgstr "%lu processus services actuels (%lu max)|Processus=%lu;%lu;%lu;0;%lu" | ||
| 2548 | |||
| 2549 | msgid "CRITICAL - Time not in sync with network!" | ||
| 2550 | msgstr "CRITIQUE - Le temps n'est pas synchronisé avec le réseau!" | ||
| 2551 | |||
| 2552 | msgid "OK - Time in sync with network!" | ||
| 2553 | msgstr "OK - Le temps est synchronisé avec le réseau!" | ||
| 2554 | |||
| 2555 | #, c-format | ||
| 2556 | msgid "LRU sitting time = %lu seconds" | ||
| 2557 | msgstr "LRU temps d'attente = %lu secondes" | ||
| 2558 | |||
| 2559 | #, c-format | ||
| 2560 | msgid "Dirty cache buffers = %lu%% of the total|DCB=%lu;%lu;%lu;0;100" | ||
| 2561 | msgstr "Buffers cache sales = %lu%% du total|DCB=%lu;%lu;%lu;0;100" | ||
| 2562 | |||
| 2563 | #, c-format | ||
| 2564 | msgid "Total cache buffers = %lu%% of the original|TCB=%lu;%lu;%lu;0;100" | ||
| 2565 | msgstr "cache tampons totaux= %lu%% de l'original|TCB=%lu;%lu;%lu;0;100" | ||
| 2566 | |||
| 2567 | #, c-format | ||
| 2568 | msgid "NDS Version %s" | ||
| 2569 | msgstr "Version NDS %s" | ||
| 2570 | |||
| 2571 | #, c-format | ||
| 2572 | msgid "Up %s" | ||
| 2573 | msgstr "Démarré %s" | ||
| 2574 | |||
| 2575 | #, c-format | ||
| 2576 | msgid "Module %s version %s is loaded" | ||
| 2577 | msgstr "Le Module %s version %s est chargé" | ||
| 2578 | |||
| 2579 | #, c-format | ||
| 2580 | msgid "Module %s is not loaded" | ||
| 2581 | msgstr "Le Module %s n'est pas chargé" | ||
| 2582 | |||
| 2583 | #, c-format | ||
| 2584 | msgid "CRITICAL - Value '%s' does not exist!" | ||
| 2585 | msgstr "CRITIQUE: Le valeur '%s' n'existe pas!" | ||
| 2586 | |||
| 2587 | #, c-format | ||
| 2588 | msgid "%s is %lu|%s=%lu;%lu;%lu;;" | ||
| 2589 | msgstr "%s est %lu|%s=%lu;%lu;%lu;;" | ||
| 2590 | |||
| 2591 | msgid "Nothing to check!\n" | ||
| 2592 | msgstr "Rien à vérifier!\n" | ||
| 2593 | |||
| 2594 | msgid "Server port an integer\n" | ||
| 2595 | msgstr "Le port du serveur doit être un nombre entier\n" | ||
| 2596 | |||
| 2597 | msgid "This plugin attempts to contact the MRTGEXT NLM running on a" | ||
| 2598 | msgstr "Ce plugin essaye de contacter le NLM MRTGEXT qui s'exécute sur" | ||
| 2599 | |||
| 2600 | msgid "Novell server to gather the requested system information." | ||
| 2601 | msgstr "un serveur Novell pour récupérer l'information système demandée." | ||
| 2602 | |||
| 2603 | msgid "Variable to check. Valid variables include:" | ||
| 2604 | msgstr "Variable à vérifier. Les variables valides sont:" | ||
| 2605 | |||
| 2606 | msgid "LOAD1 = 1 minute average CPU load" | ||
| 2607 | msgstr "" | ||
| 2608 | |||
| 2609 | msgid "LOAD5 = 5 minute average CPU load" | ||
| 2610 | msgstr "" | ||
| 2611 | |||
| 2612 | msgid "LOAD15 = 15 minute average CPU load" | ||
| 2613 | msgstr "" | ||
| 2614 | |||
| 2615 | msgid "CSPROCS = number of current service processes (NW 5.x only)" | ||
| 2616 | msgstr "CSPROCS = nombres de processus services actuels (NW 5.x seulement)" | ||
| 2617 | |||
| 2618 | msgid "ABENDS = number of abended threads (NW 5.x only)" | ||
| 2619 | msgstr "" | ||
| 2620 | |||
| 2621 | msgid "UPTIME = server uptime" | ||
| 2622 | msgstr "" | ||
| 2623 | |||
| 2624 | msgid "LTCH = percent long term cache hits" | ||
| 2625 | msgstr "" | ||
| 2626 | |||
| 2627 | msgid "CBUFF = current number of cache buffers" | ||
| 2628 | msgstr "" | ||
| 2629 | |||
| 2630 | msgid "CDBUFF = current number of dirty cache buffers" | ||
| 2631 | msgstr "" | ||
| 2632 | |||
| 2633 | msgid "DCB = dirty cache buffers as a percentage of the total" | ||
| 2634 | msgstr "" | ||
| 2635 | |||
| 2636 | msgid "TCB = dirty cache buffers as a percentage of the original" | ||
| 2637 | msgstr "" | ||
| 2638 | |||
| 2639 | msgid "OFILES = number of open files" | ||
| 2640 | msgstr "" | ||
| 2641 | |||
| 2642 | msgid " VMF<vol> = MB of free space on Volume <vol>" | ||
| 2643 | msgstr "" | ||
| 2644 | |||
| 2645 | msgid " VMU<vol> = MB used space on Volume <vol>" | ||
| 2646 | msgstr "" | ||
| 2647 | |||
| 2648 | msgid " VMP<vol> = MB of purgeable space on Volume <vol>" | ||
| 2649 | msgstr "" | ||
| 2650 | |||
| 2651 | msgid " VPF<vol> = percent free space on volume <vol>" | ||
| 2652 | msgstr "" | ||
| 2653 | |||
| 2654 | msgid " VKF<vol> = KB of free space on volume <vol>" | ||
| 2655 | msgstr "" | ||
| 2656 | |||
| 2657 | msgid " VPP<vol> = percent purgeable space on volume <vol>" | ||
| 2658 | msgstr "" | ||
| 2659 | |||
| 2660 | msgid " VKP<vol> = KB of purgeable space on volume <vol>" | ||
| 2661 | msgstr "" | ||
| 2662 | |||
| 2663 | msgid " VPNP<vol> = percent not yet purgeable space on volume <vol>" | ||
| 2664 | msgstr "" | ||
| 2665 | |||
| 2666 | msgid " VKNP<vol> = KB of not yet purgeable space on volume <vol>" | ||
| 2667 | msgstr "" | ||
| 2668 | |||
| 2669 | msgid " LRUM = LRU sitting time in minutes" | ||
| 2670 | msgstr "" | ||
| 2671 | |||
| 2672 | msgid " LRUS = LRU sitting time in seconds" | ||
| 2673 | msgstr " LRUS = LRU temps d'attente en secondes" | ||
| 2674 | |||
| 2675 | msgid " DSDB = check to see if DS Database is open" | ||
| 2676 | msgstr "" | ||
| 2677 | |||
| 2678 | msgid " DSVER = NDS version" | ||
| 2679 | msgstr "" | ||
| 2680 | |||
| 2681 | msgid " UPRB = used packet receive buffers" | ||
| 2682 | msgstr " UPRB = paquets du tampon de réception utilisés" | ||
| 2683 | |||
| 2684 | msgid " PUPRB = percent (of max) used packet receive buffers" | ||
| 2685 | msgstr "" | ||
| 2686 | |||
| 2687 | msgid " SAPENTRIES = number of entries in the SAP table" | ||
| 2688 | msgstr "" | ||
| 2689 | |||
| 2690 | msgid " SAPENTRIES<n> = number of entries in the SAP table for SAP type <n>" | ||
| 2691 | msgstr " SAPENTRIES<n> = entrées dans la table SAP pour le type SAP <n>" | ||
| 2692 | |||
| 2693 | msgid " TSYNC = timesync status" | ||
| 2694 | msgstr "" | ||
| 2695 | |||
| 2696 | msgid " LOGINS = check to see if logins are enabled" | ||
| 2697 | msgstr "" | ||
| 2698 | |||
| 2699 | msgid " CONNS = number of currently licensed connections" | ||
| 2700 | msgstr "" | ||
| 2701 | |||
| 2702 | msgid " NRMH\t= NRM Summary Status" | ||
| 2703 | msgstr "" | ||
| 2704 | |||
| 2705 | msgid " NRMP<stat> = Returns the current value for a NRM health item" | ||
| 2706 | msgstr "" | ||
| 2707 | |||
| 2708 | msgid " NRMM<stat> = Returns the current memory stats from NRM" | ||
| 2709 | msgstr "" | ||
| 2710 | |||
| 2711 | msgid " NRMS<stat> = Returns the current Swapfile stats from NRM" | ||
| 2712 | msgstr "" | ||
| 2713 | |||
| 2714 | msgid " NSS1<stat> = Statistics from _Admin:Manage_NSS\\GeneralStats.xml" | ||
| 2715 | msgstr "" | ||
| 2716 | |||
| 2717 | msgid " NSS3<stat> = Statistics from _Admin:Manage_NSS\\NameCache.xml" | ||
| 2718 | msgstr "" | ||
| 2719 | |||
| 2720 | msgid " NSS4<stat> = Statistics from _Admin:Manage_NSS\\FileStats.xml" | ||
| 2721 | msgstr "" | ||
| 2722 | |||
| 2723 | msgid " NSS5<stat> = Statistics from _Admin:Manage_NSS\\ObjectCache.xml" | ||
| 2724 | msgstr "" | ||
| 2725 | |||
| 2726 | msgid " NSS6<stat> = Statistics from _Admin:Manage_NSS\\Thread.xml" | ||
| 2727 | msgstr "" | ||
| 2728 | |||
| 2729 | msgid "" | ||
| 2730 | " NSS7<stat> = Statistics from _Admin:Manage_NSS\\AuthorizationCache.xml" | ||
| 2731 | msgstr "" | ||
| 2732 | |||
| 2733 | msgid " NLM:<nlm> = check if NLM is loaded and report version" | ||
| 2734 | msgstr "" | ||
| 2735 | |||
| 2736 | msgid " (e.g. NLM:TSANDS.NLM)" | ||
| 2737 | msgstr "" | ||
| 2738 | |||
| 2739 | msgid "Include server version string in results" | ||
| 2740 | msgstr "" | ||
| 2741 | |||
| 2742 | msgid "- This plugin requires that the MRTGEXT.NLM file from James Drews' MRTG" | ||
| 2743 | msgstr "" | ||
| 2744 | |||
| 2745 | msgid "" | ||
| 2746 | " extension for NetWare be loaded on the Novell servers you wish to check." | ||
| 2747 | msgstr "" | ||
| 2748 | |||
| 2749 | msgid " (available from http://www.engr.wisc.edu/~drews/mrtg/)" | ||
| 2750 | msgstr " (disponible depuis http://www.engr.wisc.edu/~drews/mrtg/)" | ||
| 2751 | |||
| 2752 | msgid "" | ||
| 2753 | "- Values for critical thresholds should be lower than warning thresholds" | ||
| 2754 | msgstr "" | ||
| 2755 | |||
| 2756 | msgid "" | ||
| 2757 | " when the following variables are checked: VPF, VKF, LTCH, CBUFF, DCB, " | ||
| 2758 | msgstr "" | ||
| 2759 | |||
| 2760 | msgid " TCB, LRUS and LRUM." | ||
| 2761 | msgstr "" | ||
| 2762 | |||
| 2763 | msgid "Unknown error fetching load data\n" | ||
| 2764 | msgstr "" | ||
| 2765 | "Erreur inconnue lors de la récupération des données de charge système\n" | ||
| 2766 | |||
| 2767 | msgid "Invalid response from server - no load information\n" | ||
| 2768 | msgstr "Réponse invalide du serveur - pas d'information de charge système\n" | ||
| 2769 | |||
| 2770 | msgid "Invalid response from server after load 1\n" | ||
| 2771 | msgstr "Réponse invalide du serveur après charge système à 1 minute\n" | ||
| 2772 | |||
| 2773 | msgid "Invalid response from server after load 5\n" | ||
| 2774 | msgstr "Réponse invalide du serveur après charge système à 5 minute\n" | ||
| 2775 | |||
| 2776 | #, c-format | ||
| 2777 | msgid "Load %s - %s-min load average = %0.2f" | ||
| 2778 | msgstr "Charge %s - %s-moyenne minimale de charge système = %0.2f" | ||
| 2779 | |||
| 2780 | msgid "Unknown error fetching disk data\n" | ||
| 2781 | msgstr "Erreur inconnue en récupérant les données des disques\n" | ||
| 2782 | |||
| 2783 | msgid "Invalid response from server\n" | ||
| 2784 | msgstr "Réponse invalide reçue du serveur\n" | ||
| 2785 | |||
| 2786 | msgid "Unknown error fetching network status\n" | ||
| 2787 | msgstr "Erreur inconnue lors de la réception de l'état du réseau\n" | ||
| 2788 | |||
| 2789 | #, c-format | ||
| 2790 | msgid "Net %s - %d connection%s on port %d" | ||
| 2791 | msgstr "Net %s - %d connections%s sur le port %d" | ||
| 2792 | |||
| 2793 | msgid "Unknown error fetching process status\n" | ||
| 2794 | msgstr "Erreur inconnue en récupérant l'état des processus\n" | ||
| 2795 | |||
| 2796 | #, c-format | ||
| 2797 | msgid "Process %s - %d instance%s of %s running" | ||
| 2798 | msgstr "Processus %s - %d instances%s de %s démarrées" | ||
| 2799 | |||
| 2800 | #, c-format | ||
| 2801 | msgid "Uptime %s - Up %d days %d hours %d minutes" | ||
| 2802 | msgstr "Temps de fonctionnement %s - Up %d jours %d heures %d minutes" | ||
| 2803 | |||
| 2804 | msgid "" | ||
| 2805 | "This plugin attempts to contact the Over-CR collector daemon running on the" | ||
| 2806 | msgstr "" | ||
| 2807 | "Ce plugin essaye de joindre le service Over CR tournant sur le serveur UNIX" | ||
| 2808 | |||
| 2809 | msgid "remote UNIX server in order to gather the requested system information." | ||
| 2810 | msgstr "distant afin de récupérer les informations système demandées." | ||
| 2811 | |||
| 2812 | msgid "LOAD1 = 1 minute average CPU load" | ||
| 2813 | msgstr "" | ||
| 2814 | |||
| 2815 | msgid "LOAD5 = 5 minute average CPU load" | ||
| 2816 | msgstr "" | ||
| 2817 | |||
| 2818 | msgid "LOAD15 = 15 minute average CPU load" | ||
| 2819 | msgstr "" | ||
| 2820 | |||
| 2821 | msgid "DPU<filesys> = percent used disk space on filesystem <filesys>" | ||
| 2822 | msgstr "" | ||
| 2823 | |||
| 2824 | msgid "PROC<process> = number of running processes with name <process>" | ||
| 2825 | msgstr "" | ||
| 2826 | |||
| 2827 | msgid "NET<port> = number of active connections on TCP port <port>" | ||
| 2828 | msgstr "" | ||
| 2829 | |||
| 2830 | msgid "UPTIME = system uptime in seconds" | ||
| 2831 | msgstr "" | ||
| 2832 | |||
| 2833 | msgid "This plugin requires that Eric Molitors' Over-CR collector daemon be" | ||
| 2834 | msgstr "Ce plugin requiert que le daemon collecteur Over-CR d'Eric Molitors" | ||
| 2835 | |||
| 2836 | msgid "running on the remote server." | ||
| 2837 | msgstr "soit fonctionnel sur le serveur distant" | ||
| 2838 | |||
| 2839 | msgid "Over-CR can be downloaded from http://www.molitor.org/overcr" | ||
| 2840 | msgstr "" | ||
| 2841 | |||
| 2842 | msgid "This plugin was tested with version 0.99.53 of the Over-CR collector" | ||
| 2843 | msgstr "Ce plugin a été testé avec la version 0.99.53 su collecteur Over-CR" | ||
| 2844 | |||
| 2845 | msgid "" | ||
| 2846 | "For the available options, the critical threshold value should always be" | ||
| 2847 | msgstr "" | ||
| 2848 | "Pour toutes les options disponibles, le seuil critique doit toujours être" | ||
| 2849 | |||
| 2850 | msgid "" | ||
| 2851 | "higher than the warning threshold value, EXCEPT with the uptime variable" | ||
| 2852 | msgstr "plus grand que le seuil d'alerte SAUF pour l'option uptime" | ||
| 2853 | |||
| 2854 | #, c-format | ||
| 2855 | msgid "CRITICAL - no connection to '%s' (%s).\n" | ||
| 2856 | msgstr "CRITIQUE - pas de connexion à '%s' (%s).\n" | ||
| 2857 | |||
| 2858 | #, fuzzy, c-format | ||
| 2859 | msgid " %s - database %s (%f sec.)|%s\n" | ||
| 2860 | msgstr " %s - base de données %s (%d sec.)|%s\n" | ||
| 2861 | |||
| 2862 | msgid "Critical threshold must be a positive integer" | ||
| 2863 | msgstr "Le seuil critique doit être un entier positif" | ||
| 2864 | |||
| 2865 | msgid "Warning threshold must be a positive integer" | ||
| 2866 | msgstr "Le seuil d'avertissement doit être un entier positif" | ||
| 2867 | |||
| 2868 | #, fuzzy | ||
| 2869 | msgid "Database name exceeds the maximum length" | ||
| 2870 | msgstr "Le nom de la base de données est invalide" | ||
| 2871 | |||
| 2872 | msgid "User name is not valid" | ||
| 2873 | msgstr "Le nom de l'utilisateur est invalide" | ||
| 2874 | |||
| 2875 | #, c-format | ||
| 2876 | msgid "Test whether a PostgreSQL Database is accepting connections." | ||
| 2877 | msgstr "Teste si une base de données Postgresql accepte les connections." | ||
| 2878 | |||
| 2879 | msgid "Database to check " | ||
| 2880 | msgstr "" | ||
| 2881 | |||
| 2882 | #, fuzzy, c-format | ||
| 2883 | msgid "(default: %s)\n" | ||
| 2884 | msgstr "(Défaut: %d)\n" | ||
| 2885 | |||
| 2886 | msgid "Login name of user" | ||
| 2887 | msgstr "Le nom d'un utilisateur" | ||
| 2888 | |||
| 2889 | msgid "Password (BIG SECURITY ISSUE)" | ||
| 2890 | msgstr "" | ||
| 2891 | |||
| 2892 | msgid "Connection parameters (keyword = value), see below" | ||
| 2893 | msgstr "" | ||
| 2894 | |||
| 2895 | msgid "SQL query to run. Only first column in first row will be read" | ||
| 2896 | msgstr "" | ||
| 2897 | |||
| 2898 | msgid "A name for the query, this string is used instead of the query" | ||
| 2899 | msgstr "" | ||
| 2900 | |||
| 2901 | msgid "in the long output of the plugin" | ||
| 2902 | msgstr "" | ||
| 2903 | |||
| 2904 | #, fuzzy | ||
| 2905 | msgid "SQL query value to result in warning status (double)" | ||
| 2906 | msgstr "Décalage résultant en un avertissement (secondes)" | ||
| 2907 | |||
| 2908 | #, fuzzy | ||
| 2909 | msgid "SQL query value to result in critical status (double)" | ||
| 2910 | msgstr "Décalage résultant en un état critique (secondes)" | ||
| 2911 | |||
| 2912 | msgid "All parameters are optional." | ||
| 2913 | msgstr "" | ||
| 2914 | |||
| 2915 | msgid "" | ||
| 2916 | "This plugin tests a PostgreSQL DBMS to determine whether it is active and" | ||
| 2917 | msgstr "" | ||
| 2918 | |||
| 2919 | msgid "accepting queries. In its current operation, it simply connects to the" | ||
| 2920 | msgstr "" | ||
| 2921 | |||
| 2922 | msgid "" | ||
| 2923 | "specified database, and then disconnects. If no database is specified, it" | ||
| 2924 | msgstr "" | ||
| 2925 | |||
| 2926 | msgid "" | ||
| 2927 | "connects to the template1 database, which is present in every functioning" | ||
| 2928 | msgstr "" | ||
| 2929 | |||
| 2930 | msgid "PostgreSQL DBMS." | ||
| 2931 | msgstr "" | ||
| 2932 | |||
| 2933 | msgid "If a query is specified using the -q option, it will be executed after" | ||
| 2934 | msgstr "" | ||
| 2935 | |||
| 2936 | msgid "connecting to the server. The result from the query has to be numeric." | ||
| 2937 | msgstr "" | ||
| 2938 | |||
| 2939 | msgid "" | ||
| 2940 | "Multiple SQL commands, separated by semicolon, are allowed but the result " | ||
| 2941 | msgstr "" | ||
| 2942 | |||
| 2943 | msgid "of the last command is taken into account only. The value of the first" | ||
| 2944 | msgstr "" | ||
| 2945 | |||
| 2946 | msgid "" | ||
| 2947 | "column in the first row is used as the check result. If a second column is" | ||
| 2948 | msgstr "" | ||
| 2949 | |||
| 2950 | msgid "present in the result set, this is added to the plugin output with a" | ||
| 2951 | msgstr "" | ||
| 2952 | |||
| 2953 | msgid "" | ||
| 2954 | "prefix of \"Extra Info:\". This information can be displayed in the system" | ||
| 2955 | msgstr "" | ||
| 2956 | |||
| 2957 | msgid "executing the plugin." | ||
| 2958 | msgstr "" | ||
| 2959 | |||
| 2960 | msgid "" | ||
| 2961 | "See the chapter \"Monitoring Database Activity\" of the PostgreSQL manual" | ||
| 2962 | msgstr "" | ||
| 2963 | |||
| 2964 | msgid "" | ||
| 2965 | "for details about how to access internal statistics of the database server." | ||
| 2966 | msgstr "" | ||
| 2967 | |||
| 2968 | msgid "" | ||
| 2969 | "For a list of available connection parameters which may be used with the -o" | ||
| 2970 | msgstr "" | ||
| 2971 | |||
| 2972 | msgid "" | ||
| 2973 | "command line option, see the documentation for PQconnectdb() in the chapter" | ||
| 2974 | msgstr "" | ||
| 2975 | |||
| 2976 | msgid "" | ||
| 2977 | "\"libpq - C Library\" of the PostgreSQL manual. For example, this may be" | ||
| 2978 | msgstr "" | ||
| 2979 | |||
| 2980 | msgid "" | ||
| 2981 | "used to specify a service name in pg_service.conf to be used for additional" | ||
| 2982 | msgstr "" | ||
| 2983 | |||
| 2984 | msgid "connection parameters: -o 'service=<name>' or to specify the SSL mode:" | ||
| 2985 | msgstr "" | ||
| 2986 | |||
| 2987 | msgid "-o 'sslmode=require'." | ||
| 2988 | msgstr "" | ||
| 2989 | |||
| 2990 | msgid "" | ||
| 2991 | "The plugin will connect to a local postmaster if no host is specified. To" | ||
| 2992 | msgstr "" | ||
| 2993 | "Ce plugin va se connecter sur un postmaster local si aucun hôte n'est " | ||
| 2994 | "spécifié." | ||
| 2995 | |||
| 2996 | msgid "" | ||
| 2997 | "connect to a remote host, be sure that the remote postmaster accepts TCP/IP" | ||
| 2998 | msgstr "" | ||
| 2999 | |||
| 3000 | msgid "connections (start the postmaster with the -i option)." | ||
| 3001 | msgstr "" | ||
| 3002 | |||
| 3003 | msgid "" | ||
| 3004 | "Typically, the monitoring user (unless the --logname option is used) should " | ||
| 3005 | "be" | ||
| 3006 | msgstr "" | ||
| 3007 | |||
| 3008 | msgid "" | ||
| 3009 | "able to connect to the database without a password. The plugin can also send" | ||
| 3010 | msgstr "" | ||
| 3011 | |||
| 3012 | msgid "a password, but no effort is made to obscure or encrypt the password." | ||
| 3013 | msgstr "" | ||
| 3014 | |||
| 3015 | #, c-format | ||
| 3016 | msgid "QUERY %s - %s: %s.\n" | ||
| 3017 | msgstr "" | ||
| 3018 | |||
| 3019 | msgid "Error with query" | ||
| 3020 | msgstr "" | ||
| 3021 | |||
| 3022 | #, fuzzy | ||
| 3023 | msgid "No rows returned" | ||
| 3024 | msgstr "Pas de données valides reçues" | ||
| 3025 | |||
| 3026 | #, fuzzy | ||
| 3027 | msgid "No columns returned" | ||
| 3028 | msgstr "Pas de données valides reçues" | ||
| 3029 | |||
| 3030 | #, fuzzy | ||
| 3031 | msgid "No data returned" | ||
| 3032 | msgstr "Pas de données valides reçues" | ||
| 3033 | |||
| 3034 | msgid "Is not a numeric" | ||
| 3035 | msgstr "" | ||
| 3036 | |||
| 3037 | #, fuzzy, c-format | ||
| 3038 | msgid "%s returned %f" | ||
| 3039 | msgstr ". %s renvoie %s" | ||
| 3040 | |||
| 3041 | #, fuzzy, c-format | ||
| 3042 | msgid "'%s' returned %f" | ||
| 3043 | msgstr ". %s renvoie %s" | ||
| 3044 | |||
| 3045 | msgid "CRITICAL - Could not interpret output from ping command\n" | ||
| 3046 | msgstr "CRITIQUE - Impossible d'interpréter le réponse de la commande ping\n" | ||
| 3047 | |||
| 3048 | #, c-format | ||
| 3049 | msgid "PING %s - %sPacket loss = %d%%" | ||
| 3050 | msgstr "PING %s - %s Paquets perdus = %d%%" | ||
| 3051 | |||
| 3052 | #, c-format | ||
| 3053 | msgid "PING %s - %sPacket loss = %d%%, RTA = %2.2f ms" | ||
| 3054 | msgstr "PING %s - %s Paquets perdus = %d%%, RTA = %2.2f ms" | ||
| 3055 | |||
| 3056 | msgid "Could not realloc() addresses\n" | ||
| 3057 | msgstr "Impossible de réallouer les adresses\n" | ||
| 3058 | |||
| 3059 | #, c-format | ||
| 3060 | msgid "<max_packets> (%s) must be a non-negative number\n" | ||
| 3061 | msgstr "<max_packets> (%s) doit être un nombre positif\n" | ||
| 3062 | |||
| 3063 | #, c-format | ||
| 3064 | msgid "<wpl> (%s) must be an integer percentage\n" | ||
| 3065 | msgstr "<wpl> (%s) doit être un pourcentage entier\n" | ||
| 3066 | |||
| 3067 | #, c-format | ||
| 3068 | msgid "<cpl> (%s) must be an integer percentage\n" | ||
| 3069 | msgstr "<cpl> (%s) doit être un pourcentage entier\n" | ||
| 3070 | |||
| 3071 | #, c-format | ||
| 3072 | msgid "<wrta> (%s) must be a non-negative number\n" | ||
| 3073 | msgstr "<wrta> (%s) doit être un nombre positif\n" | ||
| 3074 | |||
| 3075 | #, c-format | ||
| 3076 | msgid "<crta> (%s) must be a non-negative number\n" | ||
| 3077 | msgstr "<crta> (%s) doit être un nombre positif\n" | ||
| 3078 | |||
| 3079 | #, c-format | ||
| 3080 | msgid "" | ||
| 3081 | "%s: Warning threshold must be integer or percentage!\n" | ||
| 3082 | "\n" | ||
| 3083 | msgstr "%s: Le seuil d'avertissement doit être un entier ou un pourcentage!\n" | ||
| 3084 | |||
| 3085 | #, c-format | ||
| 3086 | msgid "<wrta> was not set\n" | ||
| 3087 | msgstr "<wrta> n'a pas été indiqué\n" | ||
| 3088 | |||
| 3089 | #, c-format | ||
| 3090 | msgid "<crta> was not set\n" | ||
| 3091 | msgstr "<crta> n'a pas été indiqué\n" | ||
| 3092 | |||
| 3093 | #, c-format | ||
| 3094 | msgid "<wpl> was not set\n" | ||
| 3095 | msgstr " <wpl> n'a pas été indiqué\n" | ||
| 3096 | |||
| 3097 | #, c-format | ||
| 3098 | msgid "<cpl> was not set\n" | ||
| 3099 | msgstr "<cpl> n'a pas été indiqué\n" | ||
| 3100 | |||
| 3101 | #, c-format | ||
| 3102 | msgid "<wrta> (%f) cannot be larger than <crta> (%f)\n" | ||
| 3103 | msgstr "<wrta> (%f) ne peut pas être plus large que <crta> (%f)\n" | ||
| 3104 | |||
| 3105 | #, c-format | ||
| 3106 | msgid "<wpl> (%d) cannot be larger than <cpl> (%d)\n" | ||
| 3107 | msgstr "<wpl> (%d) ne peut pas être plus large que <cpl> (%d)\n" | ||
| 3108 | |||
| 3109 | #, c-format | ||
| 3110 | msgid "Cannot open stderr for %s\n" | ||
| 3111 | msgstr "Impossible d'ouvrir le canal d'erreur standard pour %s\n" | ||
| 3112 | |||
| 3113 | msgid "System call sent warnings to stderr " | ||
| 3114 | msgstr "" | ||
| 3115 | "Les appel système enverront leurs messages d'avertissement vers le canal " | ||
| 3116 | "d'erreur standard" | ||
| 3117 | |||
| 3118 | #, fuzzy, c-format | ||
| 3119 | msgid "CRITICAL - Network Unreachable (%s)\n" | ||
| 3120 | msgstr "CRITIQUE - Le réseau est inaccessible (%s)" | ||
| 3121 | |||
| 3122 | #, fuzzy, c-format | ||
| 3123 | msgid "CRITICAL - Host Unreachable (%s)\n" | ||
| 3124 | msgstr "CRITIQUE - Hôte inaccessible (%s)" | ||
| 3125 | |||
| 3126 | #, fuzzy, c-format | ||
| 3127 | msgid "CRITICAL - Bogus ICMP: Port Unreachable (%s)\n" | ||
| 3128 | msgstr "CRITIQUE - Paquet ICMP incorrect: Port inaccessible (%s)" | ||
| 3129 | |||
| 3130 | #, fuzzy, c-format | ||
| 3131 | msgid "CRITICAL - Bogus ICMP: Protocol Unreachable (%s)\n" | ||
| 3132 | msgstr "CRITIQUE - Paquet ICMP incorrect: Protocole inaccessible (%s)" | ||
| 3133 | |||
| 3134 | #, fuzzy, c-format | ||
| 3135 | msgid "CRITICAL - Network Prohibited (%s)\n" | ||
| 3136 | msgstr "CRITIQUE - L'accès au réseau est interdit (%s)" | ||
| 3137 | |||
| 3138 | #, fuzzy, c-format | ||
| 3139 | msgid "CRITICAL - Host Prohibited (%s)\n" | ||
| 3140 | msgstr "CRITIQUE - L'accès a l'hôte est interdit (%s)" | ||
| 3141 | |||
| 3142 | #, fuzzy, c-format | ||
| 3143 | msgid "CRITICAL - Packet Filtered (%s)\n" | ||
| 3144 | msgstr "CRITIQUE - Paquet filtré (%s)" | ||
| 3145 | |||
| 3146 | #, fuzzy, c-format | ||
| 3147 | msgid "CRITICAL - Host not found (%s)\n" | ||
| 3148 | msgstr "CRITIQUE - Hôte non trouvé (%s)" | ||
| 3149 | |||
| 3150 | #, fuzzy, c-format | ||
| 3151 | msgid "CRITICAL - Time to live exceeded (%s)\n" | ||
| 3152 | msgstr "CRITIQUE - La durée de vie du paquet est dépassée (%s)" | ||
| 3153 | |||
| 3154 | #, fuzzy, c-format | ||
| 3155 | msgid "CRITICAL - Destination Unreachable (%s)\n" | ||
| 3156 | msgstr "CRITIQUE - Hôte inaccessible (%s)" | ||
| 3157 | |||
| 3158 | #, fuzzy | ||
| 3159 | msgid "Unable to realloc warn_text\n" | ||
| 3160 | msgstr "Impossible de réattribuer le texte d'avertissement" | ||
| 3161 | |||
| 3162 | #, c-format | ||
| 3163 | msgid "Use ping to check connection statistics for a remote host." | ||
| 3164 | msgstr "" | ||
| 3165 | "Utilise ping pour vérifier les statistiques de connections d'un hôte distant." | ||
| 3166 | |||
| 3167 | msgid "host to ping" | ||
| 3168 | msgstr "hôte à tester" | ||
| 3169 | |||
| 3170 | msgid "number of ICMP ECHO packets to send" | ||
| 3171 | msgstr "nombre de paquets ICMP Ã envoyer" | ||
| 3172 | |||
| 3173 | #, c-format | ||
| 3174 | msgid "(Default: %d)\n" | ||
| 3175 | msgstr "(Défaut: %d)\n" | ||
| 3176 | |||
| 3177 | msgid "show HTML in the plugin output (obsoleted by urlize)" | ||
| 3178 | msgstr "" | ||
| 3179 | |||
| 3180 | msgid "THRESHOLD is <rta>,<pl>% where <rta> is the round trip average travel" | ||
| 3181 | msgstr "" | ||
| 3182 | "Le seuil est <rta>,<pl>% où <rta> est le temps moyen pour l'aller retour (ms)" | ||
| 3183 | |||
| 3184 | msgid "time (ms) which triggers a WARNING or CRITICAL state, and <pl> is the" | ||
| 3185 | msgstr "qui déclenche un résultat AVERTISSEMENT ou CRITIQUE, et <pl> est le " | ||
| 3186 | |||
| 3187 | msgid "percentage of packet loss to trigger an alarm state." | ||
| 3188 | msgstr "pourcentage de paquets perdus pour déclencher une alarme." | ||
| 3189 | |||
| 3190 | msgid "" | ||
| 3191 | "This plugin uses the ping command to probe the specified host for packet loss" | ||
| 3192 | msgstr "" | ||
| 3193 | "Ce plugin utilise la commande ping pour vérifier l'hôte spécifié pour les " | ||
| 3194 | "pertes de paquets" | ||
| 3195 | |||
| 3196 | msgid "" | ||
| 3197 | "(percentage) and round trip average (milliseconds). It can produce HTML " | ||
| 3198 | "output" | ||
| 3199 | msgstr "" | ||
| 3200 | |||
| 3201 | msgid "" | ||
| 3202 | "linking to a traceroute CGI contributed by Ian Cass. The CGI can be found in" | ||
| 3203 | msgstr "" | ||
| 3204 | |||
| 3205 | msgid "the contrib area of the downloads section at http://www.nagios.org/" | ||
| 3206 | msgstr "" | ||
| 3207 | |||
| 3208 | #, c-format | ||
| 3209 | msgid "CMD: %s\n" | ||
| 3210 | msgstr "Commande: %s\n" | ||
| 3211 | |||
| 3212 | msgid "System call sent warnings to stderr" | ||
| 3213 | msgstr "" | ||
| 3214 | "L'appel système à retourné des avertissement vers le canal d'erreur standard" | ||
| 3215 | |||
| 3216 | #, c-format | ||
| 3217 | msgid "Not parseable: %s" | ||
| 3218 | msgstr "Impossible de parcourir les arguments: %s" | ||
| 3219 | |||
| 3220 | #, c-format | ||
| 3221 | msgid "Unable to read output\n" | ||
| 3222 | msgstr "Impossible de lire les données en entrée\n" | ||
| 3223 | |||
| 3224 | #, c-format | ||
| 3225 | msgid "%d warn out of " | ||
| 3226 | msgstr "%d avertissements sur" | ||
| 3227 | |||
| 3228 | #, c-format | ||
| 3229 | msgid "%d crit, %d warn out of " | ||
| 3230 | msgstr "%d crit, %d alertes sur " | ||
| 3231 | |||
| 3232 | #, c-format | ||
| 3233 | msgid " with %s" | ||
| 3234 | msgstr " avec %s" | ||
| 3235 | |||
| 3236 | msgid "Parent Process ID must be an integer!" | ||
| 3237 | msgstr "L'identifiant du processus parent doit être un entier!" | ||
| 3238 | |||
| 3239 | #, c-format | ||
| 3240 | msgid "%s%sSTATE = %s" | ||
| 3241 | msgstr "%s%sETAT = %s" | ||
| 3242 | |||
| 3243 | msgid "UID was not found" | ||
| 3244 | msgstr "L'UID n'a pas été trouvé" | ||
| 3245 | |||
| 3246 | msgid "User name was not found" | ||
| 3247 | msgstr "L'utilisateur n'a pas été trouvé" | ||
| 3248 | |||
| 3249 | #, c-format | ||
| 3250 | msgid "%s%scommand name '%s'" | ||
| 3251 | msgstr "%s%snom de la commande '%s'" | ||
| 3252 | |||
| 3253 | #, c-format | ||
| 3254 | msgid "%s%sexclude progs '%s'" | ||
| 3255 | msgstr "" | ||
| 3256 | |||
| 3257 | msgid "RSS must be an integer!" | ||
| 3258 | msgstr "RSS doit être un entier!" | ||
| 3259 | |||
| 3260 | msgid "VSZ must be an integer!" | ||
| 3261 | msgstr "VSZ doit être un entier!" | ||
| 3262 | |||
| 3263 | msgid "PCPU must be a float!" | ||
| 3264 | msgstr "PCPU doit être un nombre en virgule flottante!" | ||
| 3265 | |||
| 3266 | msgid "Metric must be one of PROCS, VSZ, RSS, CPU, ELAPSED!" | ||
| 3267 | msgstr "Metric doit être l'un des PROCS, VSZ, RSS, CPU, ELAPSED!" | ||
| 3268 | |||
| 3269 | msgid "" | ||
| 3270 | "Checks all processes and generates WARNING or CRITICAL states if the " | ||
| 3271 | "specified" | ||
| 3272 | msgstr "" | ||
| 3273 | |||
| 3274 | msgid "" | ||
| 3275 | "metric is outside the required threshold ranges. The metric defaults to " | ||
| 3276 | "number" | ||
| 3277 | msgstr "" | ||
| 3278 | |||
| 3279 | msgid "" | ||
| 3280 | "of processes. Search filters can be applied to limit the processes to check." | ||
| 3281 | msgstr "" | ||
| 3282 | |||
| 3283 | msgid "Generate warning state if metric is outside this range" | ||
| 3284 | msgstr "" | ||
| 3285 | |||
| 3286 | msgid "Generate critical state if metric is outside this range" | ||
| 3287 | msgstr "" | ||
| 3288 | |||
| 3289 | msgid "Check thresholds against metric. Valid types:" | ||
| 3290 | msgstr "" | ||
| 3291 | |||
| 3292 | msgid "PROCS - number of processes (default)" | ||
| 3293 | msgstr "PROCS - nombre de processus (défaut)" | ||
| 3294 | |||
| 3295 | msgid "VSZ - virtual memory size" | ||
| 3296 | msgstr "VSZ - taille mémoire virtuelle" | ||
| 3297 | |||
| 3298 | msgid "RSS - resident set memory size" | ||
| 3299 | msgstr "" | ||
| 3300 | |||
| 3301 | msgid "CPU - percentage CPU" | ||
| 3302 | msgstr "CPU - pourcentage du processeur" | ||
| 3303 | |||
| 3304 | msgid "ELAPSED - time elapsed in seconds" | ||
| 3305 | msgstr "ELAPSED - temps écoulé en secondes" | ||
| 3306 | |||
| 3307 | msgid "Extra information. Up to 3 verbosity levels" | ||
| 3308 | msgstr "informations supplémentaires. Jusqu'à 3 niveaux de verbosité" | ||
| 3309 | |||
| 3310 | msgid "Filter own process the traditional way by PID instead of /proc/pid/exe" | ||
| 3311 | msgstr "" | ||
| 3312 | |||
| 3313 | msgid "Only scan for processes that have, in the output of `ps`, one or" | ||
| 3314 | msgstr "" | ||
| 3315 | |||
| 3316 | msgid "more of the status flags you specify (for example R, Z, S, RS," | ||
| 3317 | msgstr "" | ||
| 3318 | |||
| 3319 | msgid "RSZDT, plus others based on the output of your 'ps' command)." | ||
| 3320 | msgstr "" | ||
| 3321 | |||
| 3322 | msgid "Only scan for children of the parent process ID indicated." | ||
| 3323 | msgstr "" | ||
| 3324 | |||
| 3325 | msgid "Only scan for processes with VSZ higher than indicated." | ||
| 3326 | msgstr "" | ||
| 3327 | |||
| 3328 | msgid "Only scan for processes with RSS higher than indicated." | ||
| 3329 | msgstr "" | ||
| 3330 | |||
| 3331 | msgid "Only scan for processes with PCPU higher than indicated." | ||
| 3332 | msgstr "" | ||
| 3333 | |||
| 3334 | msgid "Only scan for processes with user name or ID indicated." | ||
| 3335 | msgstr "" | ||
| 3336 | |||
| 3337 | msgid "Only scan for processes with args that contain STRING." | ||
| 3338 | msgstr "" | ||
| 3339 | |||
| 3340 | msgid "Only scan for processes with args that contain the regex STRING." | ||
| 3341 | msgstr "" | ||
| 3342 | |||
| 3343 | msgid "Only scan for exact matches of COMMAND (without path)." | ||
| 3344 | msgstr "" | ||
| 3345 | |||
| 3346 | msgid "Exclude processes which match this comma separated list" | ||
| 3347 | msgstr "" | ||
| 3348 | |||
| 3349 | msgid "Only scan for non kernel threads (works on Linux only)." | ||
| 3350 | msgstr "" | ||
| 3351 | |||
| 3352 | #, c-format | ||
| 3353 | msgid "" | ||
| 3354 | "\n" | ||
| 3355 | "RANGEs are specified 'min:max' or 'min:' or ':max' (or 'max'). If\n" | ||
| 3356 | "specified 'max:min', a warning status will be generated if the\n" | ||
| 3357 | "count is inside the specified range\n" | ||
| 3358 | "\n" | ||
| 3359 | msgstr "" | ||
| 3360 | "\n" | ||
| 3361 | "Les seuils sont spécifiés 'min:max' or 'min:' or ':max' (or 'max').\n" | ||
| 3362 | "Si spécifié 'max:min', un avertissement sera généré si le nombre\n" | ||
| 3363 | "est à l'intérieur du seuil\n" | ||
| 3364 | "\n" | ||
| 3365 | |||
| 3366 | #, c-format | ||
| 3367 | msgid "" | ||
| 3368 | "This plugin checks the number of currently running processes and\n" | ||
| 3369 | "generates WARNING or CRITICAL states if the process count is outside\n" | ||
| 3370 | "the specified threshold ranges. The process count can be filtered by\n" | ||
| 3371 | "process owner, parent process PID, current state (e.g., 'Z'), or may\n" | ||
| 3372 | "be the total number of running processes\n" | ||
| 3373 | "\n" | ||
| 3374 | msgstr "" | ||
| 3375 | "Ce plugin vérifie le nombre de processus actifs et génère un résultat \n" | ||
| 3376 | "AVERTISSEMENT ou CRITIQUE si le nombre de processus est au dessus du seuil\n" | ||
| 3377 | "spécifié. Le total des processus peut être filtré par propriétaire, " | ||
| 3378 | "processus parent,\n" | ||
| 3379 | "état actuel (ex: 'Z'), ou par le nombre de processus en cours d'exécution\n" | ||
| 3380 | "\n" | ||
| 3381 | |||
| 3382 | msgid "Warning if not two processes with command name portsentry." | ||
| 3383 | msgstr "" | ||
| 3384 | |||
| 3385 | msgid "Critical if < 2 or > 1024 processes" | ||
| 3386 | msgstr "" | ||
| 3387 | |||
| 3388 | msgid "Critical if not at least 1 process with command sshd" | ||
| 3389 | msgstr "" | ||
| 3390 | |||
| 3391 | msgid "Warning if > 1024 processes with command name sshd." | ||
| 3392 | msgstr "" | ||
| 3393 | |||
| 3394 | msgid "Critical if < 1 processes with command name sshd." | ||
| 3395 | msgstr "" | ||
| 3396 | |||
| 3397 | msgid "Warning alert if > 10 processes with command arguments containing" | ||
| 3398 | msgstr "" | ||
| 3399 | |||
| 3400 | msgid "'/usr/local/bin/perl' and owned by root" | ||
| 3401 | msgstr "" | ||
| 3402 | |||
| 3403 | msgid "Alert if VSZ of any processes over 50K or 100K" | ||
| 3404 | msgstr "" | ||
| 3405 | |||
| 3406 | msgid "Alert if CPU of any processes over 10% or 20%" | ||
| 3407 | msgstr "" | ||
| 3408 | |||
| 3409 | #, fuzzy | ||
| 3410 | msgid "Config file error\n" | ||
| 3411 | msgstr "Erreur dans le fichier de configuration" | ||
| 3412 | |||
| 3413 | #, fuzzy | ||
| 3414 | msgid "Out of Memory?\n" | ||
| 3415 | msgstr "Manque de Mémoire?" | ||
| 3416 | |||
| 3417 | #, fuzzy | ||
| 3418 | msgid "Invalid NAS-Identifier\n" | ||
| 3419 | msgstr "NAS-Identifier invalide" | ||
| 3420 | |||
| 3421 | #, c-format | ||
| 3422 | msgid "gethostname() failed!\n" | ||
| 3423 | msgstr "La commande gethostname() à échoué\n" | ||
| 3424 | |||
| 3425 | #, fuzzy | ||
| 3426 | msgid "Invalid NAS-IP-Address\n" | ||
| 3427 | msgstr "NAS-IP-Address invalide" | ||
| 3428 | |||
| 3429 | #, fuzzy | ||
| 3430 | msgid "Timeout\n" | ||
| 3431 | msgstr "Temps dépassé" | ||
| 3432 | |||
| 3433 | #, fuzzy | ||
| 3434 | msgid "Auth Error\n" | ||
| 3435 | msgstr "Erreur d'authentification" | ||
| 3436 | |||
| 3437 | #, fuzzy | ||
| 3438 | msgid "Auth Failed\n" | ||
| 3439 | msgstr "L'authentification à échoué" | ||
| 3440 | |||
| 3441 | #, fuzzy | ||
| 3442 | msgid "Bad Response\n" | ||
| 3443 | msgstr "Réponse invalide" | ||
| 3444 | |||
| 3445 | #, fuzzy | ||
| 3446 | msgid "Auth OK\n" | ||
| 3447 | msgstr "L'authentification à réussi" | ||
| 3448 | |||
| 3449 | #, c-format | ||
| 3450 | msgid "Unexpected result code %d" | ||
| 3451 | msgstr "Résultat inattendu: %d" | ||
| 3452 | |||
| 3453 | msgid "Number of retries must be a positive integer" | ||
| 3454 | msgstr "Le nombre d'essai doit être un entier positif" | ||
| 3455 | |||
| 3456 | msgid "User not specified" | ||
| 3457 | msgstr "L'utilisateur n'a pas été spécifié" | ||
| 3458 | |||
| 3459 | msgid "Password not specified" | ||
| 3460 | msgstr "Le mot de passe n'a pas été spécifié" | ||
| 3461 | |||
| 3462 | msgid "Configuration file not specified" | ||
| 3463 | msgstr "Le fichier de configuration n'a pas été spécifié" | ||
| 3464 | |||
| 3465 | msgid "Tests to see if a RADIUS server is accepting connections." | ||
| 3466 | msgstr "Teste si un serveur RADIUS accepte les connections." | ||
| 3467 | |||
| 3468 | msgid "The user to authenticate" | ||
| 3469 | msgstr "" | ||
| 3470 | |||
| 3471 | msgid "Password for authentication (SECURITY RISK)" | ||
| 3472 | msgstr "" | ||
| 3473 | |||
| 3474 | msgid "NAS identifier" | ||
| 3475 | msgstr "" | ||
| 3476 | |||
| 3477 | msgid "NAS IP Address" | ||
| 3478 | msgstr "Adresse IP NAS" | ||
| 3479 | |||
| 3480 | msgid "Configuration file" | ||
| 3481 | msgstr "Fichier de configuration" | ||
| 3482 | |||
| 3483 | msgid "Response string to expect from the server" | ||
| 3484 | msgstr "" | ||
| 3485 | |||
| 3486 | msgid "Number of times to retry a failed connection" | ||
| 3487 | msgstr "" | ||
| 3488 | |||
| 3489 | msgid "" | ||
| 3490 | "This plugin tests a RADIUS server to see if it is accepting connections." | ||
| 3491 | msgstr "" | ||
| 3492 | "Ce plugin teste un serveur RADIUS afin de vérifier si il accepte les " | ||
| 3493 | "connections." | ||
| 3494 | |||
| 3495 | msgid "" | ||
| 3496 | "The server to test must be specified in the invocation, as well as a user" | ||
| 3497 | msgstr "" | ||
| 3498 | |||
| 3499 | msgid "name and password. A configuration file must be present. The format of" | ||
| 3500 | msgstr "" | ||
| 3501 | |||
| 3502 | msgid "" | ||
| 3503 | "the configuration file is described in the radiusclient library sources." | ||
| 3504 | msgstr "" | ||
| 3505 | |||
| 3506 | msgid "The password option presents a substantial security issue because the" | ||
| 3507 | msgstr "" | ||
| 3508 | |||
| 3509 | msgid "" | ||
| 3510 | "password can possibly be determined by careful watching of the command line" | ||
| 3511 | msgstr "" | ||
| 3512 | |||
| 3513 | msgid "in a process listing. This risk is exacerbated because the plugin will" | ||
| 3514 | msgstr "" | ||
| 3515 | |||
| 3516 | msgid "" | ||
| 3517 | "typically be executed at regular predictable intervals. Please be sure that" | ||
| 3518 | msgstr "" | ||
| 3519 | |||
| 3520 | msgid "the password used does not allow access to sensitive system resources." | ||
| 3521 | msgstr "" | ||
| 3522 | |||
| 3523 | #, c-format | ||
| 3524 | msgid "Unable to connect to %s on port %d\n" | ||
| 3525 | msgstr "Impossible de se connecter à %s sur le port %d\n" | ||
| 3526 | |||
| 3527 | #, c-format | ||
| 3528 | msgid "No data received from %s\n" | ||
| 3529 | msgstr "Pas de données reçues de %s\n" | ||
| 3530 | |||
| 3531 | msgid "Invalid REAL response received from host" | ||
| 3532 | msgstr "Réponses REAL invalide reçue de l'hôte" | ||
| 3533 | |||
| 3534 | #, c-format | ||
| 3535 | msgid "Invalid REAL response received from host on port %d\n" | ||
| 3536 | msgstr "Réponses REAL invalide reçue de l'hôte sur le port %d\n" | ||
| 3537 | |||
| 3538 | #, c-format | ||
| 3539 | msgid "No data received from host\n" | ||
| 3540 | msgstr "Pas de données reçues de l'hôte\n" | ||
| 3541 | |||
| 3542 | #, c-format | ||
| 3543 | msgid "REAL %s - %d second response time\n" | ||
| 3544 | msgstr "REAL %s - %d secondes de temps de réponse\n" | ||
| 3545 | |||
| 3546 | msgid "Warning time must be a positive integer" | ||
| 3547 | msgstr "Le seuil d'avertissement doit être un entier positif" | ||
| 3548 | |||
| 3549 | msgid "Critical time must be a positive integer" | ||
| 3550 | msgstr "Le seuil critique doit être un entier positif" | ||
| 3551 | |||
| 3552 | msgid "You must provide a server to check" | ||
| 3553 | msgstr "Vous devez fournir un serveur à vérifier" | ||
| 3554 | |||
| 3555 | msgid "This plugin tests the REAL service on the specified host." | ||
| 3556 | msgstr "Ce plugin teste le service REAL sur l'hôte spécifié." | ||
| 3557 | |||
| 3558 | msgid "Connect to this url" | ||
| 3559 | msgstr "" | ||
| 3560 | |||
| 3561 | #, c-format | ||
| 3562 | msgid "String to expect in first line of server response (default: %s)\n" | ||
| 3563 | msgstr "" | ||
| 3564 | "Texte attendu dans la première ligne de réponse du serveur (défaut: %s)\n" | ||
| 3565 | |||
| 3566 | msgid "This plugin will attempt to open an RTSP connection with the host." | ||
| 3567 | msgstr "Ce plugin va essayer d'ouvrir un connexion RTSP avec l'hôte." | ||
| 3568 | |||
| 3569 | msgid "Successful connects return STATE_OK, refusals and timeouts return" | ||
| 3570 | msgstr "" | ||
| 3571 | |||
| 3572 | msgid "" | ||
| 3573 | "STATE_CRITICAL, other errors return STATE_UNKNOWN. Successful connects," | ||
| 3574 | msgstr "" | ||
| 3575 | |||
| 3576 | msgid "" | ||
| 3577 | "but incorrect response messages from the host result in STATE_WARNING return" | ||
| 3578 | msgstr "" | ||
| 3579 | |||
| 3580 | msgid "values." | ||
| 3581 | msgstr "" | ||
| 3582 | |||
| 3583 | #, c-format | ||
| 3584 | msgid "malloc() failed!\n" | ||
| 3585 | msgstr "l'allocation mémoire à échoué!\n" | ||
| 3586 | |||
| 3587 | #, c-format | ||
| 3588 | msgid "CRITICAL - Cannot create SSL context.\n" | ||
| 3589 | msgstr "CRITIQUE - Impossible de créer le contexte SSL.\n" | ||
| 3590 | |||
| 3591 | #, c-format | ||
| 3592 | msgid "recv() failed\n" | ||
| 3593 | msgstr "La commande recv() à échoué\n" | ||
| 3594 | |||
| 3595 | #, c-format | ||
| 3596 | msgid "WARNING - TLS not supported by server\n" | ||
| 3597 | msgstr "AVERTISSEMENT: - TLS n'est pas supporté par ce serveur\n" | ||
| 3598 | |||
| 3599 | #, c-format | ||
| 3600 | msgid "Server does not support STARTTLS\n" | ||
| 3601 | msgstr "Le serveur ne supporte pas STARTTLS\n" | ||
| 3602 | |||
| 3603 | msgid "SMTP UNKNOWN - Cannot send EHLO command via TLS." | ||
| 3604 | msgstr "" | ||
| 3605 | |||
| 3606 | #, c-format | ||
| 3607 | msgid "sent %s" | ||
| 3608 | msgstr "envoyé %s" | ||
| 3609 | |||
| 3610 | msgid "SMTP UNKNOWN - Cannot read EHLO response via TLS." | ||
| 3611 | msgstr "" | ||
| 3612 | |||
| 3613 | #, c-format | ||
| 3614 | msgid "Invalid SMTP response received from host: %s\n" | ||
| 3615 | msgstr "Réponse SMTP reçue de l'hôte invalide: %s\n" | ||
| 3616 | |||
| 3617 | #, c-format | ||
| 3618 | msgid "Invalid SMTP response received from host on port %d: %s\n" | ||
| 3619 | msgstr "Réponse SMTP reçue de l'hôte sur le port %d invalide: %s\n" | ||
| 3620 | |||
| 3621 | #, c-format | ||
| 3622 | msgid "Could Not Compile Regular Expression" | ||
| 3623 | msgstr "Impossible de compiler l'expression rationnelle" | ||
| 3624 | |||
| 3625 | #, c-format | ||
| 3626 | msgid "SMTP %s - Invalid response '%s' to command '%s'\n" | ||
| 3627 | msgstr "SMTP %s - réponse invalide de '%s' à la commande '%s'\n" | ||
| 3628 | |||
| 3629 | #, c-format | ||
| 3630 | msgid "Execute Error: %s\n" | ||
| 3631 | msgstr "Erreur d'exécution: %s\n" | ||
| 3632 | |||
| 3633 | msgid "no authuser specified, " | ||
| 3634 | msgstr "Pas d'utilisateur pour l'authentification spécifié, " | ||
| 3635 | |||
| 3636 | msgid "no authpass specified, " | ||
| 3637 | msgstr "pas de mot de passe spécifié, " | ||
| 3638 | |||
| 3639 | #, c-format | ||
| 3640 | msgid "sent %s\n" | ||
| 3641 | msgstr "envoyé %s\n" | ||
| 3642 | |||
| 3643 | msgid "recv() failed after AUTH LOGIN, " | ||
| 3644 | msgstr "recv() à échoué après AUTH LOGIN, " | ||
| 3645 | |||
| 3646 | #, c-format | ||
| 3647 | msgid "received %s\n" | ||
| 3648 | msgstr "reçu %s\n" | ||
| 3649 | |||
| 3650 | msgid "invalid response received after AUTH LOGIN, " | ||
| 3651 | msgstr "Réponse invalide reçue après AUTH LOGIN, " | ||
| 3652 | |||
| 3653 | msgid "recv() failed after sending authuser, " | ||
| 3654 | msgstr "La commande recv() a échoué après authuser, " | ||
| 3655 | |||
| 3656 | msgid "invalid response received after authuser, " | ||
| 3657 | msgstr "Réponse invalide reçue après authuser, " | ||
| 3658 | |||
| 3659 | msgid "recv() failed after sending authpass, " | ||
| 3660 | msgstr "la commande recv() à échoué après authpass, " | ||
| 3661 | |||
| 3662 | msgid "invalid response received after authpass, " | ||
| 3663 | msgstr "Réponse invalide reçue après authpass, " | ||
| 3664 | |||
| 3665 | msgid "only authtype LOGIN is supported, " | ||
| 3666 | msgstr "seul la méthode d'authentification LOGIN est supportée, " | ||
| 3667 | |||
| 3668 | #, c-format | ||
| 3669 | msgid "SMTP %s - %s%.3f sec. response time%s%s|%s\n" | ||
| 3670 | msgstr "SMTP %s - %s%.3f sec. de temps de réponse%s%s|%s\n" | ||
| 3671 | |||
| 3672 | #, c-format | ||
| 3673 | msgid "Could not realloc() units [%d]\n" | ||
| 3674 | msgstr "Impossible de réallouer des unités [%d]\n" | ||
| 3675 | |||
| 3676 | #, fuzzy | ||
| 3677 | msgid "Critical time must be a positive" | ||
| 3678 | msgstr "Le seuil critique doit être un entier positif" | ||
| 3679 | |||
| 3680 | #, fuzzy | ||
| 3681 | msgid "Warning time must be a positive" | ||
| 3682 | msgstr "Le seuil d'avertissement doit être un entier positif" | ||
| 3683 | |||
| 3684 | msgid "SSL support not available - install OpenSSL and recompile" | ||
| 3685 | msgstr "SSL n'est pas disponible - installer OpenSSL et recompilez" | ||
| 3686 | |||
| 3687 | msgid "Set either -s/--ssl/--tls or -S/--starttls" | ||
| 3688 | msgstr "Définissez -s/--ssl/--tls ou -S/--starttls" | ||
| 3689 | |||
| 3690 | #, c-format | ||
| 3691 | msgid "Connection closed by server before sending QUIT command\n" | ||
| 3692 | msgstr "" | ||
| 3693 | |||
| 3694 | #, c-format | ||
| 3695 | msgid "recv() failed after QUIT." | ||
| 3696 | msgstr "recv() à échoué après QUIT." | ||
| 3697 | |||
| 3698 | #, c-format | ||
| 3699 | msgid "Connection reset by peer." | ||
| 3700 | msgstr "" | ||
| 3701 | |||
| 3702 | msgid "This plugin will attempt to open an SMTP connection with the host." | ||
| 3703 | msgstr "Ce plugin va essayer d'ouvrir un connexion SMTP avec l'hôte." | ||
| 3704 | |||
| 3705 | #, c-format | ||
| 3706 | msgid " String to expect in first line of server response (default: '%s')\n" | ||
| 3707 | msgstr "" | ||
| 3708 | " Texte attendu dans la première ligne de réponse du serveur (défaut: " | ||
| 3709 | "'%s')\n" | ||
| 3710 | |||
| 3711 | msgid "SMTP command (may be used repeatedly)" | ||
| 3712 | msgstr "Commande SMTP (peut être utilisé plusieurs fois)" | ||
| 3713 | |||
| 3714 | msgid "Expected response to command (may be used repeatedly)" | ||
| 3715 | msgstr "" | ||
| 3716 | |||
| 3717 | msgid "FROM-address to include in MAIL command, required by Exchange 2000" | ||
| 3718 | msgstr "" | ||
| 3719 | |||
| 3720 | msgid "FQDN used for HELO" | ||
| 3721 | msgstr "" | ||
| 3722 | |||
| 3723 | msgid "Use PROXY protocol prefix for the connection." | ||
| 3724 | msgstr "Utiliser le préfixe du protocole PROXY pour la connexion." | ||
| 3725 | |||
| 3726 | msgid "Minimum number of days a certificate has to be valid." | ||
| 3727 | msgstr "Nombre de jours minimum pour que le certificat soit valide." | ||
| 3728 | |||
| 3729 | #, fuzzy | ||
| 3730 | msgid "Use SSL/TLS for the connection." | ||
| 3731 | msgstr "Utiliser SSL/TLS pour la connexion." | ||
| 3732 | |||
| 3733 | #, c-format | ||
| 3734 | msgid " Sets default port to %d.\n" | ||
| 3735 | msgstr " Définit le port par défaut à %d.\n" | ||
| 3736 | |||
| 3737 | msgid "Use STARTTLS for the connection." | ||
| 3738 | msgstr "Utiliser STARTTLS pour la connexion." | ||
| 3739 | |||
| 3740 | msgid "SMTP AUTH type to check (default none, only LOGIN supported)" | ||
| 3741 | msgstr "" | ||
| 3742 | |||
| 3743 | msgid "SMTP AUTH username" | ||
| 3744 | msgstr "" | ||
| 3745 | |||
| 3746 | msgid "SMTP AUTH password" | ||
| 3747 | msgstr "" | ||
| 3748 | |||
| 3749 | msgid "Send LHLO instead of HELO/EHLO" | ||
| 3750 | msgstr "" | ||
| 3751 | |||
| 3752 | msgid "Ignore failure when sending QUIT command to server" | ||
| 3753 | msgstr "" | ||
| 3754 | |||
| 3755 | msgid "STATE_CRITICAL, other errors return STATE_UNKNOWN. Successful" | ||
| 3756 | msgstr "" | ||
| 3757 | |||
| 3758 | msgid "connects, but incorrect response messages from the host result in" | ||
| 3759 | msgstr "" | ||
| 3760 | |||
| 3761 | msgid "STATE_WARNING return values." | ||
| 3762 | msgstr "" | ||
| 3763 | |||
| 3764 | msgid "Cannot malloc" | ||
| 3765 | msgstr "" | ||
| 3766 | |||
| 3767 | #, c-format | ||
| 3768 | msgid "External command error: %s\n" | ||
| 3769 | msgstr "Erreur d'exécution de commande externe: %s\n" | ||
| 3770 | |||
| 3771 | #, c-format | ||
| 3772 | msgid "External command error with no output (return code: %d)\n" | ||
| 3773 | msgstr "" | ||
| 3774 | |||
| 3775 | #, fuzzy, c-format | ||
| 3776 | msgid "No valid data returned (%s)\n" | ||
| 3777 | msgstr "Pas de données valides reçues" | ||
| 3778 | |||
| 3779 | msgid "Time duration between plugin calls is invalid" | ||
| 3780 | msgstr "" | ||
| 3781 | |||
| 3782 | msgid "Cannot asprintf()" | ||
| 3783 | msgstr "" | ||
| 3784 | |||
| 3785 | #, fuzzy | ||
| 3786 | msgid "Cannot realloc()" | ||
| 3787 | msgstr "Impossible de réallouer des unités\n" | ||
| 3788 | |||
| 3789 | msgid "No previous data to calculate rate - assume okay" | ||
| 3790 | msgstr "" | ||
| 3791 | |||
| 3792 | msgid "Retries interval must be a positive integer" | ||
| 3793 | msgstr "L'intervalle pour les essais doit être un entier positif" | ||
| 3794 | |||
| 3795 | #, fuzzy | ||
| 3796 | msgid "Exit status must be a positive integer" | ||
| 3797 | msgstr "Maxbytes doit être un entier positif" | ||
| 3798 | |||
| 3799 | #, c-format | ||
| 3800 | msgid "Could not reallocate labels[%d]" | ||
| 3801 | msgstr "Impossible de réallouer des labels[%d]" | ||
| 3802 | |||
| 3803 | msgid "Could not reallocate labels\n" | ||
| 3804 | msgstr "Impossible de réallouer des labels\n" | ||
| 3805 | |||
| 3806 | #, c-format | ||
| 3807 | msgid "Could not reallocate units [%d]\n" | ||
| 3808 | msgstr "Impossible de réallouer des unités [%d]\n" | ||
| 3809 | |||
| 3810 | msgid "Could not realloc() units\n" | ||
| 3811 | msgstr "Impossible de réallouer des unités\n" | ||
| 3812 | |||
| 3813 | #, fuzzy | ||
| 3814 | msgid "Rate multiplier must be a positive integer" | ||
| 3815 | msgstr "La taille du paquet doit être un entier positif" | ||
| 3816 | |||
| 3817 | msgid "No host specified\n" | ||
| 3818 | msgstr "Pas d'hôte spécifié\n" | ||
| 3819 | |||
| 3820 | msgid "No OIDs specified\n" | ||
| 3821 | msgstr "Pas de compteur spécifié\n" | ||
| 3822 | |||
| 3823 | #, c-format | ||
| 3824 | msgid "Required parameter: %s\n" | ||
| 3825 | msgstr "" | ||
| 3826 | |||
| 3827 | msgid "Invalid seclevel" | ||
| 3828 | msgstr "" | ||
| 3829 | |||
| 3830 | msgid "Invalid SNMP version" | ||
| 3831 | msgstr "Version de SNMP invalide" | ||
| 3832 | |||
| 3833 | msgid "Unbalanced quotes\n" | ||
| 3834 | msgstr "Guillemets manquants\n" | ||
| 3835 | |||
| 3836 | #, c-format | ||
| 3837 | msgid "multiplier set (%.1f), but input is not a number: %s" | ||
| 3838 | msgstr "" | ||
| 3839 | |||
| 3840 | msgid "Check status of remote machines and obtain system information via SNMP" | ||
| 3841 | msgstr "" | ||
| 3842 | "Vérifie l'état des machines distantes et obtient l'information système via " | ||
| 3843 | "SNMP" | ||
| 3844 | |||
| 3845 | msgid "Use SNMP GETNEXT instead of SNMP GET" | ||
| 3846 | msgstr "Utiliser SNMP GETNEXT au lieu de SNMP GET" | ||
| 3847 | |||
| 3848 | msgid "SNMP protocol version" | ||
| 3849 | msgstr "Version du protocole SNMP" | ||
| 3850 | |||
| 3851 | #, fuzzy | ||
| 3852 | msgid "SNMPv3 context" | ||
| 3853 | msgstr "Nom d'utilisateur SNMPv3" | ||
| 3854 | |||
| 3855 | msgid "SNMPv3 securityLevel" | ||
| 3856 | msgstr "Niveau de sécurité SNMPv3 (securityLevel)" | ||
| 3857 | |||
| 3858 | msgid "SNMPv3 auth proto" | ||
| 3859 | msgstr "Protocole d'authentification SNMPv3" | ||
| 3860 | |||
| 3861 | msgid "SNMPv3 priv proto (default DES)" | ||
| 3862 | msgstr "" | ||
| 3863 | |||
| 3864 | msgid "Optional community string for SNMP communication" | ||
| 3865 | msgstr "Communauté optionnelle pour la communication SNMP" | ||
| 3866 | |||
| 3867 | msgid "default is" | ||
| 3868 | msgstr "défaut:" | ||
| 3869 | |||
| 3870 | msgid "SNMPv3 username" | ||
| 3871 | msgstr "Nom d'utilisateur SNMPv3" | ||
| 3872 | |||
| 3873 | msgid "SNMPv3 authentication password" | ||
| 3874 | msgstr "Mot de passe d'authentification SNMPv3" | ||
| 3875 | |||
| 3876 | msgid "SNMPv3 privacy password" | ||
| 3877 | msgstr "Mot de passe de confidentialité SNMPv3" | ||
| 3878 | |||
| 3879 | msgid "Object identifier(s) or SNMP variables whose value you wish to query" | ||
| 3880 | msgstr "" | ||
| 3881 | |||
| 3882 | msgid "" | ||
| 3883 | "List of MIBS to be loaded (default = none if using numeric OIDs or 'ALL'" | ||
| 3884 | msgstr "" | ||
| 3885 | |||
| 3886 | msgid "for symbolic OIDs.)" | ||
| 3887 | msgstr "" | ||
| 3888 | |||
| 3889 | msgid "Delimiter to use when parsing returned data. Default is" | ||
| 3890 | msgstr "" | ||
| 3891 | |||
| 3892 | msgid "Any data on the right hand side of the delimiter is considered" | ||
| 3893 | msgstr "" | ||
| 3894 | |||
| 3895 | msgid "to be the data that should be used in the evaluation." | ||
| 3896 | msgstr "" | ||
| 3897 | |||
| 3898 | msgid "If the check returns a 0 length string or NULL value" | ||
| 3899 | msgstr "" | ||
| 3900 | |||
| 3901 | msgid "This option allows you to choose what status you want it to exit" | ||
| 3902 | msgstr "" | ||
| 3903 | |||
| 3904 | msgid "Excluding this option renders the default exit of 3(STATE_UNKNOWN)" | ||
| 3905 | msgstr "" | ||
| 3906 | |||
| 3907 | msgid "0 = OK" | ||
| 3908 | msgstr "" | ||
| 3909 | |||
| 3910 | #, fuzzy | ||
| 3911 | msgid "1 = WARNING" | ||
| 3912 | msgstr "AVERTISSEMENT" | ||
| 3913 | |||
| 3914 | #, fuzzy | ||
| 3915 | msgid "2 = CRITICAL" | ||
| 3916 | msgstr "CRITIQUE" | ||
| 3917 | |||
| 3918 | #, fuzzy | ||
| 3919 | msgid "3 = UNKNOWN" | ||
| 3920 | msgstr "INCONNU" | ||
| 3921 | |||
| 3922 | msgid "Warning threshold range(s)" | ||
| 3923 | msgstr "Valeurs pour le seuil d'avertissement" | ||
| 3924 | |||
| 3925 | msgid "Critical threshold range(s)" | ||
| 3926 | msgstr "Valeurs pour le seuil critique" | ||
| 3927 | |||
| 3928 | msgid "Enable rate calculation. See 'Rate Calculation' below" | ||
| 3929 | msgstr "" | ||
| 3930 | |||
| 3931 | msgid "" | ||
| 3932 | "Converts rate per second. For example, set to 60 to convert to per minute" | ||
| 3933 | msgstr "" | ||
| 3934 | |||
| 3935 | msgid "Add/subtract the specified OFFSET to numeric sensor data" | ||
| 3936 | msgstr "" | ||
| 3937 | |||
| 3938 | msgid "Return OK state (for that OID) if STRING is an exact match" | ||
| 3939 | msgstr "" | ||
| 3940 | |||
| 3941 | msgid "" | ||
| 3942 | "Return OK state (for that OID) if extended regular expression REGEX matches" | ||
| 3943 | msgstr "" | ||
| 3944 | |||
| 3945 | msgid "" | ||
| 3946 | "Return OK state (for that OID) if case-insensitive extended REGEX matches" | ||
| 3947 | msgstr "" | ||
| 3948 | |||
| 3949 | msgid "Invert search result (CRITICAL if found)" | ||
| 3950 | msgstr "" | ||
| 3951 | |||
| 3952 | msgid "Prefix label for output from plugin" | ||
| 3953 | msgstr "" | ||
| 3954 | |||
| 3955 | msgid "Units label(s) for output data (e.g., 'sec.')." | ||
| 3956 | msgstr "" | ||
| 3957 | |||
| 3958 | msgid "Separates output on multiple OID requests" | ||
| 3959 | msgstr "" | ||
| 3960 | |||
| 3961 | msgid "Multiplies current value, 0 < n < 1 works as divider, defaults to 1" | ||
| 3962 | msgstr "" | ||
| 3963 | |||
| 3964 | msgid "C-style format string for float values (see option -M)" | ||
| 3965 | msgstr "" | ||
| 3966 | |||
| 3967 | msgid "" | ||
| 3968 | "NOTE the final timeout value is calculated using this formula: " | ||
| 3969 | "timeout_interval * retries + 5" | ||
| 3970 | msgstr "" | ||
| 3971 | |||
| 3972 | #, fuzzy | ||
| 3973 | msgid "Number of retries to be used in the requests, default: " | ||
| 3974 | msgstr "Le nombre d'essai pour les requêtes" | ||
| 3975 | |||
| 3976 | msgid "Label performance data with OIDs instead of --label's" | ||
| 3977 | msgstr "" | ||
| 3978 | |||
| 3979 | msgid "Tell snmpget to not print errors encountered when parsing MIB files" | ||
| 3980 | msgstr "" | ||
| 3981 | |||
| 3982 | msgid "" | ||
| 3983 | "This plugin uses the 'snmpget' command included with the NET-SNMP package." | ||
| 3984 | msgstr "" | ||
| 3985 | |||
| 3986 | msgid "" | ||
| 3987 | "if you don't have the package installed, you will need to download it from" | ||
| 3988 | msgstr "" | ||
| 3989 | "Si vous n'avez pas le programme installé, vous devrez le télécharger depuis" | ||
| 3990 | |||
| 3991 | msgid "http://net-snmp.sourceforge.net before you can use this plugin." | ||
| 3992 | msgstr "http://net-snmp.sourceforge.net avant de pouvoir utiliser ce plugin." | ||
| 3993 | |||
| 3994 | #, fuzzy | ||
| 3995 | msgid "" | ||
| 3996 | "- Multiple OIDs (and labels) may be indicated by a comma or space-delimited " | ||
| 3997 | msgstr "" | ||
| 3998 | "- Des OIDs multiples peuvent être séparées par des virgules ou des espaces" | ||
| 3999 | |||
| 4000 | #, fuzzy | ||
| 4001 | msgid "list (lists with internal spaces must be quoted)." | ||
| 4002 | msgstr "(Les liste avec espaces doivent être entre guillemets). Max:" | ||
| 4003 | |||
| 4004 | msgid "" | ||
| 4005 | "- When checking multiple OIDs, separate ranges by commas like '-w " | ||
| 4006 | "1:10,1:,:20'" | ||
| 4007 | msgstr "" | ||
| 4008 | |||
| 4009 | msgid "- Note that only one string and one regex may be checked at present" | ||
| 4010 | msgstr "" | ||
| 4011 | |||
| 4012 | msgid "" | ||
| 4013 | "- All evaluation methods other than PR, STR, and SUBSTR expect that the value" | ||
| 4014 | msgstr "" | ||
| 4015 | |||
| 4016 | msgid "returned from the SNMP query is an unsigned integer." | ||
| 4017 | msgstr "" | ||
| 4018 | |||
| 4019 | msgid "Rate Calculation:" | ||
| 4020 | msgstr "" | ||
| 4021 | |||
| 4022 | msgid "In many places, SNMP returns counters that are only meaningful when" | ||
| 4023 | msgstr "" | ||
| 4024 | |||
| 4025 | msgid "calculating the counter difference since the last check. check_snmp" | ||
| 4026 | msgstr "" | ||
| 4027 | |||
| 4028 | msgid "saves the last state information in a file so that the rate per second" | ||
| 4029 | msgstr "" | ||
| 4030 | |||
| 4031 | msgid "can be calculated. Use the --rate option to save state information." | ||
| 4032 | msgstr "" | ||
| 4033 | |||
| 4034 | msgid "" | ||
| 4035 | "On the first run, there will be no prior state - this will return with OK." | ||
| 4036 | msgstr "" | ||
| 4037 | |||
| 4038 | msgid "The state is uniquely determined by the arguments to the plugin, so" | ||
| 4039 | msgstr "" | ||
| 4040 | |||
| 4041 | msgid "changing the arguments will create a new state file." | ||
| 4042 | msgstr "" | ||
| 4043 | |||
| 4044 | msgid "Port number must be a positive integer" | ||
| 4045 | msgstr "Le numéro du port doit être un nombre entier positif" | ||
| 4046 | |||
| 4047 | #, c-format | ||
| 4048 | msgid "Server answer: %s" | ||
| 4049 | msgstr "Réponse du serveur: %s" | ||
| 4050 | |||
| 4051 | #, fuzzy, c-format | ||
| 4052 | msgid "SSH CRITICAL - %s (protocol %s) version mismatch, expected '%s'\n" | ||
| 4053 | msgstr "" | ||
| 4054 | "SSH AVERTISSEMENT - %s (protocole %s) différence de version, attendu'%s'\n" | ||
| 4055 | |||
| 4056 | #, fuzzy, c-format | ||
| 4057 | msgid "" | ||
| 4058 | "SSH CRITICAL - %s (protocol %s) protocol version mismatch, expected '%s'\n" | ||
| 4059 | msgstr "" | ||
| 4060 | "SSH AVERTISSEMENT - %s (protocole %s) différence de version, attendu'%s'\n" | ||
| 4061 | |||
| 4062 | #, fuzzy, c-format | ||
| 4063 | msgid "SSH OK - %s (protocol %s) | %s\n" | ||
| 4064 | msgstr "SSH OK - %s (protocole %s)\n" | ||
| 4065 | |||
| 4066 | msgid "Try to connect to an SSH server at specified server and port" | ||
| 4067 | msgstr "Essaye de se connecter à un serveur SSH précisé à un port précis" | ||
| 4068 | |||
| 4069 | #, fuzzy | ||
| 4070 | msgid "" | ||
| 4071 | "Alert if string doesn't match expected server version (ex: OpenSSH_3.9p1)" | ||
| 4072 | msgstr "" | ||
| 4073 | "AVERTISSEMENT si la chaîne ne correspond pas à la version précisée (ex: " | ||
| 4074 | "OpenSSH_3.9p1)" | ||
| 4075 | |||
| 4076 | #, fuzzy | ||
| 4077 | msgid "Alert if protocol doesn't match expected protocol version (ex: 2.0)" | ||
| 4078 | msgstr "" | ||
| 4079 | "AVERTISSEMENT si la chaîne ne correspond pas à la version précisée (ex: " | ||
| 4080 | "OpenSSH_3.9p1)" | ||
| 4081 | |||
| 4082 | #, c-format | ||
| 4083 | msgid "Command: %s\n" | ||
| 4084 | msgstr "Commande: %s\n" | ||
| 4085 | |||
| 4086 | #, c-format | ||
| 4087 | msgid "Format: %s\n" | ||
| 4088 | msgstr "Format: %s\n" | ||
| 4089 | |||
| 4090 | #, c-format | ||
| 4091 | msgid "total=%.0f, used=%.0f, free=%.0f\n" | ||
| 4092 | msgstr "total=%.0f, utilisé=%.0f, libre=%.0ff\n" | ||
| 4093 | |||
| 4094 | #, c-format | ||
| 4095 | msgid "total=%.0f, free=%.0f\n" | ||
| 4096 | msgstr "total=%.0f, libre=%.0f\n" | ||
| 4097 | |||
| 4098 | msgid "Error getting swap devices\n" | ||
| 4099 | msgstr "" | ||
| 4100 | |||
| 4101 | msgid "SWAP OK: No swap devices defined\n" | ||
| 4102 | msgstr "SWAP OK: Pas de périphériques swap définis\n" | ||
| 4103 | |||
| 4104 | msgid "swapctl failed: " | ||
| 4105 | msgstr "swapctl à échoué:" | ||
| 4106 | |||
| 4107 | msgid "Error in swapctl call\n" | ||
| 4108 | msgstr "" | ||
| 4109 | |||
| 4110 | #, fuzzy, c-format | ||
| 4111 | msgid "SWAP %s - %d%% free (%dMB out of %dMB) %s|" | ||
| 4112 | msgstr "SWAP %s - %d%% libre (%d MB sur un total de %d MB) %s|" | ||
| 4113 | |||
| 4114 | #, fuzzy | ||
| 4115 | msgid "Warning threshold percentage must be <= 100!" | ||
| 4116 | msgstr "Le seuil d'avertissement doit être un entier positif" | ||
| 4117 | |||
| 4118 | #, fuzzy | ||
| 4119 | msgid "Warning threshold be positive integer or percentage!" | ||
| 4120 | msgstr "Le seuil d'avertissement doit être un entier ou un pourcentage!" | ||
| 4121 | |||
| 4122 | #, fuzzy | ||
| 4123 | msgid "Critical threshold percentage must be <= 100!" | ||
| 4124 | msgstr "le seuil critique doit être un entier positif" | ||
| 4125 | |||
| 4126 | #, fuzzy | ||
| 4127 | msgid "Critical threshold be positive integer or percentage!" | ||
| 4128 | msgstr "Le seuil critique doit être un entier ou un pourcentage!" | ||
| 4129 | |||
| 4130 | #, fuzzy | ||
| 4131 | msgid "" | ||
| 4132 | "no-swap result must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) " | ||
| 4133 | "or integer (0-3)." | ||
| 4134 | msgstr "" | ||
| 4135 | "Le résultat de temps dépassé doit être un nom d'état valide (OK, WARNING, " | ||
| 4136 | "CRITICAL, UNKNOWN) ou un nombre entier (0-3)." | ||
| 4137 | |||
| 4138 | #, fuzzy | ||
| 4139 | msgid "Warning should be more than critical" | ||
| 4140 | msgstr "" | ||
| 4141 | "Le pourcentage d'avertissement doit être plus important que le pourcentage " | ||
| 4142 | "critique" | ||
| 4143 | |||
| 4144 | msgid "Check swap space on local machine." | ||
| 4145 | msgstr "Vérifie l'espace swap sur la machine locale." | ||
| 4146 | |||
| 4147 | msgid "" | ||
| 4148 | "Exit with WARNING status if less than INTEGER bytes of swap space are free" | ||
| 4149 | msgstr "" | ||
| 4150 | "Sortir avec un résultat AVERTISSEMENT si moins de X octets de mémoire " | ||
| 4151 | "virtuelle sont libres" | ||
| 4152 | |||
| 4153 | msgid "Exit with WARNING status if less than PERCENT of swap space is free" | ||
| 4154 | msgstr "" | ||
| 4155 | "Sortir avec un résultat AVERTISSEMENT si moins de X pour cent de mémoire " | ||
| 4156 | "virtuelle est libre" | ||
| 4157 | |||
| 4158 | msgid "" | ||
| 4159 | "Exit with CRITICAL status if less than INTEGER bytes of swap space are free" | ||
| 4160 | msgstr "" | ||
| 4161 | "Sortir avec un résultat CRITIQUE si moins de X octets de mémoire virtuelle " | ||
| 4162 | "sont libres" | ||
| 4163 | |||
| 4164 | msgid "Exit with CRITICAL status if less than PERCENT of swap space is free" | ||
| 4165 | msgstr "" | ||
| 4166 | "Sortir avec un résultat CRITIQUE si moins de X pour cent de mémoire " | ||
| 4167 | "virtuelle est libre" | ||
| 4168 | |||
| 4169 | msgid "Conduct comparisons for all swap partitions, one by one" | ||
| 4170 | msgstr "Vérifier chacune des partitions de mémoire virtuelle séparément" | ||
| 4171 | |||
| 4172 | msgid "" | ||
| 4173 | "Resulting state when there is no swap regardless of thresholds. Default:" | ||
| 4174 | msgstr "" | ||
| 4175 | |||
| 4176 | #, fuzzy | ||
| 4177 | msgid "" | ||
| 4178 | "Both INTEGER and PERCENT thresholds can be specified, they are all checked." | ||
| 4179 | msgstr "Les seuils d'alerte et critiques peuvent être spécifiés avec -w et -c." | ||
| 4180 | |||
| 4181 | msgid "On AIX, if -a is specified, uses lsps -a, otherwise uses lsps -s." | ||
| 4182 | msgstr "" | ||
| 4183 | "Sur AIX, si -a est spécifié, le plugin utilise lsps -a, sinon il utilise " | ||
| 4184 | "lsps -s." | ||
| 4185 | |||
| 4186 | msgid "CRITICAL - Generic check_tcp called with unknown service\n" | ||
| 4187 | msgstr "" | ||
| 4188 | "CRITIQUE -check_tcp version générique utilisé avec un service inconnu\n" | ||
| 4189 | |||
| 4190 | msgid "With UDP checks, a send/expect string must be specified." | ||
| 4191 | msgstr "" | ||
| 4192 | "Avec la surveillance UDP, une chaîne d'envoi et un chaîne de réponse doit " | ||
| 4193 | "être spécifiée." | ||
| 4194 | |||
| 4195 | msgid "No arguments found" | ||
| 4196 | msgstr "Pas de paramètres" | ||
| 4197 | |||
| 4198 | msgid "Maxbytes must be a positive integer" | ||
| 4199 | msgstr "Maxbytes doit être un entier positif" | ||
| 4200 | |||
| 4201 | msgid "Refuse must be one of ok, warn, crit" | ||
| 4202 | msgstr "Refuse doit être parmis ok, warn, crit" | ||
| 4203 | |||
| 4204 | msgid "Mismatch must be one of ok, warn, crit" | ||
| 4205 | msgstr "Mismatch doit être parmis ok, warn, crit" | ||
| 4206 | |||
| 4207 | msgid "Delay must be a positive integer" | ||
| 4208 | msgstr "Delay doit être un entier positif" | ||
| 4209 | |||
| 4210 | msgid "You must provide a server address" | ||
| 4211 | msgstr "Vous devez fournir une adresse serveur" | ||
| 4212 | |||
| 4213 | msgid "Invalid hostname, address or socket" | ||
| 4214 | msgstr "Adresse/Nom/Socket invalide" | ||
| 4215 | |||
| 4216 | #, c-format | ||
| 4217 | msgid "" | ||
| 4218 | "This plugin tests %s connections with the specified host (or unix socket).\n" | ||
| 4219 | "\n" | ||
| 4220 | msgstr "" | ||
| 4221 | "Ce plugin teste %s connections avec l'hôte spécifié (ou socket unix).\n" | ||
| 4222 | "\n" | ||
| 4223 | |||
| 4224 | #, fuzzy | ||
| 4225 | msgid "" | ||
| 4226 | "Can use \\n, \\r, \\t or \\\\ in send or quit string. Must come before send " | ||
| 4227 | "or quit option" | ||
| 4228 | msgstr "" | ||
| 4229 | "Permet d'utiliser \\n, \\r, \\t ou \\ dans la chaîne de caractères send ou " | ||
| 4230 | "quit. Doit être placé avant ces dernières." | ||
| 4231 | |||
| 4232 | msgid "Default: nothing added to send, \\r\\n added to end of quit" | ||
| 4233 | msgstr "" | ||
| 4234 | "Par défaut: Rien n'est ajouté à send, \\r\\n est ajouté à la fin de quit" | ||
| 4235 | |||
| 4236 | msgid "String to send to the server" | ||
| 4237 | msgstr "Chaîne de caractères à envoyer au serveur" | ||
| 4238 | |||
| 4239 | msgid "String to expect in server response" | ||
| 4240 | msgstr "Chaîne de caractères à attendre en réponse" | ||
| 4241 | |||
| 4242 | msgid "(may be repeated)" | ||
| 4243 | msgstr "(peut être utilisé plusieurs fois)" | ||
| 4244 | |||
| 4245 | msgid "All expect strings need to occur in server response. Default is any" | ||
| 4246 | msgstr "" | ||
| 4247 | "Toutes les chaînes attendus (expect) doivent être repérés dans la réponse. " | ||
| 4248 | "Par défaut, n'importe laquelle suffit." | ||
| 4249 | |||
| 4250 | msgid "String to send server to initiate a clean close of the connection" | ||
| 4251 | msgstr "Chaîne de caractères à envoyer pour fermer gracieusement la connection" | ||
| 4252 | |||
| 4253 | msgid "Accept TCP refusals with states ok, warn, crit (default: crit)" | ||
| 4254 | msgstr "" | ||
| 4255 | |||
| 4256 | msgid "" | ||
| 4257 | "Accept expected string mismatches with states ok, warn, crit (default: warn)" | ||
| 4258 | msgstr "" | ||
| 4259 | |||
| 4260 | msgid "Hide output from TCP socket" | ||
| 4261 | msgstr "Cacher la réponse provenant du socket TCP" | ||
| 4262 | |||
| 4263 | msgid "Close connection once more than this number of bytes are received" | ||
| 4264 | msgstr "" | ||
| 4265 | |||
| 4266 | msgid "Seconds to wait between sending string and polling for response" | ||
| 4267 | msgstr "" | ||
| 4268 | |||
| 4269 | msgid "1st is #days for warning, 2nd is critical (if not specified - 0)." | ||
| 4270 | msgstr "" | ||
| 4271 | |||
| 4272 | msgid "Use SSL for the connection." | ||
| 4273 | msgstr "" | ||
| 4274 | |||
| 4275 | #, fuzzy | ||
| 4276 | msgid "SSL server_name" | ||
| 4277 | msgstr "Nom d'utilisateur SNMPv3" | ||
| 4278 | |||
| 4279 | #, c-format | ||
| 4280 | msgid "TIME UNKNOWN - could not connect to server %s, port %d\n" | ||
| 4281 | msgstr "TEMPS INCONNU - impossible de se connecter au serveur %s, au port %d\n" | ||
| 4282 | |||
| 4283 | #, c-format | ||
| 4284 | msgid "TIME UNKNOWN - could not send UDP request to server %s, port %d\n" | ||
| 4285 | msgstr "" | ||
| 4286 | "TEMPS INCONNU - impossible d'envoyer une requête UDP au serveur %s, au port " | ||
| 4287 | "%d\n" | ||
| 4288 | |||
| 4289 | #, c-format | ||
| 4290 | msgid "TIME UNKNOWN - no data received from server %s, port %d\n" | ||
| 4291 | msgstr "TEMPS INCONNU - pas de données reçues du serveur %s, du port %d\n" | ||
| 4292 | |||
| 4293 | #, c-format | ||
| 4294 | msgid "TIME %s - %d second response time|%s\n" | ||
| 4295 | msgstr "TEMPS %s - %d secondes de temps de réponse|%s\n" | ||
| 4296 | |||
| 4297 | #, c-format | ||
| 4298 | msgid "TIME %s - %lu second time difference|%s %s\n" | ||
| 4299 | msgstr "TEMPS %s - %lu secondes de différence|%s %s\n" | ||
| 4300 | |||
| 4301 | msgid "Warning thresholds must be a positive integer" | ||
| 4302 | msgstr "Les seuils d'avertissement doivent être un entier positif" | ||
| 4303 | |||
| 4304 | msgid "Critical thresholds must be a positive integer" | ||
| 4305 | msgstr "Les seuils critiques doivent être un entier positif" | ||
| 4306 | |||
| 4307 | msgid "This plugin will check the time on the specified host." | ||
| 4308 | msgstr "Ce plugin va vérifier l'heure sur l'hôte spécifié." | ||
| 4309 | |||
| 4310 | msgid "Use UDP to connect, not TCP" | ||
| 4311 | msgstr "" | ||
| 4312 | |||
| 4313 | msgid "Time difference (sec.) necessary to result in a warning status" | ||
| 4314 | msgstr "" | ||
| 4315 | |||
| 4316 | msgid "Time difference (sec.) necessary to result in a critical status" | ||
| 4317 | msgstr "" | ||
| 4318 | |||
| 4319 | msgid "Response time (sec.) necessary to result in warning status" | ||
| 4320 | msgstr "" | ||
| 4321 | |||
| 4322 | msgid "Response time (sec.) necessary to result in critical status" | ||
| 4323 | msgstr "" | ||
| 4324 | |||
| 4325 | msgid "On Battery, Low Battery" | ||
| 4326 | msgstr "Sur Batterie, Batterie faible" | ||
| 4327 | |||
| 4328 | msgid "Online" | ||
| 4329 | msgstr "En marche" | ||
| 4330 | |||
| 4331 | msgid "On Battery" | ||
| 4332 | msgstr "Sur Batterie" | ||
| 4333 | |||
| 4334 | msgid ", Low Battery" | ||
| 4335 | msgstr ", Batterie faible" | ||
| 4336 | |||
| 4337 | msgid ", Calibrating" | ||
| 4338 | msgstr ", Calibration" | ||
| 4339 | |||
| 4340 | msgid ", Replace Battery" | ||
| 4341 | msgstr ", Remplacer la batterie" | ||
| 4342 | |||
| 4343 | msgid ", On Bypass" | ||
| 4344 | msgstr ", Sur Secteur" | ||
| 4345 | |||
| 4346 | msgid ", Overload" | ||
| 4347 | msgstr ", Surcharge" | ||
| 4348 | |||
| 4349 | msgid ", Trimming" | ||
| 4350 | msgstr ", En Test" | ||
| 4351 | |||
| 4352 | msgid ", Boosting" | ||
| 4353 | msgstr "" | ||
| 4354 | |||
| 4355 | msgid ", Charging" | ||
| 4356 | msgstr ", En charge" | ||
| 4357 | |||
| 4358 | msgid ", Discharging" | ||
| 4359 | msgstr ", Déchargement" | ||
| 4360 | |||
| 4361 | msgid ", Unknown" | ||
| 4362 | msgstr ", Inconnu" | ||
| 4363 | |||
| 4364 | msgid "UPS does not support any available options\n" | ||
| 4365 | msgstr "L'UPS ne supporte aucune des options disponibles\n" | ||
| 4366 | |||
| 4367 | msgid "Invalid response received from host" | ||
| 4368 | msgstr "Réponse invalide reçue de l'hôte" | ||
| 4369 | |||
| 4370 | msgid "UPS name to long for buffer" | ||
| 4371 | msgstr "" | ||
| 4372 | |||
| 4373 | #, c-format | ||
| 4374 | msgid "CRITICAL - no such UPS '%s' on that host\n" | ||
| 4375 | msgstr "CRITIQUE - pas d'UPS '%s' sur cet hôte\n" | ||
| 4376 | |||
| 4377 | msgid "CRITICAL - UPS data is stale" | ||
| 4378 | msgstr "CRITIQUE - les données de l'ups ne sont plus valables" | ||
| 4379 | |||
| 4380 | #, c-format | ||
| 4381 | msgid "Unknown error: %s\n" | ||
| 4382 | msgstr "Erreur inconnue: %s\n" | ||
| 4383 | |||
| 4384 | msgid "Error: unable to parse variable" | ||
| 4385 | msgstr "Erreur: impossible de lire la variable" | ||
| 4386 | |||
| 4387 | msgid "Unrecognized UPS variable" | ||
| 4388 | msgstr "Variable d'UPS non reconnue" | ||
| 4389 | |||
| 4390 | msgid "Error : no UPS indicated" | ||
| 4391 | msgstr "Erreur: pas d'UPS indiqué" | ||
| 4392 | |||
| 4393 | msgid "" | ||
| 4394 | "This plugin tests the UPS service on the specified host. Network UPS Tools" | ||
| 4395 | msgstr "Ce plugin teste le service UPS sur l'hôte spécifié. Network UPS Tools" | ||
| 4396 | |||
| 4397 | msgid "from www.networkupstools.org must be running for this plugin to work." | ||
| 4398 | msgstr "" | ||
| 4399 | "de www.networkupstools.org doit s'exécuter sur l'hôte pour que ce plugin " | ||
| 4400 | "fonctionne." | ||
| 4401 | |||
| 4402 | msgid "Name of UPS" | ||
| 4403 | msgstr "" | ||
| 4404 | |||
| 4405 | msgid "Output of temperatures in Celsius" | ||
| 4406 | msgstr "Affichage des températures en Celsius" | ||
| 4407 | |||
| 4408 | msgid "Valid values for STRING are" | ||
| 4409 | msgstr "Les variables valides pour STRING sont" | ||
| 4410 | |||
| 4411 | msgid "" | ||
| 4412 | "This plugin attempts to determine the status of a UPS (Uninterruptible Power" | ||
| 4413 | msgstr "" | ||
| 4414 | |||
| 4415 | msgid "" | ||
| 4416 | "Supply) on a local or remote host. If the UPS is online or calibrating, the" | ||
| 4417 | msgstr "" | ||
| 4418 | |||
| 4419 | msgid "" | ||
| 4420 | "plugin will return an OK state. If the battery is on it will return a WARNING" | ||
| 4421 | msgstr "" | ||
| 4422 | |||
| 4423 | msgid "" | ||
| 4424 | "state. If the UPS is off or has a low battery the plugin will return a " | ||
| 4425 | "CRITICAL" | ||
| 4426 | msgstr "" | ||
| 4427 | |||
| 4428 | msgid "" | ||
| 4429 | "You may also specify a variable to check (such as temperature, utility " | ||
| 4430 | "voltage," | ||
| 4431 | msgstr "" | ||
| 4432 | |||
| 4433 | msgid "" | ||
| 4434 | "battery load, etc.) as well as warning and critical thresholds for the value" | ||
| 4435 | msgstr "" | ||
| 4436 | |||
| 4437 | msgid "" | ||
| 4438 | "of that variable. If the remote host has multiple UPS that are being " | ||
| 4439 | "monitored" | ||
| 4440 | msgstr "" | ||
| 4441 | |||
| 4442 | msgid "you will have to use the --ups option to specify which UPS to check." | ||
| 4443 | msgstr "" | ||
| 4444 | |||
| 4445 | msgid "" | ||
| 4446 | "This plugin requires that the UPSD daemon distributed with Russell Kroll's" | ||
| 4447 | msgstr "" | ||
| 4448 | |||
| 4449 | msgid "" | ||
| 4450 | "Network UPS Tools be installed on the remote host. If you do not have the" | ||
| 4451 | msgstr "" | ||
| 4452 | |||
| 4453 | msgid "package installed on your system, you can download it from" | ||
| 4454 | msgstr "" | ||
| 4455 | |||
| 4456 | msgid "http://www.networkupstools.org" | ||
| 4457 | msgstr "" | ||
| 4458 | |||
| 4459 | #, fuzzy, c-format | ||
| 4460 | msgid "Could not enumerate RD sessions: %d\n" | ||
| 4461 | msgstr "Impossible d'utiliser le protocole version %d\n" | ||
| 4462 | |||
| 4463 | #, c-format | ||
| 4464 | msgid "# users=%d" | ||
| 4465 | msgstr "# utilisateurs=%d" | ||
| 4466 | |||
| 4467 | msgid "Unable to read output" | ||
| 4468 | msgstr "Impossible de lire les données en entrée" | ||
| 4469 | |||
| 4470 | #, c-format | ||
| 4471 | msgid "USERS %s - %d users currently logged in |%s\n" | ||
| 4472 | msgstr "UTILISATEURS %s - %d utilisateurs actuellement connectés sur |%s\n" | ||
| 4473 | |||
| 4474 | msgid "This plugin checks the number of users currently logged in on the local" | ||
| 4475 | msgstr "" | ||
| 4476 | "Ce plugin vérifie le nombre d'utilisateurs actuellement connecté sur le " | ||
| 4477 | "système local" | ||
| 4478 | |||
| 4479 | msgid "" | ||
| 4480 | "system and generates an error if the number exceeds the thresholds specified." | ||
| 4481 | msgstr "et génère une erreur si le nombre excède le seuil spécifié." | ||
| 4482 | |||
| 4483 | msgid "Set WARNING status if more than INTEGER users are logged in" | ||
| 4484 | msgstr "" | ||
| 4485 | "Sortir avec un résultat AVERTISSEMENT si plus de INTEGER utilisateurs sont " | ||
| 4486 | "connectés" | ||
| 4487 | |||
| 4488 | msgid "Set CRITICAL status if more than INTEGER users are logged in" | ||
| 4489 | msgstr "" | ||
| 4490 | "Sortir avec un résultat CRITIQUE si plus de INTEGER utilisateurs sont " | ||
| 4491 | "connectés" | ||
| 4492 | |||
| 4493 | msgid "" | ||
| 4494 | "DEPRECATION WARNING: the -q switch (quiet output) is no longer \"quiet\"." | ||
| 4495 | msgstr "" | ||
| 4496 | |||
| 4497 | msgid "Nagios-compatible output is now always returned." | ||
| 4498 | msgstr "" | ||
| 4499 | |||
| 4500 | msgid "SMART commands are broken and have been disabled (See Notes in --help)." | ||
| 4501 | msgstr "" | ||
| 4502 | |||
| 4503 | msgid "" | ||
| 4504 | "DEPRECATION WARNING: the -n switch (Nagios-compatible output) is now the" | ||
| 4505 | msgstr "" | ||
| 4506 | |||
| 4507 | #, fuzzy | ||
| 4508 | msgid "default and will be removed from future releases." | ||
| 4509 | msgstr "" | ||
| 4510 | "Note: nslookup est obsolète et pourra être retiré dans les prochaines " | ||
| 4511 | "versions." | ||
| 4512 | |||
| 4513 | #, c-format | ||
| 4514 | msgid "CRITICAL - Couldn't open device %s: %s\n" | ||
| 4515 | msgstr "Critique - Impossible d'ouvrir le périphérique %s: %s\n" | ||
| 4516 | |||
| 4517 | #, c-format | ||
| 4518 | msgid "CRITICAL - SMART_CMD_ENABLE\n" | ||
| 4519 | msgstr "CRITIQUE - SMART_CMD_ENABLE\n" | ||
| 4520 | |||
| 4521 | #, c-format | ||
| 4522 | msgid "CRITICAL - SMART_READ_VALUES: %s\n" | ||
| 4523 | msgstr "CRITIQUE - SMART_READ_VALUES: %s\n" | ||
| 4524 | |||
| 4525 | #, c-format | ||
| 4526 | msgid "CRITICAL - %d Harddrive PreFailure%cDetected! %d/%d tests failed.\n" | ||
| 4527 | msgstr "" | ||
| 4528 | "CRITIQUE - %d État de pré-panne %c Détecté! %d/%d les tests on échoués.\n" | ||
| 4529 | |||
| 4530 | #, c-format | ||
| 4531 | msgid "WARNING - %d Harddrive Advisor%s Detected. %d/%d tests failed.\n" | ||
| 4532 | msgstr "" | ||
| 4533 | "AVERTISSEMENT - %d État de pré-panne %s Détecté! %d/%d les tests on " | ||
| 4534 | "échoués.\n" | ||
| 4535 | |||
| 4536 | #, c-format | ||
| 4537 | msgid "OK - Operational (%d/%d tests passed)\n" | ||
| 4538 | msgstr "OK - En fonctionnement (%d/%d les tests on été réussi)\n" | ||
| 4539 | |||
| 4540 | #, c-format | ||
| 4541 | msgid "ERROR - Status '%d' unknown. %d/%d tests passed\n" | ||
| 4542 | msgstr "ERREUR - État '%d' inconnu. %d/%d les tests on réussi\n" | ||
| 4543 | |||
| 4544 | #, c-format | ||
| 4545 | msgid "OffLineStatus=%d {%s}, AutoOffLine=%s, OffLineTimeout=%d minutes\n" | ||
| 4546 | msgstr "" | ||
| 4547 | "Etat Hors Ligne=%d {%s}, Hors Ligne Auto=%s, Temps avant arrêt=%d minutes\n" | ||
| 4548 | |||
| 4549 | #, c-format | ||
| 4550 | msgid "OffLineCapability=%d {%s %s %s}\n" | ||
| 4551 | msgstr "Capacité Hors Ligne=%d {%s %s %s}\n" | ||
| 4552 | |||
| 4553 | #, c-format | ||
| 4554 | msgid "SmartRevision=%d, CheckSum=%d, SmartCapability=%d {%s %s}\n" | ||
| 4555 | msgstr "Révision Smart=%d, Somme de contrôle=%d, Capacité Smart=%d {%s %s}\n" | ||
| 4556 | |||
| 4557 | #, c-format | ||
| 4558 | msgid "CRITICAL - %s: %s\n" | ||
| 4559 | msgstr "CRITIQUE - %s: %s\n" | ||
| 4560 | |||
| 4561 | #, fuzzy, c-format | ||
| 4562 | msgid "OK - Command sent (%s)\n" | ||
| 4563 | msgstr "Commande: %s\n" | ||
| 4564 | |||
| 4565 | #, c-format | ||
| 4566 | msgid "CRITICAL - SMART_READ_THRESHOLDS: %s\n" | ||
| 4567 | msgstr "CRITIQUE - SMART_READ_THRESHOLDS: %s\n" | ||
| 4568 | |||
| 4569 | #, c-format | ||
| 4570 | msgid "" | ||
| 4571 | "This plugin checks a local hard drive with the (Linux specific) SMART " | ||
| 4572 | "interface [http://smartlinux.sourceforge.net/smart/index.php]." | ||
| 4573 | msgstr "" | ||
| 4574 | "Ce plugin vérifie un disque dur local à l'aide de l'interface SMART (pour " | ||
| 4575 | "Linux) [http://smartlinux.sourceforge.net/smart/index.php]." | ||
| 4576 | |||
| 4577 | msgid "Select device DEVICE" | ||
| 4578 | msgstr "" | ||
| 4579 | |||
| 4580 | msgid "" | ||
| 4581 | "Note: if the device is specified without this option, any further option will" | ||
| 4582 | msgstr "" | ||
| 4583 | |||
| 4584 | msgid "be ignored." | ||
| 4585 | msgstr "" | ||
| 4586 | |||
| 4587 | msgid "" | ||
| 4588 | "The SMART command modes (-i/--immediate, -0/--auto-off and -1/--auto-on) were" | ||
| 4589 | msgstr "" | ||
| 4590 | |||
| 4591 | msgid "" | ||
| 4592 | "broken in an underhand manner and have been disabled. You can use smartctl" | ||
| 4593 | msgstr "" | ||
| 4594 | |||
| 4595 | msgid "instead:" | ||
| 4596 | msgstr "" | ||
| 4597 | |||
| 4598 | msgid "-0/--auto-off: use \"smartctl --offlineauto=off\"" | ||
| 4599 | msgstr "" | ||
| 4600 | |||
| 4601 | msgid "-1/--auto-on: use \"smartctl --offlineauto=on\"" | ||
| 4602 | msgstr "" | ||
| 4603 | |||
| 4604 | msgid "-i/--immediate: use \"smartctl --test=offline\"" | ||
| 4605 | msgstr "" | ||
| 4606 | |||
| 4607 | msgid "No data returned from command\n" | ||
| 4608 | msgstr "Pas de données reçues de la commande\n" | ||
| 4609 | |||
| 4610 | msgid "" | ||
| 4611 | "Timeout result must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) " | ||
| 4612 | "or integer (0-3)." | ||
| 4613 | msgstr "" | ||
| 4614 | "Le résultat de temps dépassé doit être un nom d'état valide (OK, WARNING, " | ||
| 4615 | "CRITICAL, UNKNOWN) ou un nombre entier (0-3)." | ||
| 4616 | |||
| 4617 | msgid "" | ||
| 4618 | "Ok must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer " | ||
| 4619 | "(0-3)." | ||
| 4620 | msgstr "" | ||
| 4621 | "Ok doit être un nom d'état valide (OK, WARNING, CRITICAL, UNKNOWN) ou un " | ||
| 4622 | "nombre entier (0-3)." | ||
| 4623 | |||
| 4624 | msgid "" | ||
| 4625 | "Warning must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or " | ||
| 4626 | "integer (0-3)." | ||
| 4627 | msgstr "" | ||
| 4628 | "Warning doit être un nom d'état valide (OK, WARNING, CRITICAL, UNKNOWN) ou " | ||
| 4629 | "un nombre entier (0-3)." | ||
| 4630 | |||
| 4631 | msgid "" | ||
| 4632 | "Critical must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or " | ||
| 4633 | "integer (0-3)." | ||
| 4634 | msgstr "" | ||
| 4635 | "Critical doit être un nom d'état valide (OK, WARNING, CRITICAL, UNKNOWN) ou " | ||
| 4636 | "un nombre entier (0-3)." | ||
| 4637 | |||
| 4638 | msgid "" | ||
| 4639 | "Unknown must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or " | ||
| 4640 | "integer (0-3)." | ||
| 4641 | msgstr "" | ||
| 4642 | "Unknown doit être un nom d'état valide (OK, WARNING, CRITICAL, UNKNOWN) ou " | ||
| 4643 | "un nombre entier (0-3)." | ||
| 4644 | |||
| 4645 | msgid "Require path to command" | ||
| 4646 | msgstr "Chemin vers la commande requis" | ||
| 4647 | |||
| 4648 | msgid "" | ||
| 4649 | "Negates the status of a plugin (returns OK for CRITICAL and vice-versa)." | ||
| 4650 | msgstr "" | ||
| 4651 | "Inverse le statut d'un plugin (retourne OK pour CRITIQUE et vice-versa)." | ||
| 4652 | |||
| 4653 | msgid "Additional switches can be used to control which state becomes what." | ||
| 4654 | msgstr "" | ||
| 4655 | "Des options additionnelles peuvent être utilisées pour contrôler quel état " | ||
| 4656 | "devient quoi." | ||
| 4657 | |||
| 4658 | msgid "Keep timeout longer than the plugin timeout to retain CRITICAL status." | ||
| 4659 | msgstr "" | ||
| 4660 | "Utilisez un délai de réponse plus long que celui du plugin afin de conserver " | ||
| 4661 | "les résultats CRITIQUE" | ||
| 4662 | |||
| 4663 | msgid "Custom result on Negate timeouts; see below for STATUS definition\n" | ||
| 4664 | msgstr "" | ||
| 4665 | |||
| 4666 | #, c-format | ||
| 4667 | msgid "" | ||
| 4668 | " STATUS can be 'OK', 'WARNING', 'CRITICAL' or 'UNKNOWN' without single\n" | ||
| 4669 | msgstr "" | ||
| 4670 | " STATUS peut être 'OK', 'WARNING', 'CRITICAL' ou 'UNKNOWN' sans les " | ||
| 4671 | "simple\n" | ||
| 4672 | |||
| 4673 | #, c-format | ||
| 4674 | msgid "" | ||
| 4675 | " quotes. Numeric values are accepted. If nothing is specified, permutes\n" | ||
| 4676 | msgstr " quotes. Les valeurs numériques sont acceptées. Si rien n'est\n" | ||
| 4677 | |||
| 4678 | #, c-format | ||
| 4679 | msgid " OK and CRITICAL.\n" | ||
| 4680 | msgstr " spécifié, inverse OK et CRITIQUE.\n" | ||
| 4681 | |||
| 4682 | #, c-format | ||
| 4683 | msgid "" | ||
| 4684 | " Substitute output text as well. Will only substitute text in CAPITALS\n" | ||
| 4685 | msgstr "" | ||
| 4686 | |||
| 4687 | msgid "Run check_ping and invert result. Must use full path to plugin" | ||
| 4688 | msgstr "" | ||
| 4689 | "Execute check_ping et inverse le résultat. Le chemin complet du plug-in doit " | ||
| 4690 | "être spécifié" | ||
| 4691 | |||
| 4692 | msgid "This will return OK instead of WARNING and UNKNOWN instead of CRITICAL" | ||
| 4693 | msgstr "" | ||
| 4694 | "Ceci retournera OK au lieu de AVERTISSEMENT et INCONNU au lieu de CRITIQUE" | ||
| 4695 | |||
| 4696 | msgid "" | ||
| 4697 | "This plugin is a wrapper to take the output of another plugin and invert it." | ||
| 4698 | msgstr "" | ||
| 4699 | "Ce plugin est un adaptateur qui prends l'état d'un autre plug-in et " | ||
| 4700 | "l'inverse." | ||
| 4701 | |||
| 4702 | msgid "The full path of the plugin must be provided." | ||
| 4703 | msgstr "Le chemin complet du plugin doit être spécifié." | ||
| 4704 | |||
| 4705 | msgid "If the wrapped plugin returns OK, the wrapper will return CRITICAL." | ||
| 4706 | msgstr "Si le plugin executé retourne OK, l'adaptateur retournera CRITIQUE." | ||
| 4707 | |||
| 4708 | msgid "If the wrapped plugin returns CRITICAL, the wrapper will return OK." | ||
| 4709 | msgstr "Si le plugin executé retourne CRITIQUE, l'adaptateur retournera OK." | ||
| 4710 | |||
| 4711 | msgid "Otherwise, the output state of the wrapped plugin is unchanged." | ||
| 4712 | msgstr "Autrement, l'état du plugin executé reste inchangé." | ||
| 4713 | |||
| 4714 | msgid "" | ||
| 4715 | "Using timeout-result, it is possible to override the timeout behaviour or a" | ||
| 4716 | msgstr "" | ||
| 4717 | |||
| 4718 | msgid "plugin by setting the negate timeout a bit lower." | ||
| 4719 | msgstr "" | ||
| 4720 | |||
| 4721 | #, c-format | ||
| 4722 | msgid "%s - Socket timeout after %d seconds\n" | ||
| 4723 | msgstr "%s - Le socket n'a pas répondu dans les %d secondes\n" | ||
| 4724 | |||
| 4725 | #, c-format | ||
| 4726 | msgid "%s - Abnormal timeout after %d seconds\n" | ||
| 4727 | msgstr "%s - Dépassement anormal du temps de réponse après %d secondes\n" | ||
| 4728 | |||
| 4729 | msgid "Send failed" | ||
| 4730 | msgstr "L'envoi à échoué" | ||
| 4731 | |||
| 4732 | msgid "No data was received from host!" | ||
| 4733 | msgstr "Pas de données reçues de l'hôte!" | ||
| 4734 | |||
| 4735 | msgid "Socket creation failed" | ||
| 4736 | msgstr "La création du socket à échoué " | ||
| 4737 | |||
| 4738 | msgid "Supplied path too long unix domain socket" | ||
| 4739 | msgstr "Le chemin fourni est trop long pour un socket unix" | ||
| 4740 | |||
| 4741 | msgid "Receive failed" | ||
| 4742 | msgstr "La réception à échoué" | ||
| 4743 | |||
| 4744 | #, c-format | ||
| 4745 | msgid "Invalid hostname/address - %s" | ||
| 4746 | msgstr "Adresse/Nom invalide - %s" | ||
| 4747 | |||
| 4748 | msgid "Could not malloc argv array in popen()" | ||
| 4749 | msgstr "Impossible de réallouer un tableau pour les paramètres dans popen()" | ||
| 4750 | |||
| 4751 | msgid "CRITICAL - You need more args!!!" | ||
| 4752 | msgstr "CRITIQUE - Vous devez spécifier plus d'arguments!!!" | ||
| 4753 | |||
| 4754 | msgid "Cannot catch SIGCHLD" | ||
| 4755 | msgstr "impossible d'obtenir le signal SIGCHLD" | ||
| 4756 | |||
| 4757 | #, c-format | ||
| 4758 | msgid "CRITICAL - Plugin timed out after %d seconds\n" | ||
| 4759 | msgstr "CRITIQUE - Le plugin n'as pas répondu dans les %d secondes\n" | ||
| 4760 | |||
| 4761 | msgid "CRITICAL - popen timeout received, but no child process" | ||
| 4762 | msgstr "" | ||
| 4763 | "CRITIQUE - le temps d'attente à été dépassé dans la fonction popen, mais il " | ||
| 4764 | "n'y a pas de processus fils" | ||
| 4765 | |||
| 4766 | #, c-format | ||
| 4767 | msgid "" | ||
| 4768 | "%s UNKNOWN - No data received from host\n" | ||
| 4769 | "CMD: %s</A>\n" | ||
| 4770 | msgstr "" | ||
| 4771 | "%s INCONNU - Pas de données reçues de l'hôte\n" | ||
| 4772 | "Commande: %s</A>\n" | ||
| 4773 | |||
| 4774 | #, fuzzy | ||
| 4775 | msgid "" | ||
| 4776 | "This plugin wraps the text output of another command (plugin) in HTML <A>" | ||
| 4777 | msgstr "" | ||
| 4778 | "Ce plugin est un adaptateur qui prends l'état d'un autre plug-in et " | ||
| 4779 | "l'inverse." | ||
| 4780 | |||
| 4781 | msgid "" | ||
| 4782 | "tags, thus displaying the child plugin's output as a clickable link in " | ||
| 4783 | "compatible" | ||
| 4784 | msgstr "" | ||
| 4785 | |||
| 4786 | msgid "" | ||
| 4787 | "monitoring status screen. This plugin returns the status of the invoked " | ||
| 4788 | "plugin." | ||
| 4789 | msgstr "" | ||
| 4790 | |||
| 4791 | msgid "" | ||
| 4792 | "Pay close attention to quoting to ensure that the shell passes the expected" | ||
| 4793 | msgstr "" | ||
| 4794 | |||
| 4795 | msgid "data to the plugin. For example, in:" | ||
| 4796 | msgstr "" | ||
| 4797 | |||
| 4798 | msgid "urlize http://example.com/ check_http -H example.com -r 'two words'" | ||
| 4799 | msgstr "" | ||
| 4800 | |||
| 4801 | msgid "the shell will remove the single quotes and urlize will see:" | ||
| 4802 | msgstr "" | ||
| 4803 | |||
| 4804 | msgid "urlize http://example.com/ check_http -H example.com -r two words" | ||
| 4805 | msgstr "" | ||
| 4806 | |||
| 4807 | msgid "You probably want:" | ||
| 4808 | msgstr "" | ||
| 4809 | |||
| 4810 | msgid "urlize http://example.com/ \"check_http -H example.com -r 'two words'\"" | ||
| 4811 | msgstr "" | ||
| 4812 | |||
| 4813 | msgid "failed realloc in strpcpy\n" | ||
| 4814 | msgstr "La fonction realloc à échoué dans strpcpy\n" | ||
| 4815 | |||
| 4816 | msgid "failed malloc in strscat\n" | ||
| 4817 | msgstr "La fonction malloc à échoué dans strscat\n" | ||
| 4818 | |||
| 4819 | #, fuzzy | ||
| 4820 | msgid "failed malloc in xvasprintf\n" | ||
| 4821 | msgstr "La fonction malloc à échoué dans strscat\n" | ||
| 4822 | |||
| 4823 | msgid "sysconf error for _SC_OPEN_MAX\n" | ||
| 4824 | msgstr "" | ||
| 4825 | |||
| 4826 | #, c-format | ||
| 4827 | msgid "" | ||
| 4828 | " %s (-h | --help) for detailed help\n" | ||
| 4829 | " %s (-V | --version) for version information\n" | ||
| 4830 | msgstr "" | ||
| 4831 | " %s (-h | --help) pour l'aide détaillée\n" | ||
| 4832 | " %s (-V | --version) pour les informations relative à la version\n" | ||
| 4833 | |||
| 4834 | msgid "" | ||
| 4835 | "\n" | ||
| 4836 | "Options:\n" | ||
| 4837 | " -h, --help\n" | ||
| 4838 | " Print detailed help screen\n" | ||
| 4839 | " -V, --version\n" | ||
| 4840 | " Print version information\n" | ||
| 4841 | msgstr "" | ||
| 4842 | "\n" | ||
| 4843 | "Options:\n" | ||
| 4844 | " -h, --help\n" | ||
| 4845 | " Afficher l'aide détaillée\n" | ||
| 4846 | " -V, --version\n" | ||
| 4847 | " Afficher les informations relative à la version\n" | ||
| 4848 | |||
| 4849 | #, c-format | ||
| 4850 | msgid "" | ||
| 4851 | " -H, --hostname=ADDRESS\n" | ||
| 4852 | " Host name, IP Address, or unix socket (must be an absolute path)\n" | ||
| 4853 | " -%c, --port=INTEGER\n" | ||
| 4854 | " Port number (default: %s)\n" | ||
| 4855 | msgstr "" | ||
| 4856 | " -H, --hostname=ADDRESS\n" | ||
| 4857 | " Nom d'hôte, Adresse IP, ou socket UNIX (doit être un chemin absolu)\n" | ||
| 4858 | " -%c, --port=INTEGER\n" | ||
| 4859 | " Numéro de port (défaut: %s)\n" | ||
| 4860 | |||
| 4861 | msgid "" | ||
| 4862 | " -4, --use-ipv4\n" | ||
| 4863 | " Use IPv4 connection\n" | ||
| 4864 | " -6, --use-ipv6\n" | ||
| 4865 | " Use IPv6 connection\n" | ||
| 4866 | msgstr "" | ||
| 4867 | " -4, --use-ipv4\n" | ||
| 4868 | " Utiliser une connection IPv4\n" | ||
| 4869 | " -6, --use-ipv6\n" | ||
| 4870 | " Utiliser une connection IPv6\n" | ||
| 4871 | |||
| 4872 | #, fuzzy | ||
| 4873 | msgid "" | ||
| 4874 | " -v, --verbose\n" | ||
| 4875 | " Show details for command-line debugging (output may be truncated by\n" | ||
| 4876 | " the monitoring system)\n" | ||
| 4877 | msgstr "" | ||
| 4878 | " -v, --verbose\n" | ||
| 4879 | " Affiche les informations de déboguage en ligne de commande (Nagios peut " | ||
| 4880 | "tronquer la sortie)\n" | ||
| 4881 | |||
| 4882 | msgid "" | ||
| 4883 | " -w, --warning=DOUBLE\n" | ||
| 4884 | " Response time to result in warning status (seconds)\n" | ||
| 4885 | " -c, --critical=DOUBLE\n" | ||
| 4886 | " Response time to result in critical status (seconds)\n" | ||
| 4887 | msgstr "" | ||
| 4888 | " -w, --warning=DOUBLE\n" | ||
| 4889 | " Temps de réponse résultant en un état d'avertissement (secondes)\n" | ||
| 4890 | " -c, --critical=DOUBLE\n" | ||
| 4891 | " Temps de réponse résultant en un état critique (secondes)\n" | ||
| 4892 | |||
| 4893 | msgid "" | ||
| 4894 | " -w, --warning=RANGE\n" | ||
| 4895 | " Warning range (format: start:end). Alert if outside this range\n" | ||
| 4896 | " -c, --critical=RANGE\n" | ||
| 4897 | " Critical range\n" | ||
| 4898 | msgstr "" | ||
| 4899 | " -w, --warning=RANGE\n" | ||
| 4900 | " Seuil d'avertissement (format: début:fin). Alerte à l'extérieur de la " | ||
| 4901 | "plage\n" | ||
| 4902 | " -c, --critical=RANGE\n" | ||
| 4903 | " Seuil critique\n" | ||
| 4904 | |||
| 4905 | #, c-format | ||
| 4906 | msgid "" | ||
| 4907 | " -t, --timeout=INTEGER\n" | ||
| 4908 | " Seconds before connection times out (default: %d)\n" | ||
| 4909 | msgstr "" | ||
| 4910 | " -t, --timeout=INTEGER\n" | ||
| 4911 | " Délais de connection en secondes (défaut: %d)\n" | ||
| 4912 | |||
| 4913 | #, fuzzy, c-format | ||
| 4914 | msgid "" | ||
| 4915 | " -t, --timeout=INTEGER\n" | ||
| 4916 | " Seconds before plugin times out (default: %d)\n" | ||
| 4917 | msgstr "" | ||
| 4918 | " -t, --timeout=INTEGER\n" | ||
| 4919 | " Délais de connection en secondes (défaut: %d)\n" | ||
| 4920 | |||
| 4921 | #, fuzzy | ||
| 4922 | msgid "" | ||
| 4923 | " --extra-opts=[section][@file]\n" | ||
| 4924 | " Read options from an ini file. See\n" | ||
| 4925 | " https://www.monitoring-plugins.org/doc/extra-opts.html\n" | ||
| 4926 | " for usage and examples.\n" | ||
| 4927 | msgstr "" | ||
| 4928 | " --extra-opts=[section][@file]\n" | ||
| 4929 | " Lire les options d'un fichier ini. Voir\n" | ||
| 4930 | " https://www.monitoring-plugins.org/doc/extra-opts.html\n" | ||
| 4931 | " pour les instructions et examples.\n" | ||
| 4932 | |||
| 4933 | #, fuzzy | ||
| 4934 | msgid "" | ||
| 4935 | " See:\n" | ||
| 4936 | " https://www.monitoring-plugins.org/doc/guidelines.html#THRESHOLDFORMAT\n" | ||
| 4937 | " for THRESHOLD format and examples.\n" | ||
| 4938 | msgstr "" | ||
| 4939 | " Voir:\n" | ||
| 4940 | " https://www.monitoring-plugins.org/doc/guidelines.html." | ||
| 4941 | "html#THRESHOLDFORMAT\n" | ||
| 4942 | " pour le format et examples des seuils (THRESHOLD).\n" | ||
| 4943 | |||
| 4944 | #, fuzzy | ||
| 4945 | msgid "" | ||
| 4946 | "\n" | ||
| 4947 | "Send email to help@monitoring-plugins.org if you have questions regarding\n" | ||
| 4948 | "use of this software. To submit patches or suggest improvements, send email\n" | ||
| 4949 | "to devel@monitoring-plugins.org\n" | ||
| 4950 | "\n" | ||
| 4951 | msgstr "" | ||
| 4952 | "\n" | ||
| 4953 | "Envoyez un email à help@monitoring-plugins.org si vous avez des questions\n" | ||
| 4954 | "reliées à l'utilisation de ce logiciel. Pour envoyer des patches ou suggérer " | ||
| 4955 | "des\n" | ||
| 4956 | "améliorations, envoyez un email à devel@monitoring-plugins.org\n" | ||
| 4957 | "\n" | ||
| 4958 | |||
| 4959 | #, fuzzy | ||
| 4960 | msgid "" | ||
| 4961 | "\n" | ||
| 4962 | "The Monitoring Plugins come with ABSOLUTELY NO WARRANTY. You may " | ||
| 4963 | "redistribute\n" | ||
| 4964 | "copies of the plugins under the terms of the GNU General Public License.\n" | ||
| 4965 | "For more information about these matters, see the file named COPYING.\n" | ||
| 4966 | msgstr "" | ||
| 4967 | "\n" | ||
| 4968 | "Les plugins de Nagios ne portent AUCUNE GARANTIE. Vous pouvez redistribuer\n" | ||
| 4969 | "des copies des plugins selon les termes de la GNU General Public License.\n" | ||
| 4970 | "Pour de plus ample informations, voir le fichier COPYING.\n" | ||
| 4971 | |||
| 4972 | #, c-format | ||
| 4973 | msgid "Error: Could not get hardware address of interface '%s'\n" | ||
| 4974 | msgstr "" | ||
| 4975 | "Erreur: Impossible d'obtenir l'adresse matérielle pour l'interface '%s'\n" | ||
| 4976 | |||
| 4977 | #, c-format | ||
| 4978 | msgid "Error: if_nametoindex error - %s.\n" | ||
| 4979 | msgstr "Erreur: if_nametoindex erreur - %s.\n" | ||
| 4980 | |||
| 4981 | #, c-format | ||
| 4982 | msgid "Error: Couldn't get hardware address from %s. sysctl 1 error - %s.\n" | ||
| 4983 | msgstr "" | ||
| 4984 | "Erreur: Impossible d'obtenir l'adresse matérielle depuis %s. erreur sysctl 1 " | ||
| 4985 | "- %s.\n" | ||
| 4986 | |||
| 4987 | #, c-format | ||
| 4988 | msgid "" | ||
| 4989 | "Error: Couldn't get hardware address from interface %s. malloc error - %s.\n" | ||
| 4990 | msgstr "" | ||
| 4991 | "Erreur: Impossible d'obtenir l'adresse matérielle depuis l'interface %s\n" | ||
| 4992 | " erreur malloc - %s.\n" | ||
| 4993 | |||
| 4994 | #, c-format | ||
| 4995 | msgid "Error: Couldn't get hardware address from %s. sysctl 2 error - %s.\n" | ||
| 4996 | msgstr "" | ||
| 4997 | "Erreur: Impossible d'obtenir l'adresse matérielle depuis %s erreur sysctl 2 " | ||
| 4998 | "- %s.\n" | ||
| 4999 | |||
| 5000 | #, c-format | ||
| 5001 | msgid "" | ||
| 5002 | "Error: can't find unit number in interface_name (%s) - expecting TypeNumber " | ||
| 5003 | "eg lnc0.\n" | ||
| 5004 | msgstr "" | ||
| 5005 | "Erreur: impossible de trouver le numéro dans le nom de l'interface (%s).\n" | ||
| 5006 | "J'attendais le nom suivi du type ex lnc0.\n" | ||
| 5007 | |||
| 5008 | #, c-format | ||
| 5009 | msgid "" | ||
| 5010 | "Error: can't read MAC address from DLPI streams interface for device %s unit " | ||
| 5011 | "%d.\n" | ||
| 5012 | msgstr "" | ||
| 5013 | "Erreur: impossible de lire l'adresse MAC depuis l'interface DLPI pour le \n" | ||
| 5014 | "périphérique %s numéro %d.\n" | ||
| 5015 | |||
| 5016 | #, c-format | ||
| 5017 | msgid "" | ||
| 5018 | "Error: can't get MAC address for this architecture. Use the --mac option.\n" | ||
| 5019 | msgstr "" | ||
| 5020 | "Erreur: impossible d'obtenir l'adresse MAC sur cette architecture. Utilisez " | ||
| 5021 | "l'option --mac.\n" | ||
| 5022 | |||
| 5023 | #, c-format | ||
| 5024 | msgid "Error: Cannot determine IP address of interface %s\n" | ||
| 5025 | msgstr "Erreur: Impossible d'obtenir l'adresse IP de l'interface %s\n" | ||
| 5026 | |||
| 5027 | #, c-format | ||
| 5028 | msgid "Error: Cannot get interface IP address on this platform.\n" | ||
| 5029 | msgstr "Erreur: Impossible d'obtenir l'adresse IP sur cette architecture.\n" | ||
| 5030 | |||
| 5031 | #, c-format | ||
| 5032 | msgid "Pretending to be relay client %s\n" | ||
| 5033 | msgstr "" | ||
| 5034 | |||
| 5035 | #, c-format | ||
| 5036 | msgid "DHCPDISCOVER to %s port %d\n" | ||
| 5037 | msgstr "DHCPDISCOVER vers %s port %d\n" | ||
| 5038 | |||
| 5039 | #, c-format | ||
| 5040 | msgid "Result=ERROR\n" | ||
| 5041 | msgstr "Résultat=ERREUR\n" | ||
| 5042 | |||
| 5043 | #, c-format | ||
| 5044 | msgid "Result=OK\n" | ||
| 5045 | msgstr "Résultat=OK\n" | ||
| 5046 | |||
| 5047 | #, c-format | ||
| 5048 | msgid "DHCPOFFER from IP address %s" | ||
| 5049 | msgstr "DHCPOFFER depuis l'adresse IP %s" | ||
| 5050 | |||
| 5051 | #, c-format | ||
| 5052 | msgid " via %s\n" | ||
| 5053 | msgstr " depuis %s\n" | ||
| 5054 | |||
| 5055 | #, c-format | ||
| 5056 | msgid "" | ||
| 5057 | "DHCPOFFER XID (%u) did not match DHCPDISCOVER XID (%u) - ignoring packet\n" | ||
| 5058 | msgstr "" | ||
| 5059 | "DHCPOFFER XID (%u) ne correspond pas au DHCPDISCOVER XID (%u) - paquet " | ||
| 5060 | "ignoré\n" | ||
| 5061 | |||
| 5062 | #, c-format | ||
| 5063 | msgid "DHCPOFFER hardware address did not match our own - ignoring packet\n" | ||
| 5064 | msgstr "" | ||
| 5065 | "l'adresse matérielle du DHCPOFFER ne correspond pas à la notre paquet " | ||
| 5066 | "ignoré\n" | ||
| 5067 | |||
| 5068 | #, c-format | ||
| 5069 | msgid "Total responses seen on the wire: %d\n" | ||
| 5070 | msgstr "Nombre total de réponses vues: %d\n" | ||
| 5071 | |||
| 5072 | #, c-format | ||
| 5073 | msgid "Valid responses for this machine: %d\n" | ||
| 5074 | msgstr "Nombre de réponse valides pour cette machine: %d\n" | ||
| 5075 | |||
| 5076 | #, c-format | ||
| 5077 | msgid "send_dhcp_packet result: %d\n" | ||
| 5078 | msgstr "résultat de send_dchp_packet: %d\n" | ||
| 5079 | |||
| 5080 | #, c-format | ||
| 5081 | msgid "No (more) data received (nfound: %d)\n" | ||
| 5082 | msgstr "Plus de données reçues (nfound: %d)\n" | ||
| 5083 | |||
| 5084 | #, c-format | ||
| 5085 | msgid "recvfrom() failed, " | ||
| 5086 | msgstr "recvfrom() a échoué, " | ||
| 5087 | |||
| 5088 | #, c-format | ||
| 5089 | msgid "receive_dhcp_packet() result: %d\n" | ||
| 5090 | msgstr "résultat de receive_dchp_packet(): %d\n" | ||
| 5091 | |||
| 5092 | #, c-format | ||
| 5093 | msgid "receive_dhcp_packet() source: %s\n" | ||
| 5094 | msgstr "source de receive_dchp_packet(): %s\n" | ||
| 5095 | |||
| 5096 | #, c-format | ||
| 5097 | msgid "Error: Could not create socket!\n" | ||
| 5098 | msgstr "Erreur: Impossible de créer un socket!\n" | ||
| 5099 | |||
| 5100 | #, c-format | ||
| 5101 | msgid "Error: Could not set reuse address option on DHCP socket!\n" | ||
| 5102 | msgstr "" | ||
| 5103 | "Erreur: Impossible de configurer l'option de réutilisation de l'adresse sur\n" | ||
| 5104 | "le socket DHCP!\n" | ||
| 5105 | |||
| 5106 | #, c-format | ||
| 5107 | msgid "Error: Could not set broadcast option on DHCP socket!\n" | ||
| 5108 | msgstr "" | ||
| 5109 | "Erreur: Impossible de configurer l'option broadcast sur le socket DHCP!\n" | ||
| 5110 | |||
| 5111 | #, c-format | ||
| 5112 | msgid "" | ||
| 5113 | "Error: Could not bind socket to interface %s. Check your privileges...\n" | ||
| 5114 | msgstr "" | ||
| 5115 | "Erreur: Impossible de connecter le socket à l'interface %s.\n" | ||
| 5116 | "Vérifiez vos droits...\n" | ||
| 5117 | |||
| 5118 | #, c-format | ||
| 5119 | msgid "" | ||
| 5120 | "Error: Could not bind to DHCP socket (port %d)! Check your privileges...\n" | ||
| 5121 | msgstr "" | ||
| 5122 | "Erreur: Impossible de se connecter au socket (port %d)! Vérifiez vos " | ||
| 5123 | "droits..\n" | ||
| 5124 | |||
| 5125 | #, c-format | ||
| 5126 | msgid "Requested server address: %s\n" | ||
| 5127 | msgstr "Adresse serveur demandée: %s\n" | ||
| 5128 | |||
| 5129 | #, c-format | ||
| 5130 | msgid "Lease Time: Infinite\n" | ||
| 5131 | msgstr "Durée du Bail: Infini\n" | ||
| 5132 | |||
| 5133 | #, c-format | ||
| 5134 | msgid "Lease Time: %lu seconds\n" | ||
| 5135 | msgstr "Durée du Bail: %lu secondes\n" | ||
| 5136 | |||
| 5137 | #, c-format | ||
| 5138 | msgid "Renewal Time: Infinite\n" | ||
| 5139 | msgstr "Renouvellement du bail: Infini\n" | ||
| 5140 | |||
| 5141 | #, c-format | ||
| 5142 | msgid "Renewal Time: %lu seconds\n" | ||
| 5143 | msgstr "Durée du renouvellement = %lu secondes\n" | ||
| 5144 | |||
| 5145 | #, c-format | ||
| 5146 | msgid "Rebinding Time: Infinite\n" | ||
| 5147 | msgstr "Délai de nouvelle demande: Infini\n" | ||
| 5148 | |||
| 5149 | #, c-format | ||
| 5150 | msgid "Rebinding Time: %lu seconds\n" | ||
| 5151 | msgstr "Délai de nouvelle demande: %lu secondes\n" | ||
| 5152 | |||
| 5153 | #, c-format | ||
| 5154 | msgid "Added offer from server @ %s" | ||
| 5155 | msgstr "Rajouté offre du serveur @ %s" | ||
| 5156 | |||
| 5157 | #, c-format | ||
| 5158 | msgid " of IP address %s\n" | ||
| 5159 | msgstr "de l'adresse IP %s\n" | ||
| 5160 | |||
| 5161 | #, c-format | ||
| 5162 | msgid "DHCP Server Match: Offerer=%s" | ||
| 5163 | msgstr "Correspondance du serveur DHCP: Offrant=%s" | ||
| 5164 | |||
| 5165 | #, c-format | ||
| 5166 | msgid " Requested=%s" | ||
| 5167 | msgstr " Demandé=%s" | ||
| 5168 | |||
| 5169 | #, c-format | ||
| 5170 | msgid " (duplicate)" | ||
| 5171 | msgstr "" | ||
| 5172 | |||
| 5173 | #, c-format | ||
| 5174 | msgid "\n" | ||
| 5175 | msgstr "" | ||
| 5176 | |||
| 5177 | #, c-format | ||
| 5178 | msgid "No DHCPOFFERs were received.\n" | ||
| 5179 | msgstr "Pas de DHCPOFFERs reçus.\n" | ||
| 5180 | |||
| 5181 | #, c-format | ||
| 5182 | msgid "Received %d DHCPOFFER(s)" | ||
| 5183 | msgstr "Reçu %d DHCPOFFER(s)" | ||
| 5184 | |||
| 5185 | #, c-format | ||
| 5186 | msgid ", %s%d of %d requested servers responded" | ||
| 5187 | msgstr ", %s%d de %d serveurs ont répondus" | ||
| 5188 | |||
| 5189 | #, c-format | ||
| 5190 | msgid ", requested address (%s) was %soffered" | ||
| 5191 | msgstr ", l'adresse demandée (%s) %s été offerte" | ||
| 5192 | |||
| 5193 | msgid "not " | ||
| 5194 | msgstr "n'as pas" | ||
| 5195 | |||
| 5196 | #, c-format | ||
| 5197 | msgid ", max lease time = " | ||
| 5198 | msgstr ", bail maximum = " | ||
| 5199 | |||
| 5200 | #, c-format | ||
| 5201 | msgid "Infinity" | ||
| 5202 | msgstr "Infini" | ||
| 5203 | |||
| 5204 | msgid "Got unexpected non-option argument" | ||
| 5205 | msgstr "" | ||
| 5206 | |||
| 5207 | #, c-format | ||
| 5208 | msgid "Error: DLPI stream API failed to get MAC in check_ctrl: %s.\n" | ||
| 5209 | msgstr "" | ||
| 5210 | "Erreur: Impossible d'obtenir la MAC par l'API DLPI dans check_ctrl: %s.\n" | ||
| 5211 | |||
| 5212 | #, c-format | ||
| 5213 | msgid "Error: DLPI stream API failed to get MAC in put_ctrl/putmsg(): %s.\n" | ||
| 5214 | msgstr "" | ||
| 5215 | "Erreur: Impossible d'obtenir la MAC par l'API DLPI dans put_ctrl/putmsg(): " | ||
| 5216 | "%s.\n" | ||
| 5217 | |||
| 5218 | #, c-format | ||
| 5219 | msgid "Error: DLPI stream API failed to get MAC in put_both/putmsg().\n" | ||
| 5220 | msgstr "" | ||
| 5221 | "Erreur: Impossible d'obtenir la MAC par l'API DLPI dans put_both/putmsg().\n" | ||
| 5222 | |||
| 5223 | #, c-format | ||
| 5224 | msgid "" | ||
| 5225 | "Error: DLPI stream API failed to get MAC in dl_attach_req/open(%s..): %s.\n" | ||
| 5226 | msgstr "" | ||
| 5227 | "Erreur: Impossible d'obtenir la MAC par l'API DLPI dans dl_attach_req/" | ||
| 5228 | "open(%s..): %s.\n" | ||
| 5229 | |||
| 5230 | #, c-format | ||
| 5231 | msgid "Error: DLPI stream API failed to get MAC in dl_bind/check_ctrl(): %s.\n" | ||
| 5232 | msgstr "" | ||
| 5233 | "Erreur: Impossible d'obtenir la MAC par l'API DLPI dans dl_bind/" | ||
| 5234 | "check_ctrl(): %s.\n" | ||
| 5235 | |||
| 5236 | #, c-format | ||
| 5237 | msgid "Hardware address: " | ||
| 5238 | msgstr "Adresse matérielle: " | ||
| 5239 | |||
| 5240 | msgid "This plugin tests the availability of DHCP servers on a network." | ||
| 5241 | msgstr "Ce plugin teste la disponibilité de serveurs DHCP dans un réseau." | ||
| 5242 | |||
| 5243 | msgid "IP address of DHCP server that we must hear from" | ||
| 5244 | msgstr "" | ||
| 5245 | |||
| 5246 | msgid "IP address that should be offered by at least one DHCP server" | ||
| 5247 | msgstr "" | ||
| 5248 | |||
| 5249 | msgid "Seconds to wait for DHCPOFFER before timeout occurs" | ||
| 5250 | msgstr "" | ||
| 5251 | |||
| 5252 | msgid "Interface to to use for listening (i.e. eth0)" | ||
| 5253 | msgstr "" | ||
| 5254 | |||
| 5255 | msgid "MAC address to use in the DHCP request" | ||
| 5256 | msgstr "" | ||
| 5257 | |||
| 5258 | msgid "Unicast testing: mimic a DHCP relay, requires -s" | ||
| 5259 | msgstr "" | ||
| 5260 | |||
| 5261 | msgid "specify a target" | ||
| 5262 | msgstr "" | ||
| 5263 | |||
| 5264 | msgid "Use IPv4 (default) or IPv6 to communicate with the targets" | ||
| 5265 | msgstr "" | ||
| 5266 | |||
| 5267 | msgid "warning threshold (currently " | ||
| 5268 | msgstr "Valeurs pour le seuil d'avertissement (actuellement " | ||
| 5269 | |||
| 5270 | msgid "critical threshold (currently " | ||
| 5271 | msgstr "Valeurs pour le seuil critique (actuellement " | ||
| 5272 | |||
| 5273 | msgid "specify a source IP address or device name" | ||
| 5274 | msgstr "spécifiez une adresse ou un nom d'hôte" | ||
| 5275 | |||
| 5276 | msgid "number of packets to send (currently " | ||
| 5277 | msgstr "nombre de paquets à envoyer (actuellement " | ||
| 5278 | |||
| 5279 | msgid "max packet interval (currently " | ||
| 5280 | msgstr "" | ||
| 5281 | |||
| 5282 | msgid "max target interval (currently " | ||
| 5283 | msgstr "" | ||
| 5284 | |||
| 5285 | msgid "number of alive hosts required for success" | ||
| 5286 | msgstr "nombre d'hôtes vivants requis pour réussite" | ||
| 5287 | |||
| 5288 | msgid "TTL on outgoing packets (currently " | ||
| 5289 | msgstr "" | ||
| 5290 | |||
| 5291 | msgid "timeout value (seconds, currently " | ||
| 5292 | msgstr "" | ||
| 5293 | |||
| 5294 | msgid "Number of icmp data bytes to send" | ||
| 5295 | msgstr "Nombre de paquets ICMP Ã envoyer" | ||
| 5296 | |||
| 5297 | msgid "Packet size will be data bytes + icmp header (currently" | ||
| 5298 | msgstr "" | ||
| 5299 | |||
| 5300 | msgid "verbose" | ||
| 5301 | msgstr "" | ||
| 5302 | |||
| 5303 | msgid "The -H switch is optional. Naming a host (or several) to check is not." | ||
| 5304 | msgstr "" | ||
| 5305 | |||
| 5306 | msgid "" | ||
| 5307 | "Threshold format for -w and -c is 200.25,60% for 200.25 msec RTA and 60%" | ||
| 5308 | msgstr "" | ||
| 5309 | |||
| 5310 | msgid "packet loss. The default values should work well for most users." | ||
| 5311 | msgstr "" | ||
| 5312 | |||
| 5313 | msgid "" | ||
| 5314 | "You can specify different RTA factors using the standardized abbreviations" | ||
| 5315 | msgstr "" | ||
| 5316 | |||
| 5317 | msgid "" | ||
| 5318 | "us (microseconds), ms (milliseconds, default) or just plain s for seconds." | ||
| 5319 | msgstr "" | ||
| 5320 | |||
| 5321 | msgid "The -v switch can be specified several times for increased verbosity." | ||
| 5322 | msgstr "" | ||
| 5323 | |||
| 5324 | #~ msgid "Path or partition (may be repeated)" | ||
| 5325 | #~ msgstr "Répertoire ou partition (peut être utilisé plusieurs fois)" | ||
| 5326 | |||
| 5327 | #~ msgid "" | ||
| 5328 | #~ "value match). If multiple addresses are returned at once, you have to " | ||
| 5329 | #~ "match" | ||
| 5330 | #~ msgstr "" | ||
| 5331 | #~ "valeur correspond). Si plusieurs adresses sont retournées en même temps," | ||
| 5332 | |||
| 5333 | #~ msgid "" | ||
| 5334 | #~ "the whole string of addresses separated with commas (sorted " | ||
| 5335 | #~ "alphabetically)." | ||
| 5336 | #~ msgstr "" | ||
| 5337 | #~ "vous devrez toutes les inscrire séparées pas des virgules (en ordre " | ||
| 5338 | #~ "alphabétique)" | ||
| 5339 | |||
| 5340 | #~ msgid "No specific parameters. No warning or critical threshold" | ||
| 5341 | #~ msgstr "Pas d'argument spécifique. Pas de seuil d'avertissement ou critique" | ||
| 5342 | |||
| 5343 | #~ msgid "Can't find local IP for NAS-IP-Address" | ||
| 5344 | #~ msgstr "Impossible de trouver une addresse IP locale pour le NAS-IP-Address" | ||
| 5345 | |||
| 5346 | #~ msgid "Warning free space should be more than critical free space" | ||
| 5347 | #~ msgstr "" | ||
| 5348 | #~ "Le seuil d'avertissement pour la place libre doit être plus grand que le " | ||
| 5349 | #~ "seuil critique" | ||
| 5350 | |||
| 5351 | #, c-format | ||
| 5352 | #~ msgid "%s - Plugin timed out after %d seconds\n" | ||
| 5353 | #~ msgstr "%s - Le plugin n'as pas répondu dans les %d secondes\n" | ||
| 5354 | |||
| 5355 | #~ msgid "Critical Process Count must be an integer!" | ||
| 5356 | #~ msgstr "Critique Le total des processus doit être un nombre entier!" | ||
| 5357 | |||
| 5358 | #~ msgid "Warning Process Count must be an integer!" | ||
| 5359 | #~ msgstr "Avertissement Le total des processus doit être un nombre entier!" | ||
| 5360 | |||
| 5361 | #~ msgid "wmax (%d) cannot be greater than cmax (%d)\n" | ||
| 5362 | #~ msgstr "wmax (%d) ne peut pas être plus grand que cmax (%d)\n" | ||
| 5363 | |||
| 5364 | #~ msgid "wmin (%d) cannot be less than cmin (%d)\n" | ||
| 5365 | #~ msgstr "wmin (%d) ne peut pas être plus petit que cmin (%d)\n" | ||
| 5366 | |||
| 5367 | #~ msgid "CRITICAL - Cannot retrieve server certificate." | ||
| 5368 | #~ msgstr "CRITIQUE - Impossible d'obtenir le certificat du serveur" | ||
| 5369 | |||
| 5370 | #~ msgid "OIDs." | ||
| 5371 | #~ msgstr "OIDs." | ||
| 5372 | |||
| 5373 | #~ msgid "CRITICAL - Cannot retrieve server certificate.\n" | ||
| 5374 | #~ msgstr "CRITIQUE - Impossible d'obtenir le certificat du serveur.\n" | ||
| 5375 | |||
| 5376 | #~ msgid "Usage: " | ||
| 5377 | #~ msgstr "Utilisation: " | ||
| 5378 | |||
| 5379 | #~ msgid "" | ||
| 5380 | #~ " See: http://nagiosplugins.org/extra-opts for --extra-opts usage and " | ||
| 5381 | #~ "examples.\n" | ||
| 5382 | #~ msgstr "" | ||
| 5383 | #~ " Voir: http://nagiosplugins.org/extra-opts pour le format et examples de " | ||
| 5384 | #~ "--extra-opts.\n" | ||
diff --git a/po/monitoring-plugins.pot b/po/monitoring-plugins.pot deleted file mode 100644 index af48f036..00000000 --- a/po/monitoring-plugins.pot +++ /dev/null | |||
| @@ -1,4929 +0,0 @@ | |||
| 1 | # SOME DESCRIPTIVE TITLE. | ||
| 2 | # Copyright (C) YEAR Monitoring Plugins Development Team | ||
| 3 | # This file is distributed under the same license as the PACKAGE package. | ||
| 4 | # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||
| 5 | # | ||
| 6 | #, fuzzy | ||
| 7 | msgid "" | ||
| 8 | msgstr "" | ||
| 9 | "Project-Id-Version: PACKAGE VERSION\n" | ||
| 10 | "Report-Msgid-Bugs-To: devel@monitoring-plugins.org\n" | ||
| 11 | "POT-Creation-Date: 2023-09-12 01:33+0200\n" | ||
| 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||
| 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||
| 14 | "Language-Team: LANGUAGE <LL@li.org>\n" | ||
| 15 | "Language: \n" | ||
| 16 | "MIME-Version: 1.0\n" | ||
| 17 | "Content-Type: text/plain; charset=CHARSET\n" | ||
| 18 | "Content-Transfer-Encoding: 8bit\n" | ||
| 19 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" | ||
| 20 | |||
| 21 | msgid "Could not parse arguments" | ||
| 22 | msgstr "" | ||
| 23 | |||
| 24 | msgid "Cannot catch SIGALRM" | ||
| 25 | msgstr "" | ||
| 26 | |||
| 27 | #, c-format | ||
| 28 | msgid "SSH connection failed: %s\n" | ||
| 29 | msgstr "" | ||
| 30 | |||
| 31 | #, c-format | ||
| 32 | msgid "Remote command execution failed: %s\n" | ||
| 33 | msgstr "" | ||
| 34 | |||
| 35 | #, c-format | ||
| 36 | msgid "%s - check_by_ssh: Remote command '%s' returned status %d\n" | ||
| 37 | msgstr "" | ||
| 38 | |||
| 39 | #, c-format | ||
| 40 | msgid "SSH WARNING: could not open %s\n" | ||
| 41 | msgstr "" | ||
| 42 | |||
| 43 | #, c-format | ||
| 44 | msgid "%s: Error parsing output\n" | ||
| 45 | msgstr "" | ||
| 46 | |||
| 47 | msgid "Timeout interval must be a positive integer" | ||
| 48 | msgstr "" | ||
| 49 | |||
| 50 | msgid "Port must be a positive integer" | ||
| 51 | msgstr "" | ||
| 52 | |||
| 53 | msgid "skip-stdout argument must be an integer" | ||
| 54 | msgstr "" | ||
| 55 | |||
| 56 | msgid "skip-stderr argument must be an integer" | ||
| 57 | msgstr "" | ||
| 58 | |||
| 59 | #, c-format | ||
| 60 | msgid "%s: You must provide a host name\n" | ||
| 61 | msgstr "" | ||
| 62 | |||
| 63 | msgid "No remotecmd" | ||
| 64 | msgstr "" | ||
| 65 | |||
| 66 | #, c-format | ||
| 67 | msgid "%s: Argument limit of %d exceeded\n" | ||
| 68 | msgstr "" | ||
| 69 | |||
| 70 | msgid "Can not (re)allocate 'commargv' buffer\n" | ||
| 71 | msgstr "" | ||
| 72 | |||
| 73 | #, c-format | ||
| 74 | msgid "" | ||
| 75 | "%s: In passive mode, you must provide a service name for each command.\n" | ||
| 76 | msgstr "" | ||
| 77 | |||
| 78 | #, c-format | ||
| 79 | msgid "" | ||
| 80 | "%s: In passive mode, you must provide the host short name from the " | ||
| 81 | "monitoring configs.\n" | ||
| 82 | msgstr "" | ||
| 83 | |||
| 84 | #, c-format | ||
| 85 | msgid "This plugin uses SSH to execute commands on a remote host" | ||
| 86 | msgstr "" | ||
| 87 | |||
| 88 | msgid "tell ssh to use Protocol 1 [optional]" | ||
| 89 | msgstr "" | ||
| 90 | |||
| 91 | msgid "tell ssh to use Protocol 2 [optional]" | ||
| 92 | msgstr "" | ||
| 93 | |||
| 94 | msgid "Ignore all or (if specified) first n lines on STDOUT [optional]" | ||
| 95 | msgstr "" | ||
| 96 | |||
| 97 | msgid "Ignore all or (if specified) first n lines on STDERR [optional]" | ||
| 98 | msgstr "" | ||
| 99 | |||
| 100 | msgid "Exit with an warning, if there is an output on STDERR" | ||
| 101 | msgstr "" | ||
| 102 | |||
| 103 | msgid "" | ||
| 104 | "tells ssh to fork rather than create a tty [optional]. This will always " | ||
| 105 | "return OK if ssh is executed" | ||
| 106 | msgstr "" | ||
| 107 | |||
| 108 | msgid "command to execute on the remote machine" | ||
| 109 | msgstr "" | ||
| 110 | |||
| 111 | msgid "SSH user name on remote host [optional]" | ||
| 112 | msgstr "" | ||
| 113 | |||
| 114 | msgid "identity of an authorized key [optional]" | ||
| 115 | msgstr "" | ||
| 116 | |||
| 117 | msgid "external command file for monitoring [optional]" | ||
| 118 | msgstr "" | ||
| 119 | |||
| 120 | msgid "list of monitoring service names, separated by ':' [optional]" | ||
| 121 | msgstr "" | ||
| 122 | |||
| 123 | msgid "short name of host in the monitoring configuration [optional]" | ||
| 124 | msgstr "" | ||
| 125 | |||
| 126 | msgid "Call ssh with '-o OPTION' (may be used multiple times) [optional]" | ||
| 127 | msgstr "" | ||
| 128 | |||
| 129 | msgid "Tell ssh to use this configfile [optional]" | ||
| 130 | msgstr "" | ||
| 131 | |||
| 132 | msgid "Tell ssh to suppress warning and diagnostic messages [optional]" | ||
| 133 | msgstr "" | ||
| 134 | |||
| 135 | msgid "Make connection problems return UNKNOWN instead of CRITICAL" | ||
| 136 | msgstr "" | ||
| 137 | |||
| 138 | msgid "The most common mode of use is to refer to a local identity file with" | ||
| 139 | msgstr "" | ||
| 140 | |||
| 141 | msgid "the '-i' option. In this mode, the identity pair should have a null" | ||
| 142 | msgstr "" | ||
| 143 | |||
| 144 | msgid "passphrase and the public key should be listed in the authorized_keys" | ||
| 145 | msgstr "" | ||
| 146 | |||
| 147 | msgid "file of the remote host. Usually the key will be restricted to running" | ||
| 148 | msgstr "" | ||
| 149 | |||
| 150 | msgid "only one command on the remote server. If the remote SSH server tracks" | ||
| 151 | msgstr "" | ||
| 152 | |||
| 153 | msgid "invocation arguments, the one remote program may be an agent that can" | ||
| 154 | msgstr "" | ||
| 155 | |||
| 156 | msgid "execute additional commands as proxy" | ||
| 157 | msgstr "" | ||
| 158 | |||
| 159 | msgid "To use passive mode, provide multiple '-C' options, and provide" | ||
| 160 | msgstr "" | ||
| 161 | |||
| 162 | msgid "" | ||
| 163 | "all of -O, -s, and -n options (servicelist order must match '-C'options)" | ||
| 164 | msgstr "" | ||
| 165 | |||
| 166 | msgid "Examples:" | ||
| 167 | msgstr "" | ||
| 168 | |||
| 169 | msgid "Usage:" | ||
| 170 | msgstr "" | ||
| 171 | |||
| 172 | #, c-format | ||
| 173 | msgid "Host/Service Cluster Plugin for Monitoring" | ||
| 174 | msgstr "" | ||
| 175 | |||
| 176 | msgid "Options:" | ||
| 177 | msgstr "" | ||
| 178 | |||
| 179 | msgid "Check service cluster status" | ||
| 180 | msgstr "" | ||
| 181 | |||
| 182 | msgid "Check host cluster status" | ||
| 183 | msgstr "" | ||
| 184 | |||
| 185 | msgid "Optional prepended text output (i.e. \"Host cluster\")" | ||
| 186 | msgstr "" | ||
| 187 | |||
| 188 | msgid "Specifies the range of hosts or services in cluster that must be in a" | ||
| 189 | msgstr "" | ||
| 190 | |||
| 191 | msgid "non-OK state in order to return a WARNING status level" | ||
| 192 | msgstr "" | ||
| 193 | |||
| 194 | msgid "non-OK state in order to return a CRITICAL status level" | ||
| 195 | msgstr "" | ||
| 196 | |||
| 197 | msgid "The status codes of the hosts or services in the cluster, separated by" | ||
| 198 | msgstr "" | ||
| 199 | |||
| 200 | msgid "commas" | ||
| 201 | msgstr "" | ||
| 202 | |||
| 203 | msgid "Notes:" | ||
| 204 | msgstr "" | ||
| 205 | |||
| 206 | msgid "" | ||
| 207 | "Will alert critical if there are 3 or more service data points in a non-OK" | ||
| 208 | msgstr "" | ||
| 209 | |||
| 210 | msgid "state." | ||
| 211 | msgstr "" | ||
| 212 | |||
| 213 | #, c-format | ||
| 214 | msgid "Looking for: '%s'\n" | ||
| 215 | msgstr "" | ||
| 216 | |||
| 217 | msgid "dig returned an error status" | ||
| 218 | msgstr "" | ||
| 219 | |||
| 220 | msgid "Server not found in ANSWER SECTION" | ||
| 221 | msgstr "" | ||
| 222 | |||
| 223 | msgid "No ANSWER SECTION found" | ||
| 224 | msgstr "" | ||
| 225 | |||
| 226 | msgid "Probably a non-existent host/domain" | ||
| 227 | msgstr "" | ||
| 228 | |||
| 229 | #, c-format | ||
| 230 | msgid "Port must be a positive integer - %s" | ||
| 231 | msgstr "" | ||
| 232 | |||
| 233 | #, c-format | ||
| 234 | msgid "Warning interval must be a positive integer - %s" | ||
| 235 | msgstr "" | ||
| 236 | |||
| 237 | #, c-format | ||
| 238 | msgid "Critical interval must be a positive integer - %s" | ||
| 239 | msgstr "" | ||
| 240 | |||
| 241 | #, c-format | ||
| 242 | msgid "Timeout interval must be a positive integer - %s" | ||
| 243 | msgstr "" | ||
| 244 | |||
| 245 | #, c-format | ||
| 246 | msgid "This plugin tests the DNS service on the specified host using dig" | ||
| 247 | msgstr "" | ||
| 248 | |||
| 249 | msgid "Force dig to only use IPv4 query transport" | ||
| 250 | msgstr "" | ||
| 251 | |||
| 252 | msgid "Force dig to only use IPv6 query transport" | ||
| 253 | msgstr "" | ||
| 254 | |||
| 255 | msgid "Machine name to lookup" | ||
| 256 | msgstr "" | ||
| 257 | |||
| 258 | msgid "Record type to lookup (default: A)" | ||
| 259 | msgstr "" | ||
| 260 | |||
| 261 | msgid "" | ||
| 262 | "An address expected to be in the answer section. If not set, uses whatever" | ||
| 263 | msgstr "" | ||
| 264 | |||
| 265 | msgid "was in -l" | ||
| 266 | msgstr "" | ||
| 267 | |||
| 268 | msgid "Pass STRING as argument(s) to dig" | ||
| 269 | msgstr "" | ||
| 270 | |||
| 271 | #, c-format | ||
| 272 | msgid "DISK %s: %s not found\n" | ||
| 273 | msgstr "" | ||
| 274 | |||
| 275 | #, c-format | ||
| 276 | msgid "CRITICAL" | ||
| 277 | msgstr "" | ||
| 278 | |||
| 279 | #, c-format | ||
| 280 | msgid "unit type %s not known\n" | ||
| 281 | msgstr "" | ||
| 282 | |||
| 283 | #, c-format | ||
| 284 | msgid "failed allocating storage for '%s'\n" | ||
| 285 | msgstr "" | ||
| 286 | |||
| 287 | #, c-format | ||
| 288 | msgid "UNKNOWN" | ||
| 289 | msgstr "" | ||
| 290 | |||
| 291 | msgid "Must set a threshold value before using -p\n" | ||
| 292 | msgstr "" | ||
| 293 | |||
| 294 | msgid "Must set -E before selecting paths\n" | ||
| 295 | msgstr "" | ||
| 296 | |||
| 297 | msgid "Must set group value before selecting paths\n" | ||
| 298 | msgstr "" | ||
| 299 | |||
| 300 | msgid "" | ||
| 301 | "Paths need to be selected before using -i/-I. Use -A to select all paths " | ||
| 302 | "explicitly" | ||
| 303 | msgstr "" | ||
| 304 | |||
| 305 | msgid "Could not compile regular expression" | ||
| 306 | msgstr "" | ||
| 307 | |||
| 308 | msgid "Must set a threshold value before using -r/-R\n" | ||
| 309 | msgstr "" | ||
| 310 | |||
| 311 | msgid "Regular expression did not match any path or disk" | ||
| 312 | msgstr "" | ||
| 313 | |||
| 314 | msgid "Unknown argument" | ||
| 315 | msgstr "" | ||
| 316 | |||
| 317 | #, c-format | ||
| 318 | msgid " for %s\n" | ||
| 319 | msgstr "" | ||
| 320 | |||
| 321 | msgid "" | ||
| 322 | "This plugin checks the amount of used disk space on a mounted file system" | ||
| 323 | msgstr "" | ||
| 324 | |||
| 325 | msgid "" | ||
| 326 | "and generates an alert if free space is less than one of the threshold values" | ||
| 327 | msgstr "" | ||
| 328 | |||
| 329 | msgid "Exit with WARNING status if less than INTEGER units of disk are free" | ||
| 330 | msgstr "" | ||
| 331 | |||
| 332 | msgid "Exit with WARNING status if less than PERCENT of disk space is free" | ||
| 333 | msgstr "" | ||
| 334 | |||
| 335 | msgid "Exit with CRITICAL status if less than INTEGER units of disk are free" | ||
| 336 | msgstr "" | ||
| 337 | |||
| 338 | msgid "Exit with CRITICAL status if less than PERCENT of disk space is free" | ||
| 339 | msgstr "" | ||
| 340 | |||
| 341 | msgid "Exit with WARNING status if less than PERCENT of inode space is free" | ||
| 342 | msgstr "" | ||
| 343 | |||
| 344 | msgid "Exit with CRITICAL status if less than PERCENT of inode space is free" | ||
| 345 | msgstr "" | ||
| 346 | |||
| 347 | msgid "" | ||
| 348 | "Mount point or block device as emitted by the mount(8) command (may be " | ||
| 349 | "repeated)" | ||
| 350 | msgstr "" | ||
| 351 | |||
| 352 | msgid "Ignore device (only works if -p unspecified)" | ||
| 353 | msgstr "" | ||
| 354 | |||
| 355 | msgid "Clear thresholds" | ||
| 356 | msgstr "" | ||
| 357 | |||
| 358 | msgid "For paths or partitions specified with -p, only check for exact paths" | ||
| 359 | msgstr "" | ||
| 360 | |||
| 361 | msgid "Display only devices/mountpoints with errors" | ||
| 362 | msgstr "" | ||
| 363 | |||
| 364 | msgid "Don't account root-reserved blocks into freespace in perfdata" | ||
| 365 | msgstr "" | ||
| 366 | |||
| 367 | msgid "Display inode usage in perfdata" | ||
| 368 | msgstr "" | ||
| 369 | |||
| 370 | msgid "" | ||
| 371 | "Group paths. Thresholds apply to (free-)space of all partitions together" | ||
| 372 | msgstr "" | ||
| 373 | |||
| 374 | msgid "Same as '--units kB'" | ||
| 375 | msgstr "" | ||
| 376 | |||
| 377 | msgid "Only check local filesystems" | ||
| 378 | msgstr "" | ||
| 379 | |||
| 380 | msgid "" | ||
| 381 | "Only check local filesystems against thresholds. Yet call stat on remote " | ||
| 382 | "filesystems" | ||
| 383 | msgstr "" | ||
| 384 | |||
| 385 | msgid "to test if they are accessible (e.g. to detect Stale NFS Handles)" | ||
| 386 | msgstr "" | ||
| 387 | |||
| 388 | msgid "Display the (block) device instead of the mount point" | ||
| 389 | msgstr "" | ||
| 390 | |||
| 391 | msgid "Same as '--units MB'" | ||
| 392 | msgstr "" | ||
| 393 | |||
| 394 | msgid "Explicitly select all paths. This is equivalent to -R '.*'" | ||
| 395 | msgstr "" | ||
| 396 | |||
| 397 | msgid "" | ||
| 398 | "Case insensitive regular expression for path/partition (may be repeated)" | ||
| 399 | msgstr "" | ||
| 400 | |||
| 401 | msgid "Regular expression for path or partition (may be repeated)" | ||
| 402 | msgstr "" | ||
| 403 | |||
| 404 | msgid "" | ||
| 405 | "Regular expression to ignore selected path/partition (case insensitive) (may " | ||
| 406 | "be repeated)" | ||
| 407 | msgstr "" | ||
| 408 | |||
| 409 | msgid "" | ||
| 410 | "Regular expression to ignore selected path or partition (may be repeated)" | ||
| 411 | msgstr "" | ||
| 412 | |||
| 413 | msgid "" | ||
| 414 | "Return OK if no filesystem matches, filesystem does not exist or is " | ||
| 415 | "inaccessible." | ||
| 416 | msgstr "" | ||
| 417 | |||
| 418 | msgid "(Provide this option before -p / -r / --ereg-path if used)" | ||
| 419 | msgstr "" | ||
| 420 | |||
| 421 | msgid "Choose bytes, kB, MB, GB, TB (default: MB)" | ||
| 422 | msgstr "" | ||
| 423 | |||
| 424 | msgid "Ignore all filesystems of indicated type (may be repeated)" | ||
| 425 | msgstr "" | ||
| 426 | |||
| 427 | msgid "Check only filesystems of indicated type (may be repeated)" | ||
| 428 | msgstr "" | ||
| 429 | |||
| 430 | msgid "Checks /tmp and /var at 10% and 5%, and / at 100MB and 50MB" | ||
| 431 | msgstr "" | ||
| 432 | |||
| 433 | msgid "" | ||
| 434 | "Checks all filesystems not matching -r at 100M and 50M. The fs matching the -" | ||
| 435 | "r regex" | ||
| 436 | msgstr "" | ||
| 437 | |||
| 438 | msgid "" | ||
| 439 | "are grouped which means the freespace thresholds are applied to all disks " | ||
| 440 | "together" | ||
| 441 | msgstr "" | ||
| 442 | |||
| 443 | msgid "" | ||
| 444 | "Checks /foo for 1000M/500M and /bar for 5/3%. All remaining volumes use " | ||
| 445 | "100M/50M" | ||
| 446 | msgstr "" | ||
| 447 | |||
| 448 | #, c-format | ||
| 449 | msgid "%s %s: %s\n" | ||
| 450 | msgstr "" | ||
| 451 | |||
| 452 | msgid "is not accessible" | ||
| 453 | msgstr "" | ||
| 454 | |||
| 455 | msgid "nslookup returned an error status" | ||
| 456 | msgstr "" | ||
| 457 | |||
| 458 | msgid "Warning plugin error" | ||
| 459 | msgstr "" | ||
| 460 | |||
| 461 | #, c-format | ||
| 462 | msgid "DNS CRITICAL - '%s' returned empty server string\n" | ||
| 463 | msgstr "" | ||
| 464 | |||
| 465 | #, c-format | ||
| 466 | msgid "DNS CRITICAL - No response from DNS %s\n" | ||
| 467 | msgstr "" | ||
| 468 | |||
| 469 | #, c-format | ||
| 470 | msgid "DNS CRITICAL - '%s' returned empty host name string\n" | ||
| 471 | msgstr "" | ||
| 472 | |||
| 473 | msgid "Non-authoritative answer:" | ||
| 474 | msgstr "" | ||
| 475 | |||
| 476 | #, c-format | ||
| 477 | msgid "Domain '%s' was not found by the server\n" | ||
| 478 | msgstr "" | ||
| 479 | |||
| 480 | #, c-format | ||
| 481 | msgid "DNS CRITICAL - '%s' msg parsing exited with no address\n" | ||
| 482 | msgstr "" | ||
| 483 | |||
| 484 | #, c-format | ||
| 485 | msgid "expected '%s' but got '%s'" | ||
| 486 | msgstr "" | ||
| 487 | |||
| 488 | #, c-format | ||
| 489 | msgid "Domain '%s' was found by the server: '%s'\n" | ||
| 490 | msgstr "" | ||
| 491 | |||
| 492 | #, c-format | ||
| 493 | msgid "server %s is not authoritative for %s" | ||
| 494 | msgstr "" | ||
| 495 | |||
| 496 | #, c-format | ||
| 497 | msgid "OK" | ||
| 498 | msgstr "" | ||
| 499 | |||
| 500 | #, c-format | ||
| 501 | msgid "WARNING" | ||
| 502 | msgstr "" | ||
| 503 | |||
| 504 | #, c-format | ||
| 505 | msgid "%.3f second response time" | ||
| 506 | msgid_plural "%.3f seconds response time" | ||
| 507 | msgstr[0] "" | ||
| 508 | msgstr[1] "" | ||
| 509 | |||
| 510 | #, c-format | ||
| 511 | msgid ". %s returns %s" | ||
| 512 | msgstr "" | ||
| 513 | |||
| 514 | #, c-format | ||
| 515 | msgid "DNS WARNING - %s\n" | ||
| 516 | msgstr "" | ||
| 517 | |||
| 518 | msgid " Probably a non-existent host/domain" | ||
| 519 | msgstr "" | ||
| 520 | |||
| 521 | #, c-format | ||
| 522 | msgid "DNS CRITICAL - %s\n" | ||
| 523 | msgstr "" | ||
| 524 | |||
| 525 | #, c-format | ||
| 526 | msgid "DNS UNKNOWN - %s\n" | ||
| 527 | msgstr "" | ||
| 528 | |||
| 529 | msgid "Note: nslookup is deprecated and may be removed from future releases." | ||
| 530 | msgstr "" | ||
| 531 | |||
| 532 | msgid "Consider using the `dig' or `host' programs instead. Run nslookup with" | ||
| 533 | msgstr "" | ||
| 534 | |||
| 535 | msgid "the `-sil[ent]' option to prevent this message from appearing." | ||
| 536 | msgstr "" | ||
| 537 | |||
| 538 | #, c-format | ||
| 539 | msgid "No response from DNS %s\n" | ||
| 540 | msgstr "" | ||
| 541 | |||
| 542 | #, c-format | ||
| 543 | msgid "DNS %s has no records\n" | ||
| 544 | msgstr "" | ||
| 545 | |||
| 546 | #, c-format | ||
| 547 | msgid "Connection to DNS %s was refused\n" | ||
| 548 | msgstr "" | ||
| 549 | |||
| 550 | #, c-format | ||
| 551 | msgid "Query was refused by DNS server at %s\n" | ||
| 552 | msgstr "" | ||
| 553 | |||
| 554 | #, c-format | ||
| 555 | msgid "No information returned by DNS server at %s\n" | ||
| 556 | msgstr "" | ||
| 557 | |||
| 558 | msgid "Network is unreachable\n" | ||
| 559 | msgstr "" | ||
| 560 | |||
| 561 | #, c-format | ||
| 562 | msgid "DNS failure for %s\n" | ||
| 563 | msgstr "" | ||
| 564 | |||
| 565 | msgid "Input buffer overflow\n" | ||
| 566 | msgstr "" | ||
| 567 | |||
| 568 | msgid "" | ||
| 569 | "This plugin uses the nslookup program to obtain the IP address for the given " | ||
| 570 | "host/domain query." | ||
| 571 | msgstr "" | ||
| 572 | |||
| 573 | msgid "An optional DNS server to use may be specified." | ||
| 574 | msgstr "" | ||
| 575 | |||
| 576 | msgid "" | ||
| 577 | "If no DNS server is specified, the default server(s) specified in /etc/" | ||
| 578 | "resolv.conf will be used." | ||
| 579 | msgstr "" | ||
| 580 | |||
| 581 | msgid "The name or address you want to query" | ||
| 582 | msgstr "" | ||
| 583 | |||
| 584 | msgid "Optional DNS server you want to use for the lookup" | ||
| 585 | msgstr "" | ||
| 586 | |||
| 587 | msgid "" | ||
| 588 | "Optional IP-ADDRESS/CIDR you expect the DNS server to return. HOST must end" | ||
| 589 | msgstr "" | ||
| 590 | |||
| 591 | msgid "" | ||
| 592 | "with a dot (.). This option can be repeated multiple times (Returns OK if any" | ||
| 593 | msgstr "" | ||
| 594 | |||
| 595 | msgid "value matches)." | ||
| 596 | msgstr "" | ||
| 597 | |||
| 598 | msgid "" | ||
| 599 | "Expect the DNS server to return NXDOMAIN (i.e. the domain was not found)" | ||
| 600 | msgstr "" | ||
| 601 | |||
| 602 | msgid "Cannot be used together with -a" | ||
| 603 | msgstr "" | ||
| 604 | |||
| 605 | msgid "Optionally expect the DNS server to be authoritative for the lookup" | ||
| 606 | msgstr "" | ||
| 607 | |||
| 608 | msgid "Return warning if elapsed time exceeds value. Default off" | ||
| 609 | msgstr "" | ||
| 610 | |||
| 611 | msgid "Return critical if elapsed time exceeds value. Default off" | ||
| 612 | msgstr "" | ||
| 613 | |||
| 614 | msgid "" | ||
| 615 | "Return critical if the list of expected addresses does not match all " | ||
| 616 | "addresses" | ||
| 617 | msgstr "" | ||
| 618 | |||
| 619 | msgid "returned. Default off" | ||
| 620 | msgstr "" | ||
| 621 | |||
| 622 | msgid "Arguments to check_dummy must be an integer" | ||
| 623 | msgstr "" | ||
| 624 | |||
| 625 | #, c-format | ||
| 626 | msgid "Status %d is not a supported error state\n" | ||
| 627 | msgstr "" | ||
| 628 | |||
| 629 | msgid "" | ||
| 630 | "This plugin will simply return the state corresponding to the numeric value" | ||
| 631 | msgstr "" | ||
| 632 | |||
| 633 | msgid "of the <state> argument with optional text" | ||
| 634 | msgstr "" | ||
| 635 | |||
| 636 | #, c-format | ||
| 637 | msgid "Could not open pipe: %s\n" | ||
| 638 | msgstr "" | ||
| 639 | |||
| 640 | #, c-format | ||
| 641 | msgid "Could not open stderr for %s\n" | ||
| 642 | msgstr "" | ||
| 643 | |||
| 644 | msgid "FPING UNKNOWN - IP address not found\n" | ||
| 645 | msgstr "" | ||
| 646 | |||
| 647 | msgid "FPING UNKNOWN - invalid commandline argument\n" | ||
| 648 | msgstr "" | ||
| 649 | |||
| 650 | msgid "FPING UNKNOWN - failed system call\n" | ||
| 651 | msgstr "" | ||
| 652 | |||
| 653 | #, c-format | ||
| 654 | msgid "FPING %s - %s (rta=%f ms)|%s\n" | ||
| 655 | msgstr "" | ||
| 656 | |||
| 657 | #, c-format | ||
| 658 | msgid "FPING UNKNOWN - %s not found\n" | ||
| 659 | msgstr "" | ||
| 660 | |||
| 661 | #, c-format | ||
| 662 | msgid "FPING CRITICAL - %s is unreachable\n" | ||
| 663 | msgstr "" | ||
| 664 | |||
| 665 | #, c-format | ||
| 666 | msgid "FPING UNKNOWN - %s parameter error\n" | ||
| 667 | msgstr "" | ||
| 668 | |||
| 669 | #, c-format | ||
| 670 | msgid "FPING CRITICAL - %s is down\n" | ||
| 671 | msgstr "" | ||
| 672 | |||
| 673 | #, c-format | ||
| 674 | msgid "FPING %s - %s (loss=%.0f%%, rta=%f ms)|%s %s\n" | ||
| 675 | msgstr "" | ||
| 676 | |||
| 677 | #, c-format | ||
| 678 | msgid "FPING %s - %s (loss=%.0f%% )|%s\n" | ||
| 679 | msgstr "" | ||
| 680 | |||
| 681 | msgid "Invalid hostname/address" | ||
| 682 | msgstr "" | ||
| 683 | |||
| 684 | msgid "IPv6 support not available\n" | ||
| 685 | msgstr "" | ||
| 686 | |||
| 687 | msgid "Packet size must be a positive integer" | ||
| 688 | msgstr "" | ||
| 689 | |||
| 690 | msgid "Packet count must be a positive integer" | ||
| 691 | msgstr "" | ||
| 692 | |||
| 693 | msgid "Target timeout must be a positive integer" | ||
| 694 | msgstr "" | ||
| 695 | |||
| 696 | msgid "Interval must be a positive integer" | ||
| 697 | msgstr "" | ||
| 698 | |||
| 699 | msgid "Hostname was not supplied" | ||
| 700 | msgstr "" | ||
| 701 | |||
| 702 | #, c-format | ||
| 703 | msgid "%s: Only one threshold may be packet loss (%s)\n" | ||
| 704 | msgstr "" | ||
| 705 | |||
| 706 | #, c-format | ||
| 707 | msgid "%s: Only one threshold must be packet loss (%s)\n" | ||
| 708 | msgstr "" | ||
| 709 | |||
| 710 | msgid "" | ||
| 711 | "This plugin will use the fping command to ping the specified host for a fast " | ||
| 712 | "check" | ||
| 713 | msgstr "" | ||
| 714 | |||
| 715 | msgid "Note that it is necessary to set the suid flag on fping." | ||
| 716 | msgstr "" | ||
| 717 | |||
| 718 | msgid "" | ||
| 719 | "name or IP Address of host to ping (IP Address bypasses name lookup, " | ||
| 720 | "reducing system load)" | ||
| 721 | msgstr "" | ||
| 722 | |||
| 723 | msgid "warning threshold pair" | ||
| 724 | msgstr "" | ||
| 725 | |||
| 726 | msgid "critical threshold pair" | ||
| 727 | msgstr "" | ||
| 728 | |||
| 729 | msgid "Return OK after first successful reply" | ||
| 730 | msgstr "" | ||
| 731 | |||
| 732 | msgid "size of ICMP packet" | ||
| 733 | msgstr "" | ||
| 734 | |||
| 735 | msgid "number of ICMP packets to send" | ||
| 736 | msgstr "" | ||
| 737 | |||
| 738 | msgid "Target timeout (ms)" | ||
| 739 | msgstr "" | ||
| 740 | |||
| 741 | msgid "Interval (ms) between sending packets" | ||
| 742 | msgstr "" | ||
| 743 | |||
| 744 | msgid "name or IP Address of sourceip" | ||
| 745 | msgstr "" | ||
| 746 | |||
| 747 | msgid "source interface name" | ||
| 748 | msgstr "" | ||
| 749 | |||
| 750 | #, c-format | ||
| 751 | msgid "" | ||
| 752 | "THRESHOLD is <rta>,<pl>%% where <rta> is the round trip average travel time " | ||
| 753 | "(ms)" | ||
| 754 | msgstr "" | ||
| 755 | |||
| 756 | msgid "" | ||
| 757 | "which triggers a WARNING or CRITICAL state, and <pl> is the percentage of" | ||
| 758 | msgstr "" | ||
| 759 | |||
| 760 | msgid "packet loss to trigger an alarm state." | ||
| 761 | msgstr "" | ||
| 762 | |||
| 763 | msgid "IPv4 is used by default. Specify -6 to use IPv6." | ||
| 764 | msgstr "" | ||
| 765 | |||
| 766 | #, c-format | ||
| 767 | msgid "CRITICAL - Host type parameter incorrect!\n" | ||
| 768 | msgstr "" | ||
| 769 | |||
| 770 | #, c-format | ||
| 771 | msgid "CRITICAL - Host not found\n" | ||
| 772 | msgstr "" | ||
| 773 | |||
| 774 | #, c-format | ||
| 775 | msgid "CRITICAL - Game server down or unavailable\n" | ||
| 776 | msgstr "" | ||
| 777 | |||
| 778 | #, c-format | ||
| 779 | msgid "CRITICAL - Game server timeout\n" | ||
| 780 | msgstr "" | ||
| 781 | |||
| 782 | #, c-format | ||
| 783 | msgid "This plugin tests game server connections with the specified host." | ||
| 784 | msgstr "" | ||
| 785 | |||
| 786 | msgid "Optional port of which to connect" | ||
| 787 | msgstr "" | ||
| 788 | |||
| 789 | msgid "Field number in raw qstat output that contains game name" | ||
| 790 | msgstr "" | ||
| 791 | |||
| 792 | msgid "Field number in raw qstat output that contains map name" | ||
| 793 | msgstr "" | ||
| 794 | |||
| 795 | msgid "Field number in raw qstat output that contains ping time" | ||
| 796 | msgstr "" | ||
| 797 | |||
| 798 | msgid "" | ||
| 799 | "This plugin uses the 'qstat' command, the popular game server status query " | ||
| 800 | "tool." | ||
| 801 | msgstr "" | ||
| 802 | |||
| 803 | msgid "" | ||
| 804 | "If you don't have the package installed, you will need to download it from" | ||
| 805 | msgstr "" | ||
| 806 | |||
| 807 | msgid "https://github.com/multiplay/qstat before you can use this plugin." | ||
| 808 | msgstr "" | ||
| 809 | |||
| 810 | msgid "Paper Jam" | ||
| 811 | msgstr "" | ||
| 812 | |||
| 813 | msgid "Out of Paper" | ||
| 814 | msgstr "" | ||
| 815 | |||
| 816 | msgid "Printer Offline" | ||
| 817 | msgstr "" | ||
| 818 | |||
| 819 | msgid "Peripheral Error" | ||
| 820 | msgstr "" | ||
| 821 | |||
| 822 | msgid "Intervention Required" | ||
| 823 | msgstr "" | ||
| 824 | |||
| 825 | msgid "Toner Low" | ||
| 826 | msgstr "" | ||
| 827 | |||
| 828 | msgid "Insufficient Memory" | ||
| 829 | msgstr "" | ||
| 830 | |||
| 831 | msgid "A Door is Open" | ||
| 832 | msgstr "" | ||
| 833 | |||
| 834 | msgid "Output Tray is Full" | ||
| 835 | msgstr "" | ||
| 836 | |||
| 837 | msgid "Data too Slow for Engine" | ||
| 838 | msgstr "" | ||
| 839 | |||
| 840 | msgid "Unknown Paper Error" | ||
| 841 | msgstr "" | ||
| 842 | |||
| 843 | #, c-format | ||
| 844 | msgid "Printer ok - (%s)\n" | ||
| 845 | msgstr "" | ||
| 846 | |||
| 847 | msgid "Port must be a positive short integer" | ||
| 848 | msgstr "" | ||
| 849 | |||
| 850 | msgid "This plugin tests the STATUS of an HP printer with a JetDirect card." | ||
| 851 | msgstr "" | ||
| 852 | |||
| 853 | msgid "Net-snmp must be installed on the computer running the plugin." | ||
| 854 | msgstr "" | ||
| 855 | |||
| 856 | msgid "The SNMP community name " | ||
| 857 | msgstr "" | ||
| 858 | |||
| 859 | #, c-format | ||
| 860 | msgid "(default=%s)" | ||
| 861 | msgstr "" | ||
| 862 | |||
| 863 | msgid "Specify the port to check " | ||
| 864 | msgstr "" | ||
| 865 | |||
| 866 | msgid "Disable paper check " | ||
| 867 | msgstr "" | ||
| 868 | |||
| 869 | msgid "file does not exist or is not readable" | ||
| 870 | msgstr "" | ||
| 871 | |||
| 872 | msgid "Invalid certificate expiration period" | ||
| 873 | msgstr "" | ||
| 874 | |||
| 875 | msgid "" | ||
| 876 | "Invalid option - Valid SSL/TLS versions: 2, 3, 1, 1.1, 1.2 (with optional " | ||
| 877 | "'+' suffix)" | ||
| 878 | msgstr "" | ||
| 879 | |||
| 880 | msgid "Invalid option - SSL is not available" | ||
| 881 | msgstr "" | ||
| 882 | |||
| 883 | msgid "Invalid max_redirs count" | ||
| 884 | msgstr "" | ||
| 885 | |||
| 886 | msgid "Invalid onredirect option" | ||
| 887 | msgstr "" | ||
| 888 | |||
| 889 | #, c-format | ||
| 890 | msgid "option f:%d \n" | ||
| 891 | msgstr "" | ||
| 892 | |||
| 893 | msgid "Invalid port number" | ||
| 894 | msgstr "" | ||
| 895 | |||
| 896 | #, c-format | ||
| 897 | msgid "Could Not Compile Regular Expression: %s" | ||
| 898 | msgstr "" | ||
| 899 | |||
| 900 | msgid "IPv6 support not available" | ||
| 901 | msgstr "" | ||
| 902 | |||
| 903 | msgid "You must specify a server address or host name" | ||
| 904 | msgstr "" | ||
| 905 | |||
| 906 | msgid "" | ||
| 907 | "If you use a client certificate you must also specify a private key file" | ||
| 908 | msgstr "" | ||
| 909 | |||
| 910 | msgid "HTTP UNKNOWN - Memory allocation error\n" | ||
| 911 | msgstr "" | ||
| 912 | |||
| 913 | #, c-format | ||
| 914 | msgid "%sServer date unknown, " | ||
| 915 | msgstr "" | ||
| 916 | |||
| 917 | #, c-format | ||
| 918 | msgid "%sDocument modification date unknown, " | ||
| 919 | msgstr "" | ||
| 920 | |||
| 921 | #, c-format | ||
| 922 | msgid "%sServer date \"%100s\" unparsable, " | ||
| 923 | msgstr "" | ||
| 924 | |||
| 925 | #, c-format | ||
| 926 | msgid "%sDocument date \"%100s\" unparsable, " | ||
| 927 | msgstr "" | ||
| 928 | |||
| 929 | #, c-format | ||
| 930 | msgid "%sDocument is %d seconds in the future, " | ||
| 931 | msgstr "" | ||
| 932 | |||
| 933 | #, c-format | ||
| 934 | msgid "%sLast modified %.1f days ago, " | ||
| 935 | msgstr "" | ||
| 936 | |||
| 937 | #, c-format | ||
| 938 | msgid "%sLast modified %d:%02d:%02d ago, " | ||
| 939 | msgstr "" | ||
| 940 | |||
| 941 | msgid "HTTP CRITICAL - Unable to open TCP socket\n" | ||
| 942 | msgstr "" | ||
| 943 | |||
| 944 | msgid "HTTP UNKNOWN - Could not allocate memory for full_page\n" | ||
| 945 | msgstr "" | ||
| 946 | |||
| 947 | msgid "HTTP CRITICAL - Error on receive\n" | ||
| 948 | msgstr "" | ||
| 949 | |||
| 950 | msgid "HTTP CRITICAL - No data received from host\n" | ||
| 951 | msgstr "" | ||
| 952 | |||
| 953 | #, c-format | ||
| 954 | msgid "Invalid HTTP response received from host: %s\n" | ||
| 955 | msgstr "" | ||
| 956 | |||
| 957 | #, c-format | ||
| 958 | msgid "Invalid HTTP response received from host on port %d: %s\n" | ||
| 959 | msgstr "" | ||
| 960 | |||
| 961 | #, c-format | ||
| 962 | msgid "" | ||
| 963 | "%s\n" | ||
| 964 | "%s" | ||
| 965 | msgstr "" | ||
| 966 | |||
| 967 | #, c-format | ||
| 968 | msgid "Status line output matched \"%s\" - " | ||
| 969 | msgstr "" | ||
| 970 | |||
| 971 | #, c-format | ||
| 972 | msgid "HTTP CRITICAL: Invalid Status Line (%s)\n" | ||
| 973 | msgstr "" | ||
| 974 | |||
| 975 | #, c-format | ||
| 976 | msgid "HTTP CRITICAL: Invalid Status (%s)\n" | ||
| 977 | msgstr "" | ||
| 978 | |||
| 979 | #, c-format | ||
| 980 | msgid "%s - " | ||
| 981 | msgstr "" | ||
| 982 | |||
| 983 | #, c-format | ||
| 984 | msgid "%sheader '%s' not found on '%s://%s:%d%s', " | ||
| 985 | msgstr "" | ||
| 986 | |||
| 987 | #, c-format | ||
| 988 | msgid "%sstring '%s' not found on '%s://%s:%d%s', " | ||
| 989 | msgstr "" | ||
| 990 | |||
| 991 | #, c-format | ||
| 992 | msgid "%spattern not found, " | ||
| 993 | msgstr "" | ||
| 994 | |||
| 995 | #, c-format | ||
| 996 | msgid "%spattern found, " | ||
| 997 | msgstr "" | ||
| 998 | |||
| 999 | #, c-format | ||
| 1000 | msgid "%sExecute Error: %s, " | ||
| 1001 | msgstr "" | ||
| 1002 | |||
| 1003 | #, c-format | ||
| 1004 | msgid "%spage size %d too large, " | ||
| 1005 | msgstr "" | ||
| 1006 | |||
| 1007 | #, c-format | ||
| 1008 | msgid "%spage size %d too small, " | ||
| 1009 | msgstr "" | ||
| 1010 | |||
| 1011 | #, c-format | ||
| 1012 | msgid "%s - %d bytes in %.3f second response time %s|%s %s %s %s %s %s %s" | ||
| 1013 | msgstr "" | ||
| 1014 | |||
| 1015 | #, c-format | ||
| 1016 | msgid "%s - %d bytes in %.3f second response time %s|%s %s" | ||
| 1017 | msgstr "" | ||
| 1018 | |||
| 1019 | msgid "HTTP UNKNOWN - Could not allocate addr\n" | ||
| 1020 | msgstr "" | ||
| 1021 | |||
| 1022 | msgid "HTTP UNKNOWN - Could not allocate URL\n" | ||
| 1023 | msgstr "" | ||
| 1024 | |||
| 1025 | #, c-format | ||
| 1026 | msgid "HTTP UNKNOWN - Could not find redirect location - %s%s\n" | ||
| 1027 | msgstr "" | ||
| 1028 | |||
| 1029 | #, c-format | ||
| 1030 | msgid "HTTP UNKNOWN - Empty redirect location%s\n" | ||
| 1031 | msgstr "" | ||
| 1032 | |||
| 1033 | #, c-format | ||
| 1034 | msgid "HTTP UNKNOWN - Could not parse redirect location - %s%s\n" | ||
| 1035 | msgstr "" | ||
| 1036 | |||
| 1037 | #, c-format | ||
| 1038 | msgid "HTTP WARNING - maximum redirection depth %d exceeded - %s://%s:%d%s%s\n" | ||
| 1039 | msgstr "" | ||
| 1040 | |||
| 1041 | #, c-format | ||
| 1042 | msgid "HTTP CRITICAL - redirection creates an infinite loop - %s://%s:%d%s%s\n" | ||
| 1043 | msgstr "" | ||
| 1044 | |||
| 1045 | #, c-format | ||
| 1046 | msgid "HTTP UNKNOWN - Redirection to port above %d - %s://%s:%d%s%s\n" | ||
| 1047 | msgstr "" | ||
| 1048 | |||
| 1049 | #, c-format | ||
| 1050 | msgid "Redirection to %s://%s:%d%s\n" | ||
| 1051 | msgstr "" | ||
| 1052 | |||
| 1053 | msgid "This plugin tests the HTTP service on the specified host. It can test" | ||
| 1054 | msgstr "" | ||
| 1055 | |||
| 1056 | msgid "normal (http) and secure (https) servers, follow redirects, search for" | ||
| 1057 | msgstr "" | ||
| 1058 | |||
| 1059 | msgid "strings and regular expressions, check connection times, and report on" | ||
| 1060 | msgstr "" | ||
| 1061 | |||
| 1062 | msgid "certificate expiration times." | ||
| 1063 | msgstr "" | ||
| 1064 | |||
| 1065 | #, c-format | ||
| 1066 | msgid "In the first form, make an HTTP request." | ||
| 1067 | msgstr "" | ||
| 1068 | |||
| 1069 | #, c-format | ||
| 1070 | msgid "" | ||
| 1071 | "In the second form, connect to the server and check the TLS certificate." | ||
| 1072 | msgstr "" | ||
| 1073 | |||
| 1074 | #, c-format | ||
| 1075 | msgid "NOTE: One or both of -H and -I must be specified" | ||
| 1076 | msgstr "" | ||
| 1077 | |||
| 1078 | msgid "Host name argument for servers using host headers (virtual host)" | ||
| 1079 | msgstr "" | ||
| 1080 | |||
| 1081 | msgid "Append a port to include it in the header (eg: example.com:5000)" | ||
| 1082 | msgstr "" | ||
| 1083 | |||
| 1084 | msgid "" | ||
| 1085 | "IP address or name (use numeric address if possible to bypass DNS lookup)." | ||
| 1086 | msgstr "" | ||
| 1087 | |||
| 1088 | msgid "Port number (default: " | ||
| 1089 | msgstr "" | ||
| 1090 | |||
| 1091 | msgid "" | ||
| 1092 | "Connect via SSL. Port defaults to 443. VERSION is optional, and prevents" | ||
| 1093 | msgstr "" | ||
| 1094 | |||
| 1095 | msgid "auto-negotiation (2 = SSLv2, 3 = SSLv3, 1 = TLSv1, 1.1 = TLSv1.1," | ||
| 1096 | msgstr "" | ||
| 1097 | |||
| 1098 | msgid "1.2 = TLSv1.2). With a '+' suffix, newer versions are also accepted." | ||
| 1099 | msgstr "" | ||
| 1100 | |||
| 1101 | msgid "Enable SSL/TLS hostname extension support (SNI)" | ||
| 1102 | msgstr "" | ||
| 1103 | |||
| 1104 | msgid "" | ||
| 1105 | "Minimum number of days a certificate has to be valid. Port defaults to 443" | ||
| 1106 | msgstr "" | ||
| 1107 | |||
| 1108 | msgid "" | ||
| 1109 | "(when this option is used the URL is not checked by default. You can use" | ||
| 1110 | msgstr "" | ||
| 1111 | |||
| 1112 | msgid " --continue-after-certificate to override this behavior)" | ||
| 1113 | msgstr "" | ||
| 1114 | |||
| 1115 | msgid "" | ||
| 1116 | "Allows the HTTP check to continue after performing the certificate check." | ||
| 1117 | msgstr "" | ||
| 1118 | |||
| 1119 | msgid "Does nothing unless -C is used." | ||
| 1120 | msgstr "" | ||
| 1121 | |||
| 1122 | msgid "Name of file that contains the client certificate (PEM format)" | ||
| 1123 | msgstr "" | ||
| 1124 | |||
| 1125 | msgid "to be used in establishing the SSL session" | ||
| 1126 | msgstr "" | ||
| 1127 | |||
| 1128 | msgid "Name of file containing the private key (PEM format)" | ||
| 1129 | msgstr "" | ||
| 1130 | |||
| 1131 | msgid "matching the client certificate" | ||
| 1132 | msgstr "" | ||
| 1133 | |||
| 1134 | msgid "Comma-delimited list of strings, at least one of them is expected in" | ||
| 1135 | msgstr "" | ||
| 1136 | |||
| 1137 | msgid "the first (status) line of the server response (default: " | ||
| 1138 | msgstr "" | ||
| 1139 | |||
| 1140 | msgid "" | ||
| 1141 | "If specified skips all other status line logic (ex: 3xx, 4xx, 5xx processing)" | ||
| 1142 | msgstr "" | ||
| 1143 | |||
| 1144 | msgid "String to expect in the response headers" | ||
| 1145 | msgstr "" | ||
| 1146 | |||
| 1147 | msgid "String to expect in the content" | ||
| 1148 | msgstr "" | ||
| 1149 | |||
| 1150 | msgid "URL to GET or POST (default: /)" | ||
| 1151 | msgstr "" | ||
| 1152 | |||
| 1153 | msgid "URL encoded http POST data" | ||
| 1154 | msgstr "" | ||
| 1155 | |||
| 1156 | msgid "Set HTTP method." | ||
| 1157 | msgstr "" | ||
| 1158 | |||
| 1159 | msgid "Don't wait for document body: stop reading after headers." | ||
| 1160 | msgstr "" | ||
| 1161 | |||
| 1162 | msgid "(Note that this still does an HTTP GET or POST, not a HEAD.)" | ||
| 1163 | msgstr "" | ||
| 1164 | |||
| 1165 | msgid "Warn if document is more than SECONDS old. the number can also be of" | ||
| 1166 | msgstr "" | ||
| 1167 | |||
| 1168 | msgid "the form \"10m\" for minutes, \"10h\" for hours, or \"10d\" for days." | ||
| 1169 | msgstr "" | ||
| 1170 | |||
| 1171 | msgid "specify Content-Type header media type when POSTing\n" | ||
| 1172 | msgstr "" | ||
| 1173 | |||
| 1174 | msgid "Allow regex to span newlines (must precede -r or -R)" | ||
| 1175 | msgstr "" | ||
| 1176 | |||
| 1177 | msgid "Search page for regex STRING" | ||
| 1178 | msgstr "" | ||
| 1179 | |||
| 1180 | msgid "Search page for case-insensitive regex STRING" | ||
| 1181 | msgstr "" | ||
| 1182 | |||
| 1183 | msgid "Return CRITICAL if found, OK if not\n" | ||
| 1184 | msgstr "" | ||
| 1185 | |||
| 1186 | msgid "Username:password on sites with basic authentication" | ||
| 1187 | msgstr "" | ||
| 1188 | |||
| 1189 | msgid "Username:password on proxy-servers with basic authentication" | ||
| 1190 | msgstr "" | ||
| 1191 | |||
| 1192 | msgid "String to be sent in http header as \"User Agent\"" | ||
| 1193 | msgstr "" | ||
| 1194 | |||
| 1195 | msgid "" | ||
| 1196 | "Any other tags to be sent in http header. Use multiple times for additional " | ||
| 1197 | "headers" | ||
| 1198 | msgstr "" | ||
| 1199 | |||
| 1200 | msgid "Print additional performance data" | ||
| 1201 | msgstr "" | ||
| 1202 | |||
| 1203 | msgid "Print body content below status line" | ||
| 1204 | msgstr "" | ||
| 1205 | |||
| 1206 | msgid "Wrap output in HTML link (obsoleted by urlize)" | ||
| 1207 | msgstr "" | ||
| 1208 | |||
| 1209 | msgid "How to handle redirected pages. sticky is like follow but stick to the" | ||
| 1210 | msgstr "" | ||
| 1211 | |||
| 1212 | msgid "specified IP address. stickyport also ensures port stays the same." | ||
| 1213 | msgstr "" | ||
| 1214 | |||
| 1215 | msgid "Maximal number of redirects (default: " | ||
| 1216 | msgstr "" | ||
| 1217 | |||
| 1218 | msgid "Minimum page size required (bytes) : Maximum page size required (bytes)" | ||
| 1219 | msgstr "" | ||
| 1220 | |||
| 1221 | msgid "This plugin will attempt to open an HTTP connection with the host." | ||
| 1222 | msgstr "" | ||
| 1223 | |||
| 1224 | msgid "" | ||
| 1225 | "Successful connects return STATE_OK, refusals and timeouts return " | ||
| 1226 | "STATE_CRITICAL" | ||
| 1227 | msgstr "" | ||
| 1228 | |||
| 1229 | msgid "" | ||
| 1230 | "other errors return STATE_UNKNOWN. Successful connects, but incorrect " | ||
| 1231 | "response" | ||
| 1232 | msgstr "" | ||
| 1233 | |||
| 1234 | msgid "" | ||
| 1235 | "messages from the host result in STATE_WARNING return values. If you are" | ||
| 1236 | msgstr "" | ||
| 1237 | |||
| 1238 | msgid "" | ||
| 1239 | "checking a virtual server that uses 'host headers' you must supply the FQDN" | ||
| 1240 | msgstr "" | ||
| 1241 | |||
| 1242 | msgid "(fully qualified domain name) as the [host_name] argument." | ||
| 1243 | msgstr "" | ||
| 1244 | |||
| 1245 | msgid "This plugin can also check whether an SSL enabled web server is able to" | ||
| 1246 | msgstr "" | ||
| 1247 | |||
| 1248 | msgid "serve content (optionally within a specified time) or whether the X509 " | ||
| 1249 | msgstr "" | ||
| 1250 | |||
| 1251 | msgid "certificate is still valid for the specified number of days." | ||
| 1252 | msgstr "" | ||
| 1253 | |||
| 1254 | msgid "Please note that this plugin does not check if the presented server" | ||
| 1255 | msgstr "" | ||
| 1256 | |||
| 1257 | msgid "certificate matches the hostname of the server, or if the certificate" | ||
| 1258 | msgstr "" | ||
| 1259 | |||
| 1260 | msgid "has a valid chain of trust to one of the locally installed CAs." | ||
| 1261 | msgstr "" | ||
| 1262 | |||
| 1263 | msgid "" | ||
| 1264 | "When the 'www.verisign.com' server returns its content within 5 seconds," | ||
| 1265 | msgstr "" | ||
| 1266 | |||
| 1267 | msgid "" | ||
| 1268 | "a STATE_OK will be returned. When the server returns its content but exceeds" | ||
| 1269 | msgstr "" | ||
| 1270 | |||
| 1271 | msgid "" | ||
| 1272 | "the 5-second threshold, a STATE_WARNING will be returned. When an error " | ||
| 1273 | "occurs," | ||
| 1274 | msgstr "" | ||
| 1275 | |||
| 1276 | msgid "a STATE_CRITICAL will be returned." | ||
| 1277 | msgstr "" | ||
| 1278 | |||
| 1279 | msgid "" | ||
| 1280 | "When the certificate of 'www.verisign.com' is valid for more than 14 days," | ||
| 1281 | msgstr "" | ||
| 1282 | |||
| 1283 | msgid "" | ||
| 1284 | "a STATE_OK is returned. When the certificate is still valid, but for less " | ||
| 1285 | "than" | ||
| 1286 | msgstr "" | ||
| 1287 | |||
| 1288 | msgid "" | ||
| 1289 | "14 days, a STATE_WARNING is returned. A STATE_CRITICAL will be returned when" | ||
| 1290 | msgstr "" | ||
| 1291 | |||
| 1292 | msgid "the certificate is expired." | ||
| 1293 | msgstr "" | ||
| 1294 | |||
| 1295 | msgid "" | ||
| 1296 | "When the certificate of 'www.verisign.com' is valid for more than 30 days," | ||
| 1297 | msgstr "" | ||
| 1298 | |||
| 1299 | msgid "30 days, but more than 14 days, a STATE_WARNING is returned." | ||
| 1300 | msgstr "" | ||
| 1301 | |||
| 1302 | msgid "" | ||
| 1303 | "A STATE_CRITICAL will be returned when certificate expires in less than 14 " | ||
| 1304 | "days" | ||
| 1305 | msgstr "" | ||
| 1306 | |||
| 1307 | msgid "" | ||
| 1308 | "check_http -I 192.168.100.35 -p 80 -u https://www.verisign.com/ -S -j " | ||
| 1309 | "CONNECT -H www.verisign.com " | ||
| 1310 | msgstr "" | ||
| 1311 | |||
| 1312 | msgid "" | ||
| 1313 | "all these options are needed: -I <proxy> -p <proxy-port> -u <check-url> -" | ||
| 1314 | "S(sl) -j CONNECT -H <webserver>" | ||
| 1315 | msgstr "" | ||
| 1316 | |||
| 1317 | msgid "" | ||
| 1318 | "a STATE_CRITICAL will be returned. By adding a colon to the method you can " | ||
| 1319 | "set the method used" | ||
| 1320 | msgstr "" | ||
| 1321 | |||
| 1322 | msgid "inside the proxied connection: -j CONNECT:POST" | ||
| 1323 | msgstr "" | ||
| 1324 | |||
| 1325 | #, c-format | ||
| 1326 | msgid "Could not connect to the server at port %i\n" | ||
| 1327 | msgstr "" | ||
| 1328 | |||
| 1329 | #, c-format | ||
| 1330 | msgid "Could not set protocol version %d\n" | ||
| 1331 | msgstr "" | ||
| 1332 | |||
| 1333 | #, c-format | ||
| 1334 | msgid "Could not init TLS at port %i!\n" | ||
| 1335 | msgstr "" | ||
| 1336 | |||
| 1337 | #, c-format | ||
| 1338 | msgid "TLS not supported by the libraries!\n" | ||
| 1339 | msgstr "" | ||
| 1340 | |||
| 1341 | #, c-format | ||
| 1342 | msgid "Could not init startTLS at port %i!\n" | ||
| 1343 | msgstr "" | ||
| 1344 | |||
| 1345 | #, c-format | ||
| 1346 | msgid "startTLS not supported by the library, needs LDAPv3!\n" | ||
| 1347 | msgstr "" | ||
| 1348 | |||
| 1349 | #, c-format | ||
| 1350 | msgid "Could not bind to the LDAP server\n" | ||
| 1351 | msgstr "" | ||
| 1352 | |||
| 1353 | #, c-format | ||
| 1354 | msgid "Could not search/find objectclasses in %s\n" | ||
| 1355 | msgstr "" | ||
| 1356 | |||
| 1357 | #, c-format | ||
| 1358 | msgid "LDAP %s - found %d entries in %.3f seconds|%s %s\n" | ||
| 1359 | msgstr "" | ||
| 1360 | |||
| 1361 | #, c-format | ||
| 1362 | msgid "LDAP %s - %.3f seconds response time|%s\n" | ||
| 1363 | msgstr "" | ||
| 1364 | |||
| 1365 | #, c-format | ||
| 1366 | msgid "%s cannot be combined with %s" | ||
| 1367 | msgstr "" | ||
| 1368 | |||
| 1369 | msgid "Please specify the host name\n" | ||
| 1370 | msgstr "" | ||
| 1371 | |||
| 1372 | msgid "Please specify the LDAP base\n" | ||
| 1373 | msgstr "" | ||
| 1374 | |||
| 1375 | msgid "ldap attribute to search (default: \"(objectclass=*)\"" | ||
| 1376 | msgstr "" | ||
| 1377 | |||
| 1378 | msgid "ldap base (eg. ou=my unit, o=my org, c=at" | ||
| 1379 | msgstr "" | ||
| 1380 | |||
| 1381 | msgid "ldap bind DN (if required)" | ||
| 1382 | msgstr "" | ||
| 1383 | |||
| 1384 | msgid "" | ||
| 1385 | "ldap password (if required, or set the password through environment variable " | ||
| 1386 | "'LDAP_PASSWORD')" | ||
| 1387 | msgstr "" | ||
| 1388 | |||
| 1389 | msgid "use starttls mechanism introduced in protocol version 3" | ||
| 1390 | msgstr "" | ||
| 1391 | |||
| 1392 | msgid "use ldaps (ldap v2 ssl method). this also sets the default port to" | ||
| 1393 | msgstr "" | ||
| 1394 | |||
| 1395 | msgid "use ldap protocol version 2" | ||
| 1396 | msgstr "" | ||
| 1397 | |||
| 1398 | msgid "use ldap protocol version 3" | ||
| 1399 | msgstr "" | ||
| 1400 | |||
| 1401 | msgid "default protocol version:" | ||
| 1402 | msgstr "" | ||
| 1403 | |||
| 1404 | msgid "Number of found entries to result in warning status" | ||
| 1405 | msgstr "" | ||
| 1406 | |||
| 1407 | msgid "Number of found entries to result in critical status" | ||
| 1408 | msgstr "" | ||
| 1409 | |||
| 1410 | msgid "If this plugin is called via 'check_ldaps', method 'STARTTLS' will be" | ||
| 1411 | msgstr "" | ||
| 1412 | |||
| 1413 | #, c-format | ||
| 1414 | msgid "" | ||
| 1415 | " implied (using default port %i) unless --port=636 is specified. In that " | ||
| 1416 | "case\n" | ||
| 1417 | msgstr "" | ||
| 1418 | |||
| 1419 | msgid "'SSL on connect' will be used no matter how the plugin was called." | ||
| 1420 | msgstr "" | ||
| 1421 | |||
| 1422 | msgid "" | ||
| 1423 | "This detection is deprecated, please use 'check_ldap' with the '--starttls' " | ||
| 1424 | "or '--ssl' flags" | ||
| 1425 | msgstr "" | ||
| 1426 | |||
| 1427 | msgid "to define the behaviour explicitly instead." | ||
| 1428 | msgstr "" | ||
| 1429 | |||
| 1430 | msgid "The parameters --warn-entries and --crit-entries are optional." | ||
| 1431 | msgstr "" | ||
| 1432 | |||
| 1433 | msgid "Warning threshold must be float or float triplet!\n" | ||
| 1434 | msgstr "" | ||
| 1435 | |||
| 1436 | #, c-format | ||
| 1437 | msgid "Error opening %s\n" | ||
| 1438 | msgstr "" | ||
| 1439 | |||
| 1440 | #, c-format | ||
| 1441 | msgid "could not parse load from uptime %s: %d\n" | ||
| 1442 | msgstr "" | ||
| 1443 | |||
| 1444 | #, c-format | ||
| 1445 | msgid "Error code %d returned in %s\n" | ||
| 1446 | msgstr "" | ||
| 1447 | |||
| 1448 | #, c-format | ||
| 1449 | msgid "Error in getloadavg()\n" | ||
| 1450 | msgstr "" | ||
| 1451 | |||
| 1452 | #, c-format | ||
| 1453 | msgid "Error processing %s\n" | ||
| 1454 | msgstr "" | ||
| 1455 | |||
| 1456 | #, c-format | ||
| 1457 | msgid "load average: %.2f, %.2f, %.2f" | ||
| 1458 | msgstr "" | ||
| 1459 | |||
| 1460 | #, c-format | ||
| 1461 | msgid "Critical threshold for %d-minute load average is not specified\n" | ||
| 1462 | msgstr "" | ||
| 1463 | |||
| 1464 | #, c-format | ||
| 1465 | msgid "Warning threshold for %d-minute load average is not specified\n" | ||
| 1466 | msgstr "" | ||
| 1467 | |||
| 1468 | #, c-format | ||
| 1469 | msgid "" | ||
| 1470 | "Parameter inconsistency: %d-minute \"warning load\" is greater than " | ||
| 1471 | "\"critical load\"\n" | ||
| 1472 | msgstr "" | ||
| 1473 | |||
| 1474 | #, c-format | ||
| 1475 | msgid "This plugin tests the current system load average." | ||
| 1476 | msgstr "" | ||
| 1477 | |||
| 1478 | msgid "Exit with WARNING status if load average exceeds WLOADn" | ||
| 1479 | msgstr "" | ||
| 1480 | |||
| 1481 | msgid "Exit with CRITICAL status if load average exceed CLOADn" | ||
| 1482 | msgstr "" | ||
| 1483 | |||
| 1484 | msgid "the load average format is the same used by \"uptime\" and \"w\"" | ||
| 1485 | msgstr "" | ||
| 1486 | |||
| 1487 | msgid "Divide the load averages by the number of CPUs (when possible)" | ||
| 1488 | msgstr "" | ||
| 1489 | |||
| 1490 | msgid "Number of processes to show when printing the top consuming processes." | ||
| 1491 | msgstr "" | ||
| 1492 | |||
| 1493 | msgid "NUMBER_OF_PROCS=0 disables this feature. Default value is 0" | ||
| 1494 | msgstr "" | ||
| 1495 | |||
| 1496 | #, c-format | ||
| 1497 | msgid "'%s' exited with non-zero status.\n" | ||
| 1498 | msgstr "" | ||
| 1499 | |||
| 1500 | #, c-format | ||
| 1501 | msgid "some error occurred getting procs list.\n" | ||
| 1502 | msgstr "" | ||
| 1503 | |||
| 1504 | msgid "Could not parse arguments\n" | ||
| 1505 | msgstr "" | ||
| 1506 | |||
| 1507 | #, c-format | ||
| 1508 | msgid "Unable to open MRTG log file\n" | ||
| 1509 | msgstr "" | ||
| 1510 | |||
| 1511 | #, c-format | ||
| 1512 | msgid "Unable to process MRTG log file\n" | ||
| 1513 | msgstr "" | ||
| 1514 | |||
| 1515 | #, c-format | ||
| 1516 | msgid "MRTG data has expired (%d minutes old)\n" | ||
| 1517 | msgstr "" | ||
| 1518 | |||
| 1519 | msgid "Avg" | ||
| 1520 | msgstr "" | ||
| 1521 | |||
| 1522 | msgid "Max" | ||
| 1523 | msgstr "" | ||
| 1524 | |||
| 1525 | msgid "Invalid variable number" | ||
| 1526 | msgstr "" | ||
| 1527 | |||
| 1528 | #, c-format | ||
| 1529 | msgid "" | ||
| 1530 | "%s is not a valid expiration time\n" | ||
| 1531 | "Use '%s -h' for additional help\n" | ||
| 1532 | msgstr "" | ||
| 1533 | |||
| 1534 | msgid "Invalid variable number\n" | ||
| 1535 | msgstr "" | ||
| 1536 | |||
| 1537 | msgid "You must supply the variable number" | ||
| 1538 | msgstr "" | ||
| 1539 | |||
| 1540 | msgid "" | ||
| 1541 | "This plugin will check either the average or maximum value of one of the" | ||
| 1542 | msgstr "" | ||
| 1543 | |||
| 1544 | msgid "two variables recorded in an MRTG log file." | ||
| 1545 | msgstr "" | ||
| 1546 | |||
| 1547 | msgid "The MRTG log file containing the data you want to monitor" | ||
| 1548 | msgstr "" | ||
| 1549 | |||
| 1550 | msgid "Minutes before MRTG data is considered to be too old" | ||
| 1551 | msgstr "" | ||
| 1552 | |||
| 1553 | msgid "Should we check average or maximum values?" | ||
| 1554 | msgstr "" | ||
| 1555 | |||
| 1556 | msgid "Which variable set should we inspect? (1 or 2)" | ||
| 1557 | msgstr "" | ||
| 1558 | |||
| 1559 | msgid "Threshold value for data to result in WARNING status" | ||
| 1560 | msgstr "" | ||
| 1561 | |||
| 1562 | msgid "Threshold value for data to result in CRITICAL status" | ||
| 1563 | msgstr "" | ||
| 1564 | |||
| 1565 | msgid "Type label for data (Examples: Conns, \"Processor Load\", In, Out)" | ||
| 1566 | msgstr "" | ||
| 1567 | |||
| 1568 | msgid "Option units label for data (Example: Packets/Sec, Errors/Sec," | ||
| 1569 | msgstr "" | ||
| 1570 | |||
| 1571 | #, c-format | ||
| 1572 | msgid "\"Bytes Per Second\", \"%% Utilization\")" | ||
| 1573 | msgstr "" | ||
| 1574 | |||
| 1575 | msgid "" | ||
| 1576 | "If the value exceeds the <vwl> threshold, a WARNING status is returned. If" | ||
| 1577 | msgstr "" | ||
| 1578 | |||
| 1579 | msgid "" | ||
| 1580 | "the value exceeds the <vcl> threshold, a CRITICAL status is returned. If" | ||
| 1581 | msgstr "" | ||
| 1582 | |||
| 1583 | msgid "the data in the log file is older than <expire_minutes> old, a WARNING" | ||
| 1584 | msgstr "" | ||
| 1585 | |||
| 1586 | msgid "status is returned and a warning message is printed." | ||
| 1587 | msgstr "" | ||
| 1588 | |||
| 1589 | msgid "" | ||
| 1590 | "This plugin is useful for monitoring MRTG data that does not correspond to" | ||
| 1591 | msgstr "" | ||
| 1592 | |||
| 1593 | msgid "" | ||
| 1594 | "bandwidth usage. (Use the check_mrtgtraf plugin for monitoring bandwidth)." | ||
| 1595 | msgstr "" | ||
| 1596 | |||
| 1597 | msgid "" | ||
| 1598 | "It can be used to monitor any kind of data that MRTG is monitoring - errors," | ||
| 1599 | msgstr "" | ||
| 1600 | |||
| 1601 | msgid "" | ||
| 1602 | "packets/sec, etc. I use MRTG in conjunction with the Novell NLM that allows" | ||
| 1603 | msgstr "" | ||
| 1604 | |||
| 1605 | msgid "" | ||
| 1606 | "me to track processor utilization, user connections, drive space, etc and" | ||
| 1607 | msgstr "" | ||
| 1608 | |||
| 1609 | msgid "this plugin works well for monitoring that kind of data as well." | ||
| 1610 | msgstr "" | ||
| 1611 | |||
| 1612 | msgid "" | ||
| 1613 | "- This plugin only monitors one of the two variables stored in the MRTG log" | ||
| 1614 | msgstr "" | ||
| 1615 | |||
| 1616 | msgid "file. If you want to monitor both values you will have to define two" | ||
| 1617 | msgstr "" | ||
| 1618 | |||
| 1619 | msgid "commands with different values for the <variable> argument. Of course," | ||
| 1620 | msgstr "" | ||
| 1621 | |||
| 1622 | msgid "you can always hack the code to make this plugin work for you..." | ||
| 1623 | msgstr "" | ||
| 1624 | |||
| 1625 | msgid "" | ||
| 1626 | "- MRTG stands for the Multi Router Traffic Grapher. It can be downloaded " | ||
| 1627 | "from" | ||
| 1628 | msgstr "" | ||
| 1629 | |||
| 1630 | msgid "Unable to open MRTG log file" | ||
| 1631 | msgstr "" | ||
| 1632 | |||
| 1633 | msgid "Unable to process MRTG log file" | ||
| 1634 | msgstr "" | ||
| 1635 | |||
| 1636 | #, c-format | ||
| 1637 | msgid "%s. In = %0.1f %s/s, %s. Out = %0.1f %s/s|%s %s\n" | ||
| 1638 | msgstr "" | ||
| 1639 | |||
| 1640 | #, c-format | ||
| 1641 | msgid "Traffic %s - %s\n" | ||
| 1642 | msgstr "" | ||
| 1643 | |||
| 1644 | msgid "" | ||
| 1645 | "This plugin will check the incoming/outgoing transfer rates of a router," | ||
| 1646 | msgstr "" | ||
| 1647 | |||
| 1648 | msgid "switch, etc recorded in an MRTG log. If the newest log entry is older" | ||
| 1649 | msgstr "" | ||
| 1650 | |||
| 1651 | msgid "than <expire_minutes>, a WARNING status is returned. If either the" | ||
| 1652 | msgstr "" | ||
| 1653 | |||
| 1654 | msgid "incoming or outgoing rates exceed the <icl> or <ocl> thresholds (in" | ||
| 1655 | msgstr "" | ||
| 1656 | |||
| 1657 | msgid "Bytes/sec), a CRITICAL status results. If either of the rates exceed" | ||
| 1658 | msgstr "" | ||
| 1659 | |||
| 1660 | msgid "the <iwl> or <owl> thresholds (in Bytes/sec), a WARNING status results." | ||
| 1661 | msgstr "" | ||
| 1662 | |||
| 1663 | msgid "File to read log from" | ||
| 1664 | msgstr "" | ||
| 1665 | |||
| 1666 | msgid "Minutes after which log expires" | ||
| 1667 | msgstr "" | ||
| 1668 | |||
| 1669 | msgid "Test average or maximum" | ||
| 1670 | msgstr "" | ||
| 1671 | |||
| 1672 | msgid "Warning threshold pair <incoming>,<outgoing>" | ||
| 1673 | msgstr "" | ||
| 1674 | |||
| 1675 | msgid "Critical threshold pair <incoming>,<outgoing>" | ||
| 1676 | msgstr "" | ||
| 1677 | |||
| 1678 | msgid "" | ||
| 1679 | "- MRTG stands for Multi Router Traffic Grapher. It can be downloaded from" | ||
| 1680 | msgstr "" | ||
| 1681 | |||
| 1682 | msgid "- While MRTG can monitor things other than traffic rates, this" | ||
| 1683 | msgstr "" | ||
| 1684 | |||
| 1685 | msgid " plugin probably won't work with much else without modification." | ||
| 1686 | msgstr "" | ||
| 1687 | |||
| 1688 | msgid "- The calculated i/o rates are a little off from what MRTG actually" | ||
| 1689 | msgstr "" | ||
| 1690 | |||
| 1691 | msgid " reports. I'm not sure why this is right now, but will look into it" | ||
| 1692 | msgstr "" | ||
| 1693 | |||
| 1694 | msgid " for future enhancements of this plugin." | ||
| 1695 | msgstr "" | ||
| 1696 | |||
| 1697 | #, c-format | ||
| 1698 | msgid "Usage" | ||
| 1699 | msgstr "" | ||
| 1700 | |||
| 1701 | #, c-format | ||
| 1702 | msgid "status store_result error: %s\n" | ||
| 1703 | msgstr "" | ||
| 1704 | |||
| 1705 | #, c-format | ||
| 1706 | msgid "slave query error: %s\n" | ||
| 1707 | msgstr "" | ||
| 1708 | |||
| 1709 | #, c-format | ||
| 1710 | msgid "slave store_result error: %s\n" | ||
| 1711 | msgstr "" | ||
| 1712 | |||
| 1713 | msgid "No slaves defined" | ||
| 1714 | msgstr "" | ||
| 1715 | |||
| 1716 | #, c-format | ||
| 1717 | msgid "slave fetch row error: %s\n" | ||
| 1718 | msgstr "" | ||
| 1719 | |||
| 1720 | #, c-format | ||
| 1721 | msgid "Slave running: %s" | ||
| 1722 | msgstr "" | ||
| 1723 | |||
| 1724 | msgid "This program tests connections to a MySQL server" | ||
| 1725 | msgstr "" | ||
| 1726 | |||
| 1727 | msgid "Ignore authentication failure and check for mysql connectivity only" | ||
| 1728 | msgstr "" | ||
| 1729 | |||
| 1730 | msgid "Use the specified socket (has no effect if -H is used)" | ||
| 1731 | msgstr "" | ||
| 1732 | |||
| 1733 | msgid "Check database with indicated name" | ||
| 1734 | msgstr "" | ||
| 1735 | |||
| 1736 | msgid "Read from the specified client options file" | ||
| 1737 | msgstr "" | ||
| 1738 | |||
| 1739 | msgid "Use a client options group" | ||
| 1740 | msgstr "" | ||
| 1741 | |||
| 1742 | msgid "Connect using the indicated username" | ||
| 1743 | msgstr "" | ||
| 1744 | |||
| 1745 | msgid "Use the indicated password to authenticate the connection" | ||
| 1746 | msgstr "" | ||
| 1747 | |||
| 1748 | msgid "IMPORTANT: THIS FORM OF AUTHENTICATION IS NOT SECURE!!!" | ||
| 1749 | msgstr "" | ||
| 1750 | |||
| 1751 | msgid "Your clear-text password could be visible as a process table entry" | ||
| 1752 | msgstr "" | ||
| 1753 | |||
| 1754 | msgid "Check if the slave thread is running properly." | ||
| 1755 | msgstr "" | ||
| 1756 | |||
| 1757 | msgid "Exit with WARNING status if slave server is more than INTEGER seconds" | ||
| 1758 | msgstr "" | ||
| 1759 | |||
| 1760 | msgid "behind master" | ||
| 1761 | msgstr "" | ||
| 1762 | |||
| 1763 | msgid "Exit with CRITICAL status if slave server is more then INTEGER seconds" | ||
| 1764 | msgstr "" | ||
| 1765 | |||
| 1766 | msgid "Use ssl encryption" | ||
| 1767 | msgstr "" | ||
| 1768 | |||
| 1769 | msgid "Path to CA signing the cert" | ||
| 1770 | msgstr "" | ||
| 1771 | |||
| 1772 | msgid "Path to SSL certificate" | ||
| 1773 | msgstr "" | ||
| 1774 | |||
| 1775 | msgid "Path to private SSL key" | ||
| 1776 | msgstr "" | ||
| 1777 | |||
| 1778 | msgid "Path to CA directory" | ||
| 1779 | msgstr "" | ||
| 1780 | |||
| 1781 | msgid "List of valid SSL ciphers" | ||
| 1782 | msgstr "" | ||
| 1783 | |||
| 1784 | msgid "" | ||
| 1785 | "There are no required arguments. By default, the local database is checked" | ||
| 1786 | msgstr "" | ||
| 1787 | |||
| 1788 | msgid "" | ||
| 1789 | "using the default unix socket. You can force TCP on localhost by using an" | ||
| 1790 | msgstr "" | ||
| 1791 | |||
| 1792 | msgid "IP address or FQDN ('localhost' will use the socket as well)." | ||
| 1793 | msgstr "" | ||
| 1794 | |||
| 1795 | msgid "You must specify -p with an empty string to force an empty password," | ||
| 1796 | msgstr "" | ||
| 1797 | |||
| 1798 | msgid "overriding any my.cnf settings." | ||
| 1799 | msgstr "" | ||
| 1800 | |||
| 1801 | msgid "Cannot open status log for reading!" | ||
| 1802 | msgstr "" | ||
| 1803 | |||
| 1804 | #, c-format | ||
| 1805 | msgid "Found process: %s %s\n" | ||
| 1806 | msgstr "" | ||
| 1807 | |||
| 1808 | msgid "Could not locate a running Nagios process!" | ||
| 1809 | msgstr "" | ||
| 1810 | |||
| 1811 | msgid "Cannot parse Nagios log file for valid time" | ||
| 1812 | msgstr "" | ||
| 1813 | |||
| 1814 | #, c-format | ||
| 1815 | msgid "%d process" | ||
| 1816 | msgid_plural "%d processes" | ||
| 1817 | msgstr[0] "" | ||
| 1818 | msgstr[1] "" | ||
| 1819 | |||
| 1820 | #, c-format | ||
| 1821 | msgid "status log updated %d second ago" | ||
| 1822 | msgid_plural "status log updated %d seconds ago" | ||
| 1823 | msgstr[0] "" | ||
| 1824 | msgstr[1] "" | ||
| 1825 | |||
| 1826 | msgid "Expiration time must be an integer (seconds)\n" | ||
| 1827 | msgstr "" | ||
| 1828 | |||
| 1829 | msgid "Timeout must be an integer (seconds)\n" | ||
| 1830 | msgstr "" | ||
| 1831 | |||
| 1832 | msgid "You must provide the status_log\n" | ||
| 1833 | msgstr "" | ||
| 1834 | |||
| 1835 | msgid "You must provide a process string\n" | ||
| 1836 | msgstr "" | ||
| 1837 | |||
| 1838 | msgid "" | ||
| 1839 | "This plugin checks the status of the Nagios process on the local machine" | ||
| 1840 | msgstr "" | ||
| 1841 | |||
| 1842 | msgid "" | ||
| 1843 | "The plugin will check to make sure the Nagios status log is no older than" | ||
| 1844 | msgstr "" | ||
| 1845 | |||
| 1846 | msgid "the number of minutes specified by the expires option." | ||
| 1847 | msgstr "" | ||
| 1848 | |||
| 1849 | msgid "" | ||
| 1850 | "It also checks the process table for a process matching the command argument." | ||
| 1851 | msgstr "" | ||
| 1852 | |||
| 1853 | msgid "Name of the log file to check" | ||
| 1854 | msgstr "" | ||
| 1855 | |||
| 1856 | msgid "Minutes aging after which logfile is considered stale" | ||
| 1857 | msgstr "" | ||
| 1858 | |||
| 1859 | msgid "Substring to search for in process arguments" | ||
| 1860 | msgstr "" | ||
| 1861 | |||
| 1862 | msgid "Timeout for the plugin in seconds" | ||
| 1863 | msgstr "" | ||
| 1864 | |||
| 1865 | #, c-format | ||
| 1866 | msgid "Wrong client version - running: %s, required: %s" | ||
| 1867 | msgstr "" | ||
| 1868 | |||
| 1869 | msgid "missing -l parameters" | ||
| 1870 | msgstr "" | ||
| 1871 | |||
| 1872 | msgid "wrong -l parameter." | ||
| 1873 | msgstr "" | ||
| 1874 | |||
| 1875 | msgid "CPU Load" | ||
| 1876 | msgstr "" | ||
| 1877 | |||
| 1878 | #, c-format | ||
| 1879 | msgid " %lu%% (%lu min average)" | ||
| 1880 | msgstr "" | ||
| 1881 | |||
| 1882 | #, c-format | ||
| 1883 | msgid " '%lu min avg Load'=%lu%%;%lu;%lu;0;100" | ||
| 1884 | msgstr "" | ||
| 1885 | |||
| 1886 | msgid "not enough values for -l parameters" | ||
| 1887 | msgstr "" | ||
| 1888 | |||
| 1889 | msgid "wrong -l argument" | ||
| 1890 | msgstr "" | ||
| 1891 | |||
| 1892 | #, c-format | ||
| 1893 | msgid "System Uptime - %u day(s) %u hour(s) %u minute(s) |uptime=%lu" | ||
| 1894 | msgstr "" | ||
| 1895 | |||
| 1896 | #, c-format | ||
| 1897 | msgid "%s:\\ - total: %.2f Gb - used: %.2f Gb (%.0f%%) - free %.2f Gb (%.0f%%)" | ||
| 1898 | msgstr "" | ||
| 1899 | |||
| 1900 | #, c-format | ||
| 1901 | msgid "'%s:\\ Used Space'=%.2fGb;%.2f;%.2f;0.00;%.2f" | ||
| 1902 | msgstr "" | ||
| 1903 | |||
| 1904 | msgid "Free disk space : Invalid drive" | ||
| 1905 | msgstr "" | ||
| 1906 | |||
| 1907 | msgid "No service/process specified" | ||
| 1908 | msgstr "" | ||
| 1909 | |||
| 1910 | msgid "could not fetch information from server\n" | ||
| 1911 | msgstr "" | ||
| 1912 | |||
| 1913 | #, c-format | ||
| 1914 | msgid "" | ||
| 1915 | "Memory usage: total:%.2f MB - used: %.2f MB (%.0f%%) - free: %.2f MB (%.0f%%)" | ||
| 1916 | msgstr "" | ||
| 1917 | |||
| 1918 | #, c-format | ||
| 1919 | msgid "'Memory usage'=%.2fMB;%.2f;%.2f;0.00;%.2f" | ||
| 1920 | msgstr "" | ||
| 1921 | |||
| 1922 | msgid "No counter specified" | ||
| 1923 | msgstr "" | ||
| 1924 | |||
| 1925 | msgid "Minimum value contains non-numbers" | ||
| 1926 | msgstr "" | ||
| 1927 | |||
| 1928 | msgid "Maximum value contains non-numbers" | ||
| 1929 | msgstr "" | ||
| 1930 | |||
| 1931 | msgid "No unit counter specified" | ||
| 1932 | msgstr "" | ||
| 1933 | |||
| 1934 | msgid "Please specify a variable to check" | ||
| 1935 | msgstr "" | ||
| 1936 | |||
| 1937 | msgid "Server port must be an integer\n" | ||
| 1938 | msgstr "" | ||
| 1939 | |||
| 1940 | msgid "You must provide a server address or host name" | ||
| 1941 | msgstr "" | ||
| 1942 | |||
| 1943 | msgid "None" | ||
| 1944 | msgstr "" | ||
| 1945 | |||
| 1946 | msgid "This plugin collects data from the NSClient service running on a" | ||
| 1947 | msgstr "" | ||
| 1948 | |||
| 1949 | msgid "Windows NT/2000/XP/2003 server." | ||
| 1950 | msgstr "" | ||
| 1951 | |||
| 1952 | msgid "Name of the host to check" | ||
| 1953 | msgstr "" | ||
| 1954 | |||
| 1955 | msgid "Optional port number (default: " | ||
| 1956 | msgstr "" | ||
| 1957 | |||
| 1958 | msgid "Password needed for the request" | ||
| 1959 | msgstr "" | ||
| 1960 | |||
| 1961 | msgid "Threshold which will result in a warning status" | ||
| 1962 | msgstr "" | ||
| 1963 | |||
| 1964 | msgid "Threshold which will result in a critical status" | ||
| 1965 | msgstr "" | ||
| 1966 | |||
| 1967 | msgid "Seconds before connection attempt times out (default: " | ||
| 1968 | msgstr "" | ||
| 1969 | |||
| 1970 | msgid "Parameters passed to specified check (see below)" | ||
| 1971 | msgstr "" | ||
| 1972 | |||
| 1973 | msgid "Display options (currently only SHOWALL works)" | ||
| 1974 | msgstr "" | ||
| 1975 | |||
| 1976 | msgid "Return UNKNOWN on timeouts" | ||
| 1977 | msgstr "" | ||
| 1978 | |||
| 1979 | msgid "Print this help screen" | ||
| 1980 | msgstr "" | ||
| 1981 | |||
| 1982 | msgid "Print version information" | ||
| 1983 | msgstr "" | ||
| 1984 | |||
| 1985 | msgid "Variable to check" | ||
| 1986 | msgstr "" | ||
| 1987 | |||
| 1988 | msgid "Valid variables are:" | ||
| 1989 | msgstr "" | ||
| 1990 | |||
| 1991 | msgid "Get the NSClient version" | ||
| 1992 | msgstr "" | ||
| 1993 | |||
| 1994 | msgid "If -l <version> is specified, will return warning if versions differ." | ||
| 1995 | msgstr "" | ||
| 1996 | |||
| 1997 | msgid "Average CPU load on last x minutes." | ||
| 1998 | msgstr "" | ||
| 1999 | |||
| 2000 | msgid "Request a -l parameter with the following syntax:" | ||
| 2001 | msgstr "" | ||
| 2002 | |||
| 2003 | msgid "-l <minutes range>,<warning threshold>,<critical threshold>." | ||
| 2004 | msgstr "" | ||
| 2005 | |||
| 2006 | msgid "<minute range> should be less than 24*60." | ||
| 2007 | msgstr "" | ||
| 2008 | |||
| 2009 | msgid "" | ||
| 2010 | "Thresholds are percentage and up to 10 requests can be done in one shot." | ||
| 2011 | msgstr "" | ||
| 2012 | |||
| 2013 | msgid "Get the uptime of the machine." | ||
| 2014 | msgstr "" | ||
| 2015 | |||
| 2016 | msgid "-l <unit> " | ||
| 2017 | msgstr "" | ||
| 2018 | |||
| 2019 | msgid "<unit> = seconds, minutes, hours, or days. (default: minutes)" | ||
| 2020 | msgstr "" | ||
| 2021 | |||
| 2022 | msgid "Thresholds will use the unit specified above." | ||
| 2023 | msgstr "" | ||
| 2024 | |||
| 2025 | msgid "Size and percentage of disk use." | ||
| 2026 | msgstr "" | ||
| 2027 | |||
| 2028 | msgid "Request a -l parameter containing the drive letter only." | ||
| 2029 | msgstr "" | ||
| 2030 | |||
| 2031 | msgid "Warning and critical thresholds can be specified with -w and -c." | ||
| 2032 | msgstr "" | ||
| 2033 | |||
| 2034 | msgid "Memory use." | ||
| 2035 | msgstr "" | ||
| 2036 | |||
| 2037 | msgid "Check the state of one or several services." | ||
| 2038 | msgstr "" | ||
| 2039 | |||
| 2040 | msgid "Request a -l parameters with the following syntax:" | ||
| 2041 | msgstr "" | ||
| 2042 | |||
| 2043 | msgid "-l <service1>,<service2>,<service3>,..." | ||
| 2044 | msgstr "" | ||
| 2045 | |||
| 2046 | msgid "You can specify -d SHOWALL in case you want to see working services" | ||
| 2047 | msgstr "" | ||
| 2048 | |||
| 2049 | msgid "in the returned string." | ||
| 2050 | msgstr "" | ||
| 2051 | |||
| 2052 | msgid "Check if one or several process are running." | ||
| 2053 | msgstr "" | ||
| 2054 | |||
| 2055 | msgid "Same syntax as SERVICESTATE." | ||
| 2056 | msgstr "" | ||
| 2057 | |||
| 2058 | msgid "Check any performance counter of Windows NT/2000." | ||
| 2059 | msgstr "" | ||
| 2060 | |||
| 2061 | msgid "-l \"\\\\<performance object>\\\\counter\",\"<description>" | ||
| 2062 | msgstr "" | ||
| 2063 | |||
| 2064 | msgid "The <description> parameter is optional and is given to a printf " | ||
| 2065 | msgstr "" | ||
| 2066 | |||
| 2067 | msgid "output command which requires a float parameter." | ||
| 2068 | msgstr "" | ||
| 2069 | |||
| 2070 | #, c-format | ||
| 2071 | msgid "If <description> does not include \"%%\", it is used as a label." | ||
| 2072 | msgstr "" | ||
| 2073 | |||
| 2074 | msgid "Some examples:" | ||
| 2075 | msgstr "" | ||
| 2076 | |||
| 2077 | msgid "Check any performance counter object of Windows NT/2000." | ||
| 2078 | msgstr "" | ||
| 2079 | |||
| 2080 | msgid "" | ||
| 2081 | "Syntax: check_nt -H <hostname> -p <port> -v INSTANCES -l <counter object>" | ||
| 2082 | msgstr "" | ||
| 2083 | |||
| 2084 | msgid "<counter object> is a Windows Perfmon Counter object (eg. Process)," | ||
| 2085 | msgstr "" | ||
| 2086 | |||
| 2087 | msgid "if it is two words, it should be enclosed in quotes" | ||
| 2088 | msgstr "" | ||
| 2089 | |||
| 2090 | msgid "The returned results will be a comma-separated list of instances on " | ||
| 2091 | msgstr "" | ||
| 2092 | |||
| 2093 | msgid " the selected computer for that object." | ||
| 2094 | msgstr "" | ||
| 2095 | |||
| 2096 | msgid "" | ||
| 2097 | "The purpose of this is to be run from command line to determine what " | ||
| 2098 | "instances" | ||
| 2099 | msgstr "" | ||
| 2100 | |||
| 2101 | msgid "" | ||
| 2102 | " are available for monitoring without having to log onto the Windows server" | ||
| 2103 | msgstr "" | ||
| 2104 | |||
| 2105 | msgid " to run Perfmon directly." | ||
| 2106 | msgstr "" | ||
| 2107 | |||
| 2108 | msgid "" | ||
| 2109 | "It can also be used in scripts that automatically create the monitoring " | ||
| 2110 | "service" | ||
| 2111 | msgstr "" | ||
| 2112 | |||
| 2113 | msgid " configuration files." | ||
| 2114 | msgstr "" | ||
| 2115 | |||
| 2116 | msgid "check_nt -H 192.168.1.1 -p 1248 -v INSTANCES -l Process" | ||
| 2117 | msgstr "" | ||
| 2118 | |||
| 2119 | msgid "" | ||
| 2120 | "- The NSClient service should be running on the server to get any information" | ||
| 2121 | msgstr "" | ||
| 2122 | |||
| 2123 | msgid "- Critical thresholds should be lower than warning thresholds" | ||
| 2124 | msgstr "" | ||
| 2125 | |||
| 2126 | msgid "- Default port 1248 is sometimes in use by other services. The error" | ||
| 2127 | msgstr "" | ||
| 2128 | |||
| 2129 | msgid "" | ||
| 2130 | "output when this happens contains \"Cannot map xxxxx to protocol number\"." | ||
| 2131 | msgstr "" | ||
| 2132 | |||
| 2133 | msgid "One fix for this is to change the port to something else on check_nt " | ||
| 2134 | msgstr "" | ||
| 2135 | |||
| 2136 | msgid "and on the client service it's connecting to." | ||
| 2137 | msgstr "" | ||
| 2138 | |||
| 2139 | #, c-format | ||
| 2140 | msgid "jitter response too large (%lu bytes)\n" | ||
| 2141 | msgstr "" | ||
| 2142 | |||
| 2143 | msgid "NTP CRITICAL:" | ||
| 2144 | msgstr "" | ||
| 2145 | |||
| 2146 | msgid "NTP WARNING:" | ||
| 2147 | msgstr "" | ||
| 2148 | |||
| 2149 | msgid "NTP OK:" | ||
| 2150 | msgstr "" | ||
| 2151 | |||
| 2152 | msgid "NTP UNKNOWN:" | ||
| 2153 | msgstr "" | ||
| 2154 | |||
| 2155 | msgid "Offset unknown" | ||
| 2156 | msgstr "" | ||
| 2157 | |||
| 2158 | msgid "Offset" | ||
| 2159 | msgstr "" | ||
| 2160 | |||
| 2161 | msgid "This plugin checks the selected ntp server" | ||
| 2162 | msgstr "" | ||
| 2163 | |||
| 2164 | msgid "Offset to result in warning status (seconds)" | ||
| 2165 | msgstr "" | ||
| 2166 | |||
| 2167 | msgid "Offset to result in critical status (seconds)" | ||
| 2168 | msgstr "" | ||
| 2169 | |||
| 2170 | msgid "Warning threshold for jitter" | ||
| 2171 | msgstr "" | ||
| 2172 | |||
| 2173 | msgid "Critical threshold for jitter" | ||
| 2174 | msgstr "" | ||
| 2175 | |||
| 2176 | msgid "Normal offset check:" | ||
| 2177 | msgstr "" | ||
| 2178 | |||
| 2179 | msgid "" | ||
| 2180 | "Check jitter too, avoiding critical notifications if jitter isn't available" | ||
| 2181 | msgstr "" | ||
| 2182 | |||
| 2183 | msgid "(See Notes above for more details on thresholds formats):" | ||
| 2184 | msgstr "" | ||
| 2185 | |||
| 2186 | msgid "WARNING: check_ntp is deprecated. Please use check_ntp_peer or" | ||
| 2187 | msgstr "" | ||
| 2188 | |||
| 2189 | msgid "check_ntp_time instead." | ||
| 2190 | msgstr "" | ||
| 2191 | |||
| 2192 | msgid "Server not synchronized" | ||
| 2193 | msgstr "" | ||
| 2194 | |||
| 2195 | msgid "Server has the LI_ALARM bit set" | ||
| 2196 | msgstr "" | ||
| 2197 | |||
| 2198 | msgid "" | ||
| 2199 | "Returns UNKNOWN instead of CRITICAL or WARNING if server isn't synchronized" | ||
| 2200 | msgstr "" | ||
| 2201 | |||
| 2202 | msgid "Warning threshold for stratum of server's synchronization peer" | ||
| 2203 | msgstr "" | ||
| 2204 | |||
| 2205 | msgid "Critical threshold for stratum of server's synchronization peer" | ||
| 2206 | msgstr "" | ||
| 2207 | |||
| 2208 | msgid "Warning threshold for number of usable time sources (\"truechimers\")" | ||
| 2209 | msgstr "" | ||
| 2210 | |||
| 2211 | msgid "Critical threshold for number of usable time sources (\"truechimers\")" | ||
| 2212 | msgstr "" | ||
| 2213 | |||
| 2214 | msgid "This plugin checks an NTP server independent of any commandline" | ||
| 2215 | msgstr "" | ||
| 2216 | |||
| 2217 | msgid "programs or external libraries." | ||
| 2218 | msgstr "" | ||
| 2219 | |||
| 2220 | msgid "Use this plugin to check the health of an NTP server. It supports" | ||
| 2221 | msgstr "" | ||
| 2222 | |||
| 2223 | msgid "checking the offset with the sync peer, the jitter and stratum. This" | ||
| 2224 | msgstr "" | ||
| 2225 | |||
| 2226 | msgid "plugin will not check the clock offset between the local host and NTP" | ||
| 2227 | msgstr "" | ||
| 2228 | |||
| 2229 | msgid "server; please use check_ntp_time for that purpose." | ||
| 2230 | msgstr "" | ||
| 2231 | |||
| 2232 | msgid "Simple NTP server check:" | ||
| 2233 | msgstr "" | ||
| 2234 | |||
| 2235 | msgid "Only check the number of usable time sources (\"truechimers\"):" | ||
| 2236 | msgstr "" | ||
| 2237 | |||
| 2238 | msgid "Check only stratum:" | ||
| 2239 | msgstr "" | ||
| 2240 | |||
| 2241 | msgid "This plugin checks the clock offset with the ntp server" | ||
| 2242 | msgstr "" | ||
| 2243 | |||
| 2244 | msgid "Returns UNKNOWN instead of CRITICAL if offset cannot be found" | ||
| 2245 | msgstr "" | ||
| 2246 | |||
| 2247 | msgid "Expected offset of the ntp server relative to local server (seconds)" | ||
| 2248 | msgstr "" | ||
| 2249 | |||
| 2250 | msgid "This plugin checks the clock offset between the local host and a" | ||
| 2251 | msgstr "" | ||
| 2252 | |||
| 2253 | msgid "remote NTP server. It is independent of any commandline programs or" | ||
| 2254 | msgstr "" | ||
| 2255 | |||
| 2256 | msgid "external libraries." | ||
| 2257 | msgstr "" | ||
| 2258 | |||
| 2259 | msgid "If you'd rather want to monitor an NTP server, please use" | ||
| 2260 | msgstr "" | ||
| 2261 | |||
| 2262 | msgid "check_ntp_peer." | ||
| 2263 | msgstr "" | ||
| 2264 | |||
| 2265 | msgid "--time-offset is useful for compensating for servers with known" | ||
| 2266 | msgstr "" | ||
| 2267 | |||
| 2268 | msgid "and expected clock skew." | ||
| 2269 | msgstr "" | ||
| 2270 | |||
| 2271 | #, c-format | ||
| 2272 | msgid "NetWare %s: " | ||
| 2273 | msgstr "" | ||
| 2274 | |||
| 2275 | #, c-format | ||
| 2276 | msgid "Up %s," | ||
| 2277 | msgstr "" | ||
| 2278 | |||
| 2279 | #, c-format | ||
| 2280 | msgid "Load %s - %s %s-min load average = %lu%%|load%s=%lu;%lu;%lu;0;100" | ||
| 2281 | msgstr "" | ||
| 2282 | |||
| 2283 | #, c-format | ||
| 2284 | msgid "Conns %s - %lu current connections|Conns=%lu;%lu;%lu;;" | ||
| 2285 | msgstr "" | ||
| 2286 | |||
| 2287 | #, c-format | ||
| 2288 | msgid "%s: Long term cache hits = %lu%%" | ||
| 2289 | msgstr "" | ||
| 2290 | |||
| 2291 | #, c-format | ||
| 2292 | msgid "%s: Total cache buffers = %lu|Cachebuffers=%lu;%lu;%lu;;" | ||
| 2293 | msgstr "" | ||
| 2294 | |||
| 2295 | #, c-format | ||
| 2296 | msgid "%s: Dirty cache buffers = %lu|Dirty-Cache-Buffers=%lu;%lu;%lu;;" | ||
| 2297 | msgstr "" | ||
| 2298 | |||
| 2299 | #, c-format | ||
| 2300 | msgid "%s: LRU sitting time = %lu minutes" | ||
| 2301 | msgstr "" | ||
| 2302 | |||
| 2303 | #, c-format | ||
| 2304 | msgid "CRITICAL - Volume '%s' does not exist!" | ||
| 2305 | msgstr "" | ||
| 2306 | |||
| 2307 | #, c-format | ||
| 2308 | msgid "%s%lu KB free on volume %s|KBFree%s=%lu;%lu;%lu;;" | ||
| 2309 | msgstr "" | ||
| 2310 | |||
| 2311 | msgid "Only " | ||
| 2312 | msgstr "" | ||
| 2313 | |||
| 2314 | #, c-format | ||
| 2315 | msgid "%s%lu MB free on volume %s|MBFree%s=%lu;%lu;%lu;;" | ||
| 2316 | msgstr "" | ||
| 2317 | |||
| 2318 | #, c-format | ||
| 2319 | msgid "%s%lu MB used on volume %s|MBUsed%s=%lu;%lu;%lu;;" | ||
| 2320 | msgstr "" | ||
| 2321 | |||
| 2322 | #, c-format | ||
| 2323 | msgid "" | ||
| 2324 | "%lu MB (%lu%%) free on volume %s - total %lu MB|FreeMB%s=%lu;%lu;%lu;0;100" | ||
| 2325 | msgstr "" | ||
| 2326 | |||
| 2327 | #, c-format | ||
| 2328 | msgid "Directory Services Database is %s (DS version %s)" | ||
| 2329 | msgstr "" | ||
| 2330 | |||
| 2331 | #, c-format | ||
| 2332 | msgid "Logins are %s" | ||
| 2333 | msgstr "" | ||
| 2334 | |||
| 2335 | msgid "enabled" | ||
| 2336 | msgstr "" | ||
| 2337 | |||
| 2338 | msgid "disabled" | ||
| 2339 | msgstr "" | ||
| 2340 | |||
| 2341 | msgid "CRITICAL - NRM Status is bad!" | ||
| 2342 | msgstr "" | ||
| 2343 | |||
| 2344 | msgid "Warning - NRM Status is suspect!" | ||
| 2345 | msgstr "" | ||
| 2346 | |||
| 2347 | msgid "OK - NRM Status is good!" | ||
| 2348 | msgstr "" | ||
| 2349 | |||
| 2350 | #, c-format | ||
| 2351 | msgid "%lu of %lu (%lu%%) packet receive buffers used" | ||
| 2352 | msgstr "" | ||
| 2353 | |||
| 2354 | #, c-format | ||
| 2355 | msgid "%lu entries in SAP table" | ||
| 2356 | msgstr "" | ||
| 2357 | |||
| 2358 | #, c-format | ||
| 2359 | msgid "%lu entries in SAP table for SAP type %d" | ||
| 2360 | msgstr "" | ||
| 2361 | |||
| 2362 | #, c-format | ||
| 2363 | msgid "%s%lu KB purgeable on volume %s|Purge%s=%lu;%lu;%lu;;" | ||
| 2364 | msgstr "" | ||
| 2365 | |||
| 2366 | #, c-format | ||
| 2367 | msgid "%s%lu MB purgeable on volume %s|Purge%s=%lu;%lu;%lu;;" | ||
| 2368 | msgstr "" | ||
| 2369 | |||
| 2370 | #, c-format | ||
| 2371 | msgid "%lu MB (%lu%%) purgeable on volume %s|Purgeable%s=%lu;%lu;%lu;0;100" | ||
| 2372 | msgstr "" | ||
| 2373 | |||
| 2374 | #, c-format | ||
| 2375 | msgid "%s%lu KB not yet purgeable on volume %s" | ||
| 2376 | msgstr "" | ||
| 2377 | |||
| 2378 | #, c-format | ||
| 2379 | msgid "%lu MB (%lu%%) not yet purgeable on volume %s" | ||
| 2380 | msgstr "" | ||
| 2381 | |||
| 2382 | #, c-format | ||
| 2383 | msgid "%lu open files|Openfiles=%lu;%lu;%lu;0,0" | ||
| 2384 | msgstr "" | ||
| 2385 | |||
| 2386 | #, c-format | ||
| 2387 | msgid "%lu abended threads|Abends=%lu;%lu;%lu;;" | ||
| 2388 | msgstr "" | ||
| 2389 | |||
| 2390 | #, c-format | ||
| 2391 | msgid "%lu current service processes (%lu max)|Processes=%lu;%lu;%lu;0;%lu" | ||
| 2392 | msgstr "" | ||
| 2393 | |||
| 2394 | msgid "CRITICAL - Time not in sync with network!" | ||
| 2395 | msgstr "" | ||
| 2396 | |||
| 2397 | msgid "OK - Time in sync with network!" | ||
| 2398 | msgstr "" | ||
| 2399 | |||
| 2400 | #, c-format | ||
| 2401 | msgid "LRU sitting time = %lu seconds" | ||
| 2402 | msgstr "" | ||
| 2403 | |||
| 2404 | #, c-format | ||
| 2405 | msgid "Dirty cache buffers = %lu%% of the total|DCB=%lu;%lu;%lu;0;100" | ||
| 2406 | msgstr "" | ||
| 2407 | |||
| 2408 | #, c-format | ||
| 2409 | msgid "Total cache buffers = %lu%% of the original|TCB=%lu;%lu;%lu;0;100" | ||
| 2410 | msgstr "" | ||
| 2411 | |||
| 2412 | #, c-format | ||
| 2413 | msgid "NDS Version %s" | ||
| 2414 | msgstr "" | ||
| 2415 | |||
| 2416 | #, c-format | ||
| 2417 | msgid "Up %s" | ||
| 2418 | msgstr "" | ||
| 2419 | |||
| 2420 | #, c-format | ||
| 2421 | msgid "Module %s version %s is loaded" | ||
| 2422 | msgstr "" | ||
| 2423 | |||
| 2424 | #, c-format | ||
| 2425 | msgid "Module %s is not loaded" | ||
| 2426 | msgstr "" | ||
| 2427 | |||
| 2428 | #, c-format | ||
| 2429 | msgid "CRITICAL - Value '%s' does not exist!" | ||
| 2430 | msgstr "" | ||
| 2431 | |||
| 2432 | #, c-format | ||
| 2433 | msgid "%s is %lu|%s=%lu;%lu;%lu;;" | ||
| 2434 | msgstr "" | ||
| 2435 | |||
| 2436 | msgid "Nothing to check!\n" | ||
| 2437 | msgstr "" | ||
| 2438 | |||
| 2439 | msgid "Server port an integer\n" | ||
| 2440 | msgstr "" | ||
| 2441 | |||
| 2442 | msgid "This plugin attempts to contact the MRTGEXT NLM running on a" | ||
| 2443 | msgstr "" | ||
| 2444 | |||
| 2445 | msgid "Novell server to gather the requested system information." | ||
| 2446 | msgstr "" | ||
| 2447 | |||
| 2448 | msgid "Variable to check. Valid variables include:" | ||
| 2449 | msgstr "" | ||
| 2450 | |||
| 2451 | msgid "LOAD1 = 1 minute average CPU load" | ||
| 2452 | msgstr "" | ||
| 2453 | |||
| 2454 | msgid "LOAD5 = 5 minute average CPU load" | ||
| 2455 | msgstr "" | ||
| 2456 | |||
| 2457 | msgid "LOAD15 = 15 minute average CPU load" | ||
| 2458 | msgstr "" | ||
| 2459 | |||
| 2460 | msgid "CSPROCS = number of current service processes (NW 5.x only)" | ||
| 2461 | msgstr "" | ||
| 2462 | |||
| 2463 | msgid "ABENDS = number of abended threads (NW 5.x only)" | ||
| 2464 | msgstr "" | ||
| 2465 | |||
| 2466 | msgid "UPTIME = server uptime" | ||
| 2467 | msgstr "" | ||
| 2468 | |||
| 2469 | msgid "LTCH = percent long term cache hits" | ||
| 2470 | msgstr "" | ||
| 2471 | |||
| 2472 | msgid "CBUFF = current number of cache buffers" | ||
| 2473 | msgstr "" | ||
| 2474 | |||
| 2475 | msgid "CDBUFF = current number of dirty cache buffers" | ||
| 2476 | msgstr "" | ||
| 2477 | |||
| 2478 | msgid "DCB = dirty cache buffers as a percentage of the total" | ||
| 2479 | msgstr "" | ||
| 2480 | |||
| 2481 | msgid "TCB = dirty cache buffers as a percentage of the original" | ||
| 2482 | msgstr "" | ||
| 2483 | |||
| 2484 | msgid "OFILES = number of open files" | ||
| 2485 | msgstr "" | ||
| 2486 | |||
| 2487 | msgid " VMF<vol> = MB of free space on Volume <vol>" | ||
| 2488 | msgstr "" | ||
| 2489 | |||
| 2490 | msgid " VMU<vol> = MB used space on Volume <vol>" | ||
| 2491 | msgstr "" | ||
| 2492 | |||
| 2493 | msgid " VMP<vol> = MB of purgeable space on Volume <vol>" | ||
| 2494 | msgstr "" | ||
| 2495 | |||
| 2496 | msgid " VPF<vol> = percent free space on volume <vol>" | ||
| 2497 | msgstr "" | ||
| 2498 | |||
| 2499 | msgid " VKF<vol> = KB of free space on volume <vol>" | ||
| 2500 | msgstr "" | ||
| 2501 | |||
| 2502 | msgid " VPP<vol> = percent purgeable space on volume <vol>" | ||
| 2503 | msgstr "" | ||
| 2504 | |||
| 2505 | msgid " VKP<vol> = KB of purgeable space on volume <vol>" | ||
| 2506 | msgstr "" | ||
| 2507 | |||
| 2508 | msgid " VPNP<vol> = percent not yet purgeable space on volume <vol>" | ||
| 2509 | msgstr "" | ||
| 2510 | |||
| 2511 | msgid " VKNP<vol> = KB of not yet purgeable space on volume <vol>" | ||
| 2512 | msgstr "" | ||
| 2513 | |||
| 2514 | msgid " LRUM = LRU sitting time in minutes" | ||
| 2515 | msgstr "" | ||
| 2516 | |||
| 2517 | msgid " LRUS = LRU sitting time in seconds" | ||
| 2518 | msgstr "" | ||
| 2519 | |||
| 2520 | msgid " DSDB = check to see if DS Database is open" | ||
| 2521 | msgstr "" | ||
| 2522 | |||
| 2523 | msgid " DSVER = NDS version" | ||
| 2524 | msgstr "" | ||
| 2525 | |||
| 2526 | msgid " UPRB = used packet receive buffers" | ||
| 2527 | msgstr "" | ||
| 2528 | |||
| 2529 | msgid " PUPRB = percent (of max) used packet receive buffers" | ||
| 2530 | msgstr "" | ||
| 2531 | |||
| 2532 | msgid " SAPENTRIES = number of entries in the SAP table" | ||
| 2533 | msgstr "" | ||
| 2534 | |||
| 2535 | msgid " SAPENTRIES<n> = number of entries in the SAP table for SAP type <n>" | ||
| 2536 | msgstr "" | ||
| 2537 | |||
| 2538 | msgid " TSYNC = timesync status" | ||
| 2539 | msgstr "" | ||
| 2540 | |||
| 2541 | msgid " LOGINS = check to see if logins are enabled" | ||
| 2542 | msgstr "" | ||
| 2543 | |||
| 2544 | msgid " CONNS = number of currently licensed connections" | ||
| 2545 | msgstr "" | ||
| 2546 | |||
| 2547 | msgid " NRMH\t= NRM Summary Status" | ||
| 2548 | msgstr "" | ||
| 2549 | |||
| 2550 | msgid " NRMP<stat> = Returns the current value for a NRM health item" | ||
| 2551 | msgstr "" | ||
| 2552 | |||
| 2553 | msgid " NRMM<stat> = Returns the current memory stats from NRM" | ||
| 2554 | msgstr "" | ||
| 2555 | |||
| 2556 | msgid " NRMS<stat> = Returns the current Swapfile stats from NRM" | ||
| 2557 | msgstr "" | ||
| 2558 | |||
| 2559 | msgid " NSS1<stat> = Statistics from _Admin:Manage_NSS\\GeneralStats.xml" | ||
| 2560 | msgstr "" | ||
| 2561 | |||
| 2562 | msgid " NSS3<stat> = Statistics from _Admin:Manage_NSS\\NameCache.xml" | ||
| 2563 | msgstr "" | ||
| 2564 | |||
| 2565 | msgid " NSS4<stat> = Statistics from _Admin:Manage_NSS\\FileStats.xml" | ||
| 2566 | msgstr "" | ||
| 2567 | |||
| 2568 | msgid " NSS5<stat> = Statistics from _Admin:Manage_NSS\\ObjectCache.xml" | ||
| 2569 | msgstr "" | ||
| 2570 | |||
| 2571 | msgid " NSS6<stat> = Statistics from _Admin:Manage_NSS\\Thread.xml" | ||
| 2572 | msgstr "" | ||
| 2573 | |||
| 2574 | msgid "" | ||
| 2575 | " NSS7<stat> = Statistics from _Admin:Manage_NSS\\AuthorizationCache.xml" | ||
| 2576 | msgstr "" | ||
| 2577 | |||
| 2578 | msgid " NLM:<nlm> = check if NLM is loaded and report version" | ||
| 2579 | msgstr "" | ||
| 2580 | |||
| 2581 | msgid " (e.g. NLM:TSANDS.NLM)" | ||
| 2582 | msgstr "" | ||
| 2583 | |||
| 2584 | msgid "Include server version string in results" | ||
| 2585 | msgstr "" | ||
| 2586 | |||
| 2587 | msgid "- This plugin requires that the MRTGEXT.NLM file from James Drews' MRTG" | ||
| 2588 | msgstr "" | ||
| 2589 | |||
| 2590 | msgid "" | ||
| 2591 | " extension for NetWare be loaded on the Novell servers you wish to check." | ||
| 2592 | msgstr "" | ||
| 2593 | |||
| 2594 | msgid " (available from http://www.engr.wisc.edu/~drews/mrtg/)" | ||
| 2595 | msgstr "" | ||
| 2596 | |||
| 2597 | msgid "" | ||
| 2598 | "- Values for critical thresholds should be lower than warning thresholds" | ||
| 2599 | msgstr "" | ||
| 2600 | |||
| 2601 | msgid "" | ||
| 2602 | " when the following variables are checked: VPF, VKF, LTCH, CBUFF, DCB, " | ||
| 2603 | msgstr "" | ||
| 2604 | |||
| 2605 | msgid " TCB, LRUS and LRUM." | ||
| 2606 | msgstr "" | ||
| 2607 | |||
| 2608 | msgid "Unknown error fetching load data\n" | ||
| 2609 | msgstr "" | ||
| 2610 | |||
| 2611 | msgid "Invalid response from server - no load information\n" | ||
| 2612 | msgstr "" | ||
| 2613 | |||
| 2614 | msgid "Invalid response from server after load 1\n" | ||
| 2615 | msgstr "" | ||
| 2616 | |||
| 2617 | msgid "Invalid response from server after load 5\n" | ||
| 2618 | msgstr "" | ||
| 2619 | |||
| 2620 | #, c-format | ||
| 2621 | msgid "Load %s - %s-min load average = %0.2f" | ||
| 2622 | msgstr "" | ||
| 2623 | |||
| 2624 | msgid "Unknown error fetching disk data\n" | ||
| 2625 | msgstr "" | ||
| 2626 | |||
| 2627 | msgid "Invalid response from server\n" | ||
| 2628 | msgstr "" | ||
| 2629 | |||
| 2630 | msgid "Unknown error fetching network status\n" | ||
| 2631 | msgstr "" | ||
| 2632 | |||
| 2633 | #, c-format | ||
| 2634 | msgid "Net %s - %d connection%s on port %d" | ||
| 2635 | msgstr "" | ||
| 2636 | |||
| 2637 | msgid "Unknown error fetching process status\n" | ||
| 2638 | msgstr "" | ||
| 2639 | |||
| 2640 | #, c-format | ||
| 2641 | msgid "Process %s - %d instance%s of %s running" | ||
| 2642 | msgstr "" | ||
| 2643 | |||
| 2644 | #, c-format | ||
| 2645 | msgid "Uptime %s - Up %d days %d hours %d minutes" | ||
| 2646 | msgstr "" | ||
| 2647 | |||
| 2648 | msgid "" | ||
| 2649 | "This plugin attempts to contact the Over-CR collector daemon running on the" | ||
| 2650 | msgstr "" | ||
| 2651 | |||
| 2652 | msgid "remote UNIX server in order to gather the requested system information." | ||
| 2653 | msgstr "" | ||
| 2654 | |||
| 2655 | msgid "LOAD1 = 1 minute average CPU load" | ||
| 2656 | msgstr "" | ||
| 2657 | |||
| 2658 | msgid "LOAD5 = 5 minute average CPU load" | ||
| 2659 | msgstr "" | ||
| 2660 | |||
| 2661 | msgid "LOAD15 = 15 minute average CPU load" | ||
| 2662 | msgstr "" | ||
| 2663 | |||
| 2664 | msgid "DPU<filesys> = percent used disk space on filesystem <filesys>" | ||
| 2665 | msgstr "" | ||
| 2666 | |||
| 2667 | msgid "PROC<process> = number of running processes with name <process>" | ||
| 2668 | msgstr "" | ||
| 2669 | |||
| 2670 | msgid "NET<port> = number of active connections on TCP port <port>" | ||
| 2671 | msgstr "" | ||
| 2672 | |||
| 2673 | msgid "UPTIME = system uptime in seconds" | ||
| 2674 | msgstr "" | ||
| 2675 | |||
| 2676 | msgid "This plugin requires that Eric Molitors' Over-CR collector daemon be" | ||
| 2677 | msgstr "" | ||
| 2678 | |||
| 2679 | msgid "running on the remote server." | ||
| 2680 | msgstr "" | ||
| 2681 | |||
| 2682 | msgid "Over-CR can be downloaded from http://www.molitor.org/overcr" | ||
| 2683 | msgstr "" | ||
| 2684 | |||
| 2685 | msgid "This plugin was tested with version 0.99.53 of the Over-CR collector" | ||
| 2686 | msgstr "" | ||
| 2687 | |||
| 2688 | msgid "" | ||
| 2689 | "For the available options, the critical threshold value should always be" | ||
| 2690 | msgstr "" | ||
| 2691 | |||
| 2692 | msgid "" | ||
| 2693 | "higher than the warning threshold value, EXCEPT with the uptime variable" | ||
| 2694 | msgstr "" | ||
| 2695 | |||
| 2696 | #, c-format | ||
| 2697 | msgid "CRITICAL - no connection to '%s' (%s).\n" | ||
| 2698 | msgstr "" | ||
| 2699 | |||
| 2700 | #, c-format | ||
| 2701 | msgid " %s - database %s (%f sec.)|%s\n" | ||
| 2702 | msgstr "" | ||
| 2703 | |||
| 2704 | msgid "Critical threshold must be a positive integer" | ||
| 2705 | msgstr "" | ||
| 2706 | |||
| 2707 | msgid "Warning threshold must be a positive integer" | ||
| 2708 | msgstr "" | ||
| 2709 | |||
| 2710 | msgid "Database name exceeds the maximum length" | ||
| 2711 | msgstr "" | ||
| 2712 | |||
| 2713 | msgid "User name is not valid" | ||
| 2714 | msgstr "" | ||
| 2715 | |||
| 2716 | #, c-format | ||
| 2717 | msgid "Test whether a PostgreSQL Database is accepting connections." | ||
| 2718 | msgstr "" | ||
| 2719 | |||
| 2720 | msgid "Database to check " | ||
| 2721 | msgstr "" | ||
| 2722 | |||
| 2723 | #, c-format | ||
| 2724 | msgid "(default: %s)\n" | ||
| 2725 | msgstr "" | ||
| 2726 | |||
| 2727 | msgid "Login name of user" | ||
| 2728 | msgstr "" | ||
| 2729 | |||
| 2730 | msgid "Password (BIG SECURITY ISSUE)" | ||
| 2731 | msgstr "" | ||
| 2732 | |||
| 2733 | msgid "Connection parameters (keyword = value), see below" | ||
| 2734 | msgstr "" | ||
| 2735 | |||
| 2736 | msgid "SQL query to run. Only first column in first row will be read" | ||
| 2737 | msgstr "" | ||
| 2738 | |||
| 2739 | msgid "A name for the query, this string is used instead of the query" | ||
| 2740 | msgstr "" | ||
| 2741 | |||
| 2742 | msgid "in the long output of the plugin" | ||
| 2743 | msgstr "" | ||
| 2744 | |||
| 2745 | msgid "SQL query value to result in warning status (double)" | ||
| 2746 | msgstr "" | ||
| 2747 | |||
| 2748 | msgid "SQL query value to result in critical status (double)" | ||
| 2749 | msgstr "" | ||
| 2750 | |||
| 2751 | msgid "All parameters are optional." | ||
| 2752 | msgstr "" | ||
| 2753 | |||
| 2754 | msgid "" | ||
| 2755 | "This plugin tests a PostgreSQL DBMS to determine whether it is active and" | ||
| 2756 | msgstr "" | ||
| 2757 | |||
| 2758 | msgid "accepting queries. In its current operation, it simply connects to the" | ||
| 2759 | msgstr "" | ||
| 2760 | |||
| 2761 | msgid "" | ||
| 2762 | "specified database, and then disconnects. If no database is specified, it" | ||
| 2763 | msgstr "" | ||
| 2764 | |||
| 2765 | msgid "" | ||
| 2766 | "connects to the template1 database, which is present in every functioning" | ||
| 2767 | msgstr "" | ||
| 2768 | |||
| 2769 | msgid "PostgreSQL DBMS." | ||
| 2770 | msgstr "" | ||
| 2771 | |||
| 2772 | msgid "If a query is specified using the -q option, it will be executed after" | ||
| 2773 | msgstr "" | ||
| 2774 | |||
| 2775 | msgid "connecting to the server. The result from the query has to be numeric." | ||
| 2776 | msgstr "" | ||
| 2777 | |||
| 2778 | msgid "" | ||
| 2779 | "Multiple SQL commands, separated by semicolon, are allowed but the result " | ||
| 2780 | msgstr "" | ||
| 2781 | |||
| 2782 | msgid "of the last command is taken into account only. The value of the first" | ||
| 2783 | msgstr "" | ||
| 2784 | |||
| 2785 | msgid "" | ||
| 2786 | "column in the first row is used as the check result. If a second column is" | ||
| 2787 | msgstr "" | ||
| 2788 | |||
| 2789 | msgid "present in the result set, this is added to the plugin output with a" | ||
| 2790 | msgstr "" | ||
| 2791 | |||
| 2792 | msgid "" | ||
| 2793 | "prefix of \"Extra Info:\". This information can be displayed in the system" | ||
| 2794 | msgstr "" | ||
| 2795 | |||
| 2796 | msgid "executing the plugin." | ||
| 2797 | msgstr "" | ||
| 2798 | |||
| 2799 | msgid "" | ||
| 2800 | "See the chapter \"Monitoring Database Activity\" of the PostgreSQL manual" | ||
| 2801 | msgstr "" | ||
| 2802 | |||
| 2803 | msgid "" | ||
| 2804 | "for details about how to access internal statistics of the database server." | ||
| 2805 | msgstr "" | ||
| 2806 | |||
| 2807 | msgid "" | ||
| 2808 | "For a list of available connection parameters which may be used with the -o" | ||
| 2809 | msgstr "" | ||
| 2810 | |||
| 2811 | msgid "" | ||
| 2812 | "command line option, see the documentation for PQconnectdb() in the chapter" | ||
| 2813 | msgstr "" | ||
| 2814 | |||
| 2815 | msgid "" | ||
| 2816 | "\"libpq - C Library\" of the PostgreSQL manual. For example, this may be" | ||
| 2817 | msgstr "" | ||
| 2818 | |||
| 2819 | msgid "" | ||
| 2820 | "used to specify a service name in pg_service.conf to be used for additional" | ||
| 2821 | msgstr "" | ||
| 2822 | |||
| 2823 | msgid "connection parameters: -o 'service=<name>' or to specify the SSL mode:" | ||
| 2824 | msgstr "" | ||
| 2825 | |||
| 2826 | msgid "-o 'sslmode=require'." | ||
| 2827 | msgstr "" | ||
| 2828 | |||
| 2829 | msgid "" | ||
| 2830 | "The plugin will connect to a local postmaster if no host is specified. To" | ||
| 2831 | msgstr "" | ||
| 2832 | |||
| 2833 | msgid "" | ||
| 2834 | "connect to a remote host, be sure that the remote postmaster accepts TCP/IP" | ||
| 2835 | msgstr "" | ||
| 2836 | |||
| 2837 | msgid "connections (start the postmaster with the -i option)." | ||
| 2838 | msgstr "" | ||
| 2839 | |||
| 2840 | msgid "" | ||
| 2841 | "Typically, the monitoring user (unless the --logname option is used) should " | ||
| 2842 | "be" | ||
| 2843 | msgstr "" | ||
| 2844 | |||
| 2845 | msgid "" | ||
| 2846 | "able to connect to the database without a password. The plugin can also send" | ||
| 2847 | msgstr "" | ||
| 2848 | |||
| 2849 | msgid "a password, but no effort is made to obscure or encrypt the password." | ||
| 2850 | msgstr "" | ||
| 2851 | |||
| 2852 | #, c-format | ||
| 2853 | msgid "QUERY %s - %s: %s.\n" | ||
| 2854 | msgstr "" | ||
| 2855 | |||
| 2856 | msgid "Error with query" | ||
| 2857 | msgstr "" | ||
| 2858 | |||
| 2859 | msgid "No rows returned" | ||
| 2860 | msgstr "" | ||
| 2861 | |||
| 2862 | msgid "No columns returned" | ||
| 2863 | msgstr "" | ||
| 2864 | |||
| 2865 | msgid "No data returned" | ||
| 2866 | msgstr "" | ||
| 2867 | |||
| 2868 | msgid "Is not a numeric" | ||
| 2869 | msgstr "" | ||
| 2870 | |||
| 2871 | #, c-format | ||
| 2872 | msgid "%s returned %f" | ||
| 2873 | msgstr "" | ||
| 2874 | |||
| 2875 | #, c-format | ||
| 2876 | msgid "'%s' returned %f" | ||
| 2877 | msgstr "" | ||
| 2878 | |||
| 2879 | msgid "CRITICAL - Could not interpret output from ping command\n" | ||
| 2880 | msgstr "" | ||
| 2881 | |||
| 2882 | #, c-format | ||
| 2883 | msgid "PING %s - %sPacket loss = %d%%" | ||
| 2884 | msgstr "" | ||
| 2885 | |||
| 2886 | #, c-format | ||
| 2887 | msgid "PING %s - %sPacket loss = %d%%, RTA = %2.2f ms" | ||
| 2888 | msgstr "" | ||
| 2889 | |||
| 2890 | msgid "Could not realloc() addresses\n" | ||
| 2891 | msgstr "" | ||
| 2892 | |||
| 2893 | #, c-format | ||
| 2894 | msgid "<max_packets> (%s) must be a non-negative number\n" | ||
| 2895 | msgstr "" | ||
| 2896 | |||
| 2897 | #, c-format | ||
| 2898 | msgid "<wpl> (%s) must be an integer percentage\n" | ||
| 2899 | msgstr "" | ||
| 2900 | |||
| 2901 | #, c-format | ||
| 2902 | msgid "<cpl> (%s) must be an integer percentage\n" | ||
| 2903 | msgstr "" | ||
| 2904 | |||
| 2905 | #, c-format | ||
| 2906 | msgid "<wrta> (%s) must be a non-negative number\n" | ||
| 2907 | msgstr "" | ||
| 2908 | |||
| 2909 | #, c-format | ||
| 2910 | msgid "<crta> (%s) must be a non-negative number\n" | ||
| 2911 | msgstr "" | ||
| 2912 | |||
| 2913 | #, c-format | ||
| 2914 | msgid "" | ||
| 2915 | "%s: Warning threshold must be integer or percentage!\n" | ||
| 2916 | "\n" | ||
| 2917 | msgstr "" | ||
| 2918 | |||
| 2919 | #, c-format | ||
| 2920 | msgid "<wrta> was not set\n" | ||
| 2921 | msgstr "" | ||
| 2922 | |||
| 2923 | #, c-format | ||
| 2924 | msgid "<crta> was not set\n" | ||
| 2925 | msgstr "" | ||
| 2926 | |||
| 2927 | #, c-format | ||
| 2928 | msgid "<wpl> was not set\n" | ||
| 2929 | msgstr "" | ||
| 2930 | |||
| 2931 | #, c-format | ||
| 2932 | msgid "<cpl> was not set\n" | ||
| 2933 | msgstr "" | ||
| 2934 | |||
| 2935 | #, c-format | ||
| 2936 | msgid "<wrta> (%f) cannot be larger than <crta> (%f)\n" | ||
| 2937 | msgstr "" | ||
| 2938 | |||
| 2939 | #, c-format | ||
| 2940 | msgid "<wpl> (%d) cannot be larger than <cpl> (%d)\n" | ||
| 2941 | msgstr "" | ||
| 2942 | |||
| 2943 | #, c-format | ||
| 2944 | msgid "Cannot open stderr for %s\n" | ||
| 2945 | msgstr "" | ||
| 2946 | |||
| 2947 | msgid "System call sent warnings to stderr " | ||
| 2948 | msgstr "" | ||
| 2949 | |||
| 2950 | #, c-format | ||
| 2951 | msgid "CRITICAL - Network Unreachable (%s)\n" | ||
| 2952 | msgstr "" | ||
| 2953 | |||
| 2954 | #, c-format | ||
| 2955 | msgid "CRITICAL - Host Unreachable (%s)\n" | ||
| 2956 | msgstr "" | ||
| 2957 | |||
| 2958 | #, c-format | ||
| 2959 | msgid "CRITICAL - Bogus ICMP: Port Unreachable (%s)\n" | ||
| 2960 | msgstr "" | ||
| 2961 | |||
| 2962 | #, c-format | ||
| 2963 | msgid "CRITICAL - Bogus ICMP: Protocol Unreachable (%s)\n" | ||
| 2964 | msgstr "" | ||
| 2965 | |||
| 2966 | #, c-format | ||
| 2967 | msgid "CRITICAL - Network Prohibited (%s)\n" | ||
| 2968 | msgstr "" | ||
| 2969 | |||
| 2970 | #, c-format | ||
| 2971 | msgid "CRITICAL - Host Prohibited (%s)\n" | ||
| 2972 | msgstr "" | ||
| 2973 | |||
| 2974 | #, c-format | ||
| 2975 | msgid "CRITICAL - Packet Filtered (%s)\n" | ||
| 2976 | msgstr "" | ||
| 2977 | |||
| 2978 | #, c-format | ||
| 2979 | msgid "CRITICAL - Host not found (%s)\n" | ||
| 2980 | msgstr "" | ||
| 2981 | |||
| 2982 | #, c-format | ||
| 2983 | msgid "CRITICAL - Time to live exceeded (%s)\n" | ||
| 2984 | msgstr "" | ||
| 2985 | |||
| 2986 | #, c-format | ||
| 2987 | msgid "CRITICAL - Destination Unreachable (%s)\n" | ||
| 2988 | msgstr "" | ||
| 2989 | |||
| 2990 | msgid "Unable to realloc warn_text\n" | ||
| 2991 | msgstr "" | ||
| 2992 | |||
| 2993 | #, c-format | ||
| 2994 | msgid "Use ping to check connection statistics for a remote host." | ||
| 2995 | msgstr "" | ||
| 2996 | |||
| 2997 | msgid "host to ping" | ||
| 2998 | msgstr "" | ||
| 2999 | |||
| 3000 | msgid "number of ICMP ECHO packets to send" | ||
| 3001 | msgstr "" | ||
| 3002 | |||
| 3003 | #, c-format | ||
| 3004 | msgid "(Default: %d)\n" | ||
| 3005 | msgstr "" | ||
| 3006 | |||
| 3007 | msgid "show HTML in the plugin output (obsoleted by urlize)" | ||
| 3008 | msgstr "" | ||
| 3009 | |||
| 3010 | msgid "THRESHOLD is <rta>,<pl>% where <rta> is the round trip average travel" | ||
| 3011 | msgstr "" | ||
| 3012 | |||
| 3013 | msgid "time (ms) which triggers a WARNING or CRITICAL state, and <pl> is the" | ||
| 3014 | msgstr "" | ||
| 3015 | |||
| 3016 | msgid "percentage of packet loss to trigger an alarm state." | ||
| 3017 | msgstr "" | ||
| 3018 | |||
| 3019 | msgid "" | ||
| 3020 | "This plugin uses the ping command to probe the specified host for packet loss" | ||
| 3021 | msgstr "" | ||
| 3022 | |||
| 3023 | msgid "" | ||
| 3024 | "(percentage) and round trip average (milliseconds). It can produce HTML " | ||
| 3025 | "output" | ||
| 3026 | msgstr "" | ||
| 3027 | |||
| 3028 | msgid "" | ||
| 3029 | "linking to a traceroute CGI contributed by Ian Cass. The CGI can be found in" | ||
| 3030 | msgstr "" | ||
| 3031 | |||
| 3032 | msgid "the contrib area of the downloads section at http://www.nagios.org/" | ||
| 3033 | msgstr "" | ||
| 3034 | |||
| 3035 | #, c-format | ||
| 3036 | msgid "CMD: %s\n" | ||
| 3037 | msgstr "" | ||
| 3038 | |||
| 3039 | msgid "System call sent warnings to stderr" | ||
| 3040 | msgstr "" | ||
| 3041 | |||
| 3042 | #, c-format | ||
| 3043 | msgid "Not parseable: %s" | ||
| 3044 | msgstr "" | ||
| 3045 | |||
| 3046 | #, c-format | ||
| 3047 | msgid "Unable to read output\n" | ||
| 3048 | msgstr "" | ||
| 3049 | |||
| 3050 | #, c-format | ||
| 3051 | msgid "%d warn out of " | ||
| 3052 | msgstr "" | ||
| 3053 | |||
| 3054 | #, c-format | ||
| 3055 | msgid "%d crit, %d warn out of " | ||
| 3056 | msgstr "" | ||
| 3057 | |||
| 3058 | #, c-format | ||
| 3059 | msgid " with %s" | ||
| 3060 | msgstr "" | ||
| 3061 | |||
| 3062 | msgid "Parent Process ID must be an integer!" | ||
| 3063 | msgstr "" | ||
| 3064 | |||
| 3065 | #, c-format | ||
| 3066 | msgid "%s%sSTATE = %s" | ||
| 3067 | msgstr "" | ||
| 3068 | |||
| 3069 | msgid "UID was not found" | ||
| 3070 | msgstr "" | ||
| 3071 | |||
| 3072 | msgid "User name was not found" | ||
| 3073 | msgstr "" | ||
| 3074 | |||
| 3075 | #, c-format | ||
| 3076 | msgid "%s%scommand name '%s'" | ||
| 3077 | msgstr "" | ||
| 3078 | |||
| 3079 | #, c-format | ||
| 3080 | msgid "%s%sexclude progs '%s'" | ||
| 3081 | msgstr "" | ||
| 3082 | |||
| 3083 | msgid "RSS must be an integer!" | ||
| 3084 | msgstr "" | ||
| 3085 | |||
| 3086 | msgid "VSZ must be an integer!" | ||
| 3087 | msgstr "" | ||
| 3088 | |||
| 3089 | msgid "PCPU must be a float!" | ||
| 3090 | msgstr "" | ||
| 3091 | |||
| 3092 | msgid "Metric must be one of PROCS, VSZ, RSS, CPU, ELAPSED!" | ||
| 3093 | msgstr "" | ||
| 3094 | |||
| 3095 | msgid "" | ||
| 3096 | "Checks all processes and generates WARNING or CRITICAL states if the " | ||
| 3097 | "specified" | ||
| 3098 | msgstr "" | ||
| 3099 | |||
| 3100 | msgid "" | ||
| 3101 | "metric is outside the required threshold ranges. The metric defaults to " | ||
| 3102 | "number" | ||
| 3103 | msgstr "" | ||
| 3104 | |||
| 3105 | msgid "" | ||
| 3106 | "of processes. Search filters can be applied to limit the processes to check." | ||
| 3107 | msgstr "" | ||
| 3108 | |||
| 3109 | msgid "Generate warning state if metric is outside this range" | ||
| 3110 | msgstr "" | ||
| 3111 | |||
| 3112 | msgid "Generate critical state if metric is outside this range" | ||
| 3113 | msgstr "" | ||
| 3114 | |||
| 3115 | msgid "Check thresholds against metric. Valid types:" | ||
| 3116 | msgstr "" | ||
| 3117 | |||
| 3118 | msgid "PROCS - number of processes (default)" | ||
| 3119 | msgstr "" | ||
| 3120 | |||
| 3121 | msgid "VSZ - virtual memory size" | ||
| 3122 | msgstr "" | ||
| 3123 | |||
| 3124 | msgid "RSS - resident set memory size" | ||
| 3125 | msgstr "" | ||
| 3126 | |||
| 3127 | msgid "CPU - percentage CPU" | ||
| 3128 | msgstr "" | ||
| 3129 | |||
| 3130 | msgid "ELAPSED - time elapsed in seconds" | ||
| 3131 | msgstr "" | ||
| 3132 | |||
| 3133 | msgid "Extra information. Up to 3 verbosity levels" | ||
| 3134 | msgstr "" | ||
| 3135 | |||
| 3136 | msgid "Filter own process the traditional way by PID instead of /proc/pid/exe" | ||
| 3137 | msgstr "" | ||
| 3138 | |||
| 3139 | msgid "Only scan for processes that have, in the output of `ps`, one or" | ||
| 3140 | msgstr "" | ||
| 3141 | |||
| 3142 | msgid "more of the status flags you specify (for example R, Z, S, RS," | ||
| 3143 | msgstr "" | ||
| 3144 | |||
| 3145 | msgid "RSZDT, plus others based on the output of your 'ps' command)." | ||
| 3146 | msgstr "" | ||
| 3147 | |||
| 3148 | msgid "Only scan for children of the parent process ID indicated." | ||
| 3149 | msgstr "" | ||
| 3150 | |||
| 3151 | msgid "Only scan for processes with VSZ higher than indicated." | ||
| 3152 | msgstr "" | ||
| 3153 | |||
| 3154 | msgid "Only scan for processes with RSS higher than indicated." | ||
| 3155 | msgstr "" | ||
| 3156 | |||
| 3157 | msgid "Only scan for processes with PCPU higher than indicated." | ||
| 3158 | msgstr "" | ||
| 3159 | |||
| 3160 | msgid "Only scan for processes with user name or ID indicated." | ||
| 3161 | msgstr "" | ||
| 3162 | |||
| 3163 | msgid "Only scan for processes with args that contain STRING." | ||
| 3164 | msgstr "" | ||
| 3165 | |||
| 3166 | msgid "Only scan for processes with args that contain the regex STRING." | ||
| 3167 | msgstr "" | ||
| 3168 | |||
| 3169 | msgid "Only scan for exact matches of COMMAND (without path)." | ||
| 3170 | msgstr "" | ||
| 3171 | |||
| 3172 | msgid "Exclude processes which match this comma separated list" | ||
| 3173 | msgstr "" | ||
| 3174 | |||
| 3175 | msgid "Only scan for non kernel threads (works on Linux only)." | ||
| 3176 | msgstr "" | ||
| 3177 | |||
| 3178 | #, c-format | ||
| 3179 | msgid "" | ||
| 3180 | "\n" | ||
| 3181 | "RANGEs are specified 'min:max' or 'min:' or ':max' (or 'max'). If\n" | ||
| 3182 | "specified 'max:min', a warning status will be generated if the\n" | ||
| 3183 | "count is inside the specified range\n" | ||
| 3184 | "\n" | ||
| 3185 | msgstr "" | ||
| 3186 | |||
| 3187 | #, c-format | ||
| 3188 | msgid "" | ||
| 3189 | "This plugin checks the number of currently running processes and\n" | ||
| 3190 | "generates WARNING or CRITICAL states if the process count is outside\n" | ||
| 3191 | "the specified threshold ranges. The process count can be filtered by\n" | ||
| 3192 | "process owner, parent process PID, current state (e.g., 'Z'), or may\n" | ||
| 3193 | "be the total number of running processes\n" | ||
| 3194 | "\n" | ||
| 3195 | msgstr "" | ||
| 3196 | |||
| 3197 | msgid "Warning if not two processes with command name portsentry." | ||
| 3198 | msgstr "" | ||
| 3199 | |||
| 3200 | msgid "Critical if < 2 or > 1024 processes" | ||
| 3201 | msgstr "" | ||
| 3202 | |||
| 3203 | msgid "Critical if not at least 1 process with command sshd" | ||
| 3204 | msgstr "" | ||
| 3205 | |||
| 3206 | msgid "Warning if > 1024 processes with command name sshd." | ||
| 3207 | msgstr "" | ||
| 3208 | |||
| 3209 | msgid "Critical if < 1 processes with command name sshd." | ||
| 3210 | msgstr "" | ||
| 3211 | |||
| 3212 | msgid "Warning alert if > 10 processes with command arguments containing" | ||
| 3213 | msgstr "" | ||
| 3214 | |||
| 3215 | msgid "'/usr/local/bin/perl' and owned by root" | ||
| 3216 | msgstr "" | ||
| 3217 | |||
| 3218 | msgid "Alert if VSZ of any processes over 50K or 100K" | ||
| 3219 | msgstr "" | ||
| 3220 | |||
| 3221 | msgid "Alert if CPU of any processes over 10% or 20%" | ||
| 3222 | msgstr "" | ||
| 3223 | |||
| 3224 | msgid "Config file error\n" | ||
| 3225 | msgstr "" | ||
| 3226 | |||
| 3227 | msgid "Out of Memory?\n" | ||
| 3228 | msgstr "" | ||
| 3229 | |||
| 3230 | msgid "Invalid NAS-Identifier\n" | ||
| 3231 | msgstr "" | ||
| 3232 | |||
| 3233 | #, c-format | ||
| 3234 | msgid "gethostname() failed!\n" | ||
| 3235 | msgstr "" | ||
| 3236 | |||
| 3237 | msgid "Invalid NAS-IP-Address\n" | ||
| 3238 | msgstr "" | ||
| 3239 | |||
| 3240 | msgid "Timeout\n" | ||
| 3241 | msgstr "" | ||
| 3242 | |||
| 3243 | msgid "Auth Error\n" | ||
| 3244 | msgstr "" | ||
| 3245 | |||
| 3246 | msgid "Auth Failed\n" | ||
| 3247 | msgstr "" | ||
| 3248 | |||
| 3249 | msgid "Bad Response\n" | ||
| 3250 | msgstr "" | ||
| 3251 | |||
| 3252 | msgid "Auth OK\n" | ||
| 3253 | msgstr "" | ||
| 3254 | |||
| 3255 | #, c-format | ||
| 3256 | msgid "Unexpected result code %d" | ||
| 3257 | msgstr "" | ||
| 3258 | |||
| 3259 | msgid "Number of retries must be a positive integer" | ||
| 3260 | msgstr "" | ||
| 3261 | |||
| 3262 | msgid "User not specified" | ||
| 3263 | msgstr "" | ||
| 3264 | |||
| 3265 | msgid "Password not specified" | ||
| 3266 | msgstr "" | ||
| 3267 | |||
| 3268 | msgid "Configuration file not specified" | ||
| 3269 | msgstr "" | ||
| 3270 | |||
| 3271 | msgid "Tests to see if a RADIUS server is accepting connections." | ||
| 3272 | msgstr "" | ||
| 3273 | |||
| 3274 | msgid "The user to authenticate" | ||
| 3275 | msgstr "" | ||
| 3276 | |||
| 3277 | msgid "Password for authentication (SECURITY RISK)" | ||
| 3278 | msgstr "" | ||
| 3279 | |||
| 3280 | msgid "NAS identifier" | ||
| 3281 | msgstr "" | ||
| 3282 | |||
| 3283 | msgid "NAS IP Address" | ||
| 3284 | msgstr "" | ||
| 3285 | |||
| 3286 | msgid "Configuration file" | ||
| 3287 | msgstr "" | ||
| 3288 | |||
| 3289 | msgid "Response string to expect from the server" | ||
| 3290 | msgstr "" | ||
| 3291 | |||
| 3292 | msgid "Number of times to retry a failed connection" | ||
| 3293 | msgstr "" | ||
| 3294 | |||
| 3295 | msgid "" | ||
| 3296 | "This plugin tests a RADIUS server to see if it is accepting connections." | ||
| 3297 | msgstr "" | ||
| 3298 | |||
| 3299 | msgid "" | ||
| 3300 | "The server to test must be specified in the invocation, as well as a user" | ||
| 3301 | msgstr "" | ||
| 3302 | |||
| 3303 | msgid "name and password. A configuration file must be present. The format of" | ||
| 3304 | msgstr "" | ||
| 3305 | |||
| 3306 | msgid "" | ||
| 3307 | "the configuration file is described in the radiusclient library sources." | ||
| 3308 | msgstr "" | ||
| 3309 | |||
| 3310 | msgid "The password option presents a substantial security issue because the" | ||
| 3311 | msgstr "" | ||
| 3312 | |||
| 3313 | msgid "" | ||
| 3314 | "password can possibly be determined by careful watching of the command line" | ||
| 3315 | msgstr "" | ||
| 3316 | |||
| 3317 | msgid "in a process listing. This risk is exacerbated because the plugin will" | ||
| 3318 | msgstr "" | ||
| 3319 | |||
| 3320 | msgid "" | ||
| 3321 | "typically be executed at regular predictable intervals. Please be sure that" | ||
| 3322 | msgstr "" | ||
| 3323 | |||
| 3324 | msgid "the password used does not allow access to sensitive system resources." | ||
| 3325 | msgstr "" | ||
| 3326 | |||
| 3327 | #, c-format | ||
| 3328 | msgid "Unable to connect to %s on port %d\n" | ||
| 3329 | msgstr "" | ||
| 3330 | |||
| 3331 | #, c-format | ||
| 3332 | msgid "No data received from %s\n" | ||
| 3333 | msgstr "" | ||
| 3334 | |||
| 3335 | msgid "Invalid REAL response received from host" | ||
| 3336 | msgstr "" | ||
| 3337 | |||
| 3338 | #, c-format | ||
| 3339 | msgid "Invalid REAL response received from host on port %d\n" | ||
| 3340 | msgstr "" | ||
| 3341 | |||
| 3342 | #, c-format | ||
| 3343 | msgid "No data received from host\n" | ||
| 3344 | msgstr "" | ||
| 3345 | |||
| 3346 | #, c-format | ||
| 3347 | msgid "REAL %s - %d second response time\n" | ||
| 3348 | msgstr "" | ||
| 3349 | |||
| 3350 | msgid "Warning time must be a positive integer" | ||
| 3351 | msgstr "" | ||
| 3352 | |||
| 3353 | msgid "Critical time must be a positive integer" | ||
| 3354 | msgstr "" | ||
| 3355 | |||
| 3356 | msgid "You must provide a server to check" | ||
| 3357 | msgstr "" | ||
| 3358 | |||
| 3359 | msgid "This plugin tests the REAL service on the specified host." | ||
| 3360 | msgstr "" | ||
| 3361 | |||
| 3362 | msgid "Connect to this url" | ||
| 3363 | msgstr "" | ||
| 3364 | |||
| 3365 | #, c-format | ||
| 3366 | msgid "String to expect in first line of server response (default: %s)\n" | ||
| 3367 | msgstr "" | ||
| 3368 | |||
| 3369 | msgid "This plugin will attempt to open an RTSP connection with the host." | ||
| 3370 | msgstr "" | ||
| 3371 | |||
| 3372 | msgid "Successful connects return STATE_OK, refusals and timeouts return" | ||
| 3373 | msgstr "" | ||
| 3374 | |||
| 3375 | msgid "" | ||
| 3376 | "STATE_CRITICAL, other errors return STATE_UNKNOWN. Successful connects," | ||
| 3377 | msgstr "" | ||
| 3378 | |||
| 3379 | msgid "" | ||
| 3380 | "but incorrect response messages from the host result in STATE_WARNING return" | ||
| 3381 | msgstr "" | ||
| 3382 | |||
| 3383 | msgid "values." | ||
| 3384 | msgstr "" | ||
| 3385 | |||
| 3386 | #, c-format | ||
| 3387 | msgid "malloc() failed!\n" | ||
| 3388 | msgstr "" | ||
| 3389 | |||
| 3390 | #, c-format | ||
| 3391 | msgid "CRITICAL - Cannot create SSL context.\n" | ||
| 3392 | msgstr "" | ||
| 3393 | |||
| 3394 | #, c-format | ||
| 3395 | msgid "recv() failed\n" | ||
| 3396 | msgstr "" | ||
| 3397 | |||
| 3398 | #, c-format | ||
| 3399 | msgid "WARNING - TLS not supported by server\n" | ||
| 3400 | msgstr "" | ||
| 3401 | |||
| 3402 | #, c-format | ||
| 3403 | msgid "Server does not support STARTTLS\n" | ||
| 3404 | msgstr "" | ||
| 3405 | |||
| 3406 | msgid "SMTP UNKNOWN - Cannot send EHLO command via TLS." | ||
| 3407 | msgstr "" | ||
| 3408 | |||
| 3409 | #, c-format | ||
| 3410 | msgid "sent %s" | ||
| 3411 | msgstr "" | ||
| 3412 | |||
| 3413 | msgid "SMTP UNKNOWN - Cannot read EHLO response via TLS." | ||
| 3414 | msgstr "" | ||
| 3415 | |||
| 3416 | #, c-format | ||
| 3417 | msgid "Invalid SMTP response received from host: %s\n" | ||
| 3418 | msgstr "" | ||
| 3419 | |||
| 3420 | #, c-format | ||
| 3421 | msgid "Invalid SMTP response received from host on port %d: %s\n" | ||
| 3422 | msgstr "" | ||
| 3423 | |||
| 3424 | #, c-format | ||
| 3425 | msgid "Could Not Compile Regular Expression" | ||
| 3426 | msgstr "" | ||
| 3427 | |||
| 3428 | #, c-format | ||
| 3429 | msgid "SMTP %s - Invalid response '%s' to command '%s'\n" | ||
| 3430 | msgstr "" | ||
| 3431 | |||
| 3432 | #, c-format | ||
| 3433 | msgid "Execute Error: %s\n" | ||
| 3434 | msgstr "" | ||
| 3435 | |||
| 3436 | msgid "no authuser specified, " | ||
| 3437 | msgstr "" | ||
| 3438 | |||
| 3439 | msgid "no authpass specified, " | ||
| 3440 | msgstr "" | ||
| 3441 | |||
| 3442 | #, c-format | ||
| 3443 | msgid "sent %s\n" | ||
| 3444 | msgstr "" | ||
| 3445 | |||
| 3446 | msgid "recv() failed after AUTH LOGIN, " | ||
| 3447 | msgstr "" | ||
| 3448 | |||
| 3449 | #, c-format | ||
| 3450 | msgid "received %s\n" | ||
| 3451 | msgstr "" | ||
| 3452 | |||
| 3453 | msgid "invalid response received after AUTH LOGIN, " | ||
| 3454 | msgstr "" | ||
| 3455 | |||
| 3456 | msgid "recv() failed after sending authuser, " | ||
| 3457 | msgstr "" | ||
| 3458 | |||
| 3459 | msgid "invalid response received after authuser, " | ||
| 3460 | msgstr "" | ||
| 3461 | |||
| 3462 | msgid "recv() failed after sending authpass, " | ||
| 3463 | msgstr "" | ||
| 3464 | |||
| 3465 | msgid "invalid response received after authpass, " | ||
| 3466 | msgstr "" | ||
| 3467 | |||
| 3468 | msgid "only authtype LOGIN is supported, " | ||
| 3469 | msgstr "" | ||
| 3470 | |||
| 3471 | #, c-format | ||
| 3472 | msgid "SMTP %s - %s%.3f sec. response time%s%s|%s\n" | ||
| 3473 | msgstr "" | ||
| 3474 | |||
| 3475 | #, c-format | ||
| 3476 | msgid "Could not realloc() units [%d]\n" | ||
| 3477 | msgstr "" | ||
| 3478 | |||
| 3479 | msgid "Critical time must be a positive" | ||
| 3480 | msgstr "" | ||
| 3481 | |||
| 3482 | msgid "Warning time must be a positive" | ||
| 3483 | msgstr "" | ||
| 3484 | |||
| 3485 | msgid "SSL support not available - install OpenSSL and recompile" | ||
| 3486 | msgstr "" | ||
| 3487 | |||
| 3488 | msgid "Set either -s/--ssl/--tls or -S/--starttls" | ||
| 3489 | msgstr "" | ||
| 3490 | |||
| 3491 | #, c-format | ||
| 3492 | msgid "Connection closed by server before sending QUIT command\n" | ||
| 3493 | msgstr "" | ||
| 3494 | |||
| 3495 | #, c-format | ||
| 3496 | msgid "recv() failed after QUIT." | ||
| 3497 | msgstr "" | ||
| 3498 | |||
| 3499 | #, c-format | ||
| 3500 | msgid "Connection reset by peer." | ||
| 3501 | msgstr "" | ||
| 3502 | |||
| 3503 | msgid "This plugin will attempt to open an SMTP connection with the host." | ||
| 3504 | msgstr "" | ||
| 3505 | |||
| 3506 | #, c-format | ||
| 3507 | msgid " String to expect in first line of server response (default: '%s')\n" | ||
| 3508 | msgstr "" | ||
| 3509 | |||
| 3510 | msgid "SMTP command (may be used repeatedly)" | ||
| 3511 | msgstr "" | ||
| 3512 | |||
| 3513 | msgid "Expected response to command (may be used repeatedly)" | ||
| 3514 | msgstr "" | ||
| 3515 | |||
| 3516 | msgid "FROM-address to include in MAIL command, required by Exchange 2000" | ||
| 3517 | msgstr "" | ||
| 3518 | |||
| 3519 | msgid "FQDN used for HELO" | ||
| 3520 | msgstr "" | ||
| 3521 | |||
| 3522 | msgid "Use PROXY protocol prefix for the connection." | ||
| 3523 | msgstr "" | ||
| 3524 | |||
| 3525 | msgid "Minimum number of days a certificate has to be valid." | ||
| 3526 | msgstr "" | ||
| 3527 | |||
| 3528 | msgid "Use SSL/TLS for the connection." | ||
| 3529 | msgstr "" | ||
| 3530 | |||
| 3531 | #, c-format | ||
| 3532 | msgid " Sets default port to %d.\n" | ||
| 3533 | msgstr "" | ||
| 3534 | |||
| 3535 | msgid "Use STARTTLS for the connection." | ||
| 3536 | msgstr "" | ||
| 3537 | |||
| 3538 | msgid "SMTP AUTH type to check (default none, only LOGIN supported)" | ||
| 3539 | msgstr "" | ||
| 3540 | |||
| 3541 | msgid "SMTP AUTH username" | ||
| 3542 | msgstr "" | ||
| 3543 | |||
| 3544 | msgid "SMTP AUTH password" | ||
| 3545 | msgstr "" | ||
| 3546 | |||
| 3547 | msgid "Send LHLO instead of HELO/EHLO" | ||
| 3548 | msgstr "" | ||
| 3549 | |||
| 3550 | msgid "Ignore failure when sending QUIT command to server" | ||
| 3551 | msgstr "" | ||
| 3552 | |||
| 3553 | msgid "STATE_CRITICAL, other errors return STATE_UNKNOWN. Successful" | ||
| 3554 | msgstr "" | ||
| 3555 | |||
| 3556 | msgid "connects, but incorrect response messages from the host result in" | ||
| 3557 | msgstr "" | ||
| 3558 | |||
| 3559 | msgid "STATE_WARNING return values." | ||
| 3560 | msgstr "" | ||
| 3561 | |||
| 3562 | msgid "Cannot malloc" | ||
| 3563 | msgstr "" | ||
| 3564 | |||
| 3565 | #, c-format | ||
| 3566 | msgid "External command error: %s\n" | ||
| 3567 | msgstr "" | ||
| 3568 | |||
| 3569 | #, c-format | ||
| 3570 | msgid "External command error with no output (return code: %d)\n" | ||
| 3571 | msgstr "" | ||
| 3572 | |||
| 3573 | #, c-format | ||
| 3574 | msgid "No valid data returned (%s)\n" | ||
| 3575 | msgstr "" | ||
| 3576 | |||
| 3577 | msgid "Time duration between plugin calls is invalid" | ||
| 3578 | msgstr "" | ||
| 3579 | |||
| 3580 | msgid "Cannot asprintf()" | ||
| 3581 | msgstr "" | ||
| 3582 | |||
| 3583 | msgid "Cannot realloc()" | ||
| 3584 | msgstr "" | ||
| 3585 | |||
| 3586 | msgid "No previous data to calculate rate - assume okay" | ||
| 3587 | msgstr "" | ||
| 3588 | |||
| 3589 | msgid "Retries interval must be a positive integer" | ||
| 3590 | msgstr "" | ||
| 3591 | |||
| 3592 | msgid "Exit status must be a positive integer" | ||
| 3593 | msgstr "" | ||
| 3594 | |||
| 3595 | #, c-format | ||
| 3596 | msgid "Could not reallocate labels[%d]" | ||
| 3597 | msgstr "" | ||
| 3598 | |||
| 3599 | msgid "Could not reallocate labels\n" | ||
| 3600 | msgstr "" | ||
| 3601 | |||
| 3602 | #, c-format | ||
| 3603 | msgid "Could not reallocate units [%d]\n" | ||
| 3604 | msgstr "" | ||
| 3605 | |||
| 3606 | msgid "Could not realloc() units\n" | ||
| 3607 | msgstr "" | ||
| 3608 | |||
| 3609 | msgid "Rate multiplier must be a positive integer" | ||
| 3610 | msgstr "" | ||
| 3611 | |||
| 3612 | msgid "No host specified\n" | ||
| 3613 | msgstr "" | ||
| 3614 | |||
| 3615 | msgid "No OIDs specified\n" | ||
| 3616 | msgstr "" | ||
| 3617 | |||
| 3618 | #, c-format | ||
| 3619 | msgid "Required parameter: %s\n" | ||
| 3620 | msgstr "" | ||
| 3621 | |||
| 3622 | msgid "Invalid seclevel" | ||
| 3623 | msgstr "" | ||
| 3624 | |||
| 3625 | msgid "Invalid SNMP version" | ||
| 3626 | msgstr "" | ||
| 3627 | |||
| 3628 | msgid "Unbalanced quotes\n" | ||
| 3629 | msgstr "" | ||
| 3630 | |||
| 3631 | #, c-format | ||
| 3632 | msgid "multiplier set (%.1f), but input is not a number: %s" | ||
| 3633 | msgstr "" | ||
| 3634 | |||
| 3635 | msgid "Check status of remote machines and obtain system information via SNMP" | ||
| 3636 | msgstr "" | ||
| 3637 | |||
| 3638 | msgid "Use SNMP GETNEXT instead of SNMP GET" | ||
| 3639 | msgstr "" | ||
| 3640 | |||
| 3641 | msgid "SNMP protocol version" | ||
| 3642 | msgstr "" | ||
| 3643 | |||
| 3644 | msgid "SNMPv3 context" | ||
| 3645 | msgstr "" | ||
| 3646 | |||
| 3647 | msgid "SNMPv3 securityLevel" | ||
| 3648 | msgstr "" | ||
| 3649 | |||
| 3650 | msgid "SNMPv3 auth proto" | ||
| 3651 | msgstr "" | ||
| 3652 | |||
| 3653 | msgid "SNMPv3 priv proto (default DES)" | ||
| 3654 | msgstr "" | ||
| 3655 | |||
| 3656 | msgid "Optional community string for SNMP communication" | ||
| 3657 | msgstr "" | ||
| 3658 | |||
| 3659 | msgid "default is" | ||
| 3660 | msgstr "" | ||
| 3661 | |||
| 3662 | msgid "SNMPv3 username" | ||
| 3663 | msgstr "" | ||
| 3664 | |||
| 3665 | msgid "SNMPv3 authentication password" | ||
| 3666 | msgstr "" | ||
| 3667 | |||
| 3668 | msgid "SNMPv3 privacy password" | ||
| 3669 | msgstr "" | ||
| 3670 | |||
| 3671 | msgid "Object identifier(s) or SNMP variables whose value you wish to query" | ||
| 3672 | msgstr "" | ||
| 3673 | |||
| 3674 | msgid "" | ||
| 3675 | "List of MIBS to be loaded (default = none if using numeric OIDs or 'ALL'" | ||
| 3676 | msgstr "" | ||
| 3677 | |||
| 3678 | msgid "for symbolic OIDs.)" | ||
| 3679 | msgstr "" | ||
| 3680 | |||
| 3681 | msgid "Delimiter to use when parsing returned data. Default is" | ||
| 3682 | msgstr "" | ||
| 3683 | |||
| 3684 | msgid "Any data on the right hand side of the delimiter is considered" | ||
| 3685 | msgstr "" | ||
| 3686 | |||
| 3687 | msgid "to be the data that should be used in the evaluation." | ||
| 3688 | msgstr "" | ||
| 3689 | |||
| 3690 | msgid "If the check returns a 0 length string or NULL value" | ||
| 3691 | msgstr "" | ||
| 3692 | |||
| 3693 | msgid "This option allows you to choose what status you want it to exit" | ||
| 3694 | msgstr "" | ||
| 3695 | |||
| 3696 | msgid "Excluding this option renders the default exit of 3(STATE_UNKNOWN)" | ||
| 3697 | msgstr "" | ||
| 3698 | |||
| 3699 | msgid "0 = OK" | ||
| 3700 | msgstr "" | ||
| 3701 | |||
| 3702 | msgid "1 = WARNING" | ||
| 3703 | msgstr "" | ||
| 3704 | |||
| 3705 | msgid "2 = CRITICAL" | ||
| 3706 | msgstr "" | ||
| 3707 | |||
| 3708 | msgid "3 = UNKNOWN" | ||
| 3709 | msgstr "" | ||
| 3710 | |||
| 3711 | msgid "Warning threshold range(s)" | ||
| 3712 | msgstr "" | ||
| 3713 | |||
| 3714 | msgid "Critical threshold range(s)" | ||
| 3715 | msgstr "" | ||
| 3716 | |||
| 3717 | msgid "Enable rate calculation. See 'Rate Calculation' below" | ||
| 3718 | msgstr "" | ||
| 3719 | |||
| 3720 | msgid "" | ||
| 3721 | "Converts rate per second. For example, set to 60 to convert to per minute" | ||
| 3722 | msgstr "" | ||
| 3723 | |||
| 3724 | msgid "Add/subtract the specified OFFSET to numeric sensor data" | ||
| 3725 | msgstr "" | ||
| 3726 | |||
| 3727 | msgid "Return OK state (for that OID) if STRING is an exact match" | ||
| 3728 | msgstr "" | ||
| 3729 | |||
| 3730 | msgid "" | ||
| 3731 | "Return OK state (for that OID) if extended regular expression REGEX matches" | ||
| 3732 | msgstr "" | ||
| 3733 | |||
| 3734 | msgid "" | ||
| 3735 | "Return OK state (for that OID) if case-insensitive extended REGEX matches" | ||
| 3736 | msgstr "" | ||
| 3737 | |||
| 3738 | msgid "Invert search result (CRITICAL if found)" | ||
| 3739 | msgstr "" | ||
| 3740 | |||
| 3741 | msgid "Prefix label for output from plugin" | ||
| 3742 | msgstr "" | ||
| 3743 | |||
| 3744 | msgid "Units label(s) for output data (e.g., 'sec.')." | ||
| 3745 | msgstr "" | ||
| 3746 | |||
| 3747 | msgid "Separates output on multiple OID requests" | ||
| 3748 | msgstr "" | ||
| 3749 | |||
| 3750 | msgid "Multiplies current value, 0 < n < 1 works as divider, defaults to 1" | ||
| 3751 | msgstr "" | ||
| 3752 | |||
| 3753 | msgid "C-style format string for float values (see option -M)" | ||
| 3754 | msgstr "" | ||
| 3755 | |||
| 3756 | msgid "" | ||
| 3757 | "NOTE the final timeout value is calculated using this formula: " | ||
| 3758 | "timeout_interval * retries + 5" | ||
| 3759 | msgstr "" | ||
| 3760 | |||
| 3761 | msgid "Number of retries to be used in the requests, default: " | ||
| 3762 | msgstr "" | ||
| 3763 | |||
| 3764 | msgid "Label performance data with OIDs instead of --label's" | ||
| 3765 | msgstr "" | ||
| 3766 | |||
| 3767 | msgid "Tell snmpget to not print errors encountered when parsing MIB files" | ||
| 3768 | msgstr "" | ||
| 3769 | |||
| 3770 | msgid "" | ||
| 3771 | "This plugin uses the 'snmpget' command included with the NET-SNMP package." | ||
| 3772 | msgstr "" | ||
| 3773 | |||
| 3774 | msgid "" | ||
| 3775 | "if you don't have the package installed, you will need to download it from" | ||
| 3776 | msgstr "" | ||
| 3777 | |||
| 3778 | msgid "http://net-snmp.sourceforge.net before you can use this plugin." | ||
| 3779 | msgstr "" | ||
| 3780 | |||
| 3781 | msgid "" | ||
| 3782 | "- Multiple OIDs (and labels) may be indicated by a comma or space-delimited " | ||
| 3783 | msgstr "" | ||
| 3784 | |||
| 3785 | msgid "list (lists with internal spaces must be quoted)." | ||
| 3786 | msgstr "" | ||
| 3787 | |||
| 3788 | msgid "" | ||
| 3789 | "- When checking multiple OIDs, separate ranges by commas like '-w " | ||
| 3790 | "1:10,1:,:20'" | ||
| 3791 | msgstr "" | ||
| 3792 | |||
| 3793 | msgid "- Note that only one string and one regex may be checked at present" | ||
| 3794 | msgstr "" | ||
| 3795 | |||
| 3796 | msgid "" | ||
| 3797 | "- All evaluation methods other than PR, STR, and SUBSTR expect that the value" | ||
| 3798 | msgstr "" | ||
| 3799 | |||
| 3800 | msgid "returned from the SNMP query is an unsigned integer." | ||
| 3801 | msgstr "" | ||
| 3802 | |||
| 3803 | msgid "Rate Calculation:" | ||
| 3804 | msgstr "" | ||
| 3805 | |||
| 3806 | msgid "In many places, SNMP returns counters that are only meaningful when" | ||
| 3807 | msgstr "" | ||
| 3808 | |||
| 3809 | msgid "calculating the counter difference since the last check. check_snmp" | ||
| 3810 | msgstr "" | ||
| 3811 | |||
| 3812 | msgid "saves the last state information in a file so that the rate per second" | ||
| 3813 | msgstr "" | ||
| 3814 | |||
| 3815 | msgid "can be calculated. Use the --rate option to save state information." | ||
| 3816 | msgstr "" | ||
| 3817 | |||
| 3818 | msgid "" | ||
| 3819 | "On the first run, there will be no prior state - this will return with OK." | ||
| 3820 | msgstr "" | ||
| 3821 | |||
| 3822 | msgid "The state is uniquely determined by the arguments to the plugin, so" | ||
| 3823 | msgstr "" | ||
| 3824 | |||
| 3825 | msgid "changing the arguments will create a new state file." | ||
| 3826 | msgstr "" | ||
| 3827 | |||
| 3828 | msgid "Port number must be a positive integer" | ||
| 3829 | msgstr "" | ||
| 3830 | |||
| 3831 | #, c-format | ||
| 3832 | msgid "Server answer: %s" | ||
| 3833 | msgstr "" | ||
| 3834 | |||
| 3835 | #, c-format | ||
| 3836 | msgid "SSH CRITICAL - %s (protocol %s) version mismatch, expected '%s'\n" | ||
| 3837 | msgstr "" | ||
| 3838 | |||
| 3839 | #, c-format | ||
| 3840 | msgid "" | ||
| 3841 | "SSH CRITICAL - %s (protocol %s) protocol version mismatch, expected '%s'\n" | ||
| 3842 | msgstr "" | ||
| 3843 | |||
| 3844 | #, c-format | ||
| 3845 | msgid "SSH OK - %s (protocol %s) | %s\n" | ||
| 3846 | msgstr "" | ||
| 3847 | |||
| 3848 | msgid "Try to connect to an SSH server at specified server and port" | ||
| 3849 | msgstr "" | ||
| 3850 | |||
| 3851 | msgid "" | ||
| 3852 | "Alert if string doesn't match expected server version (ex: OpenSSH_3.9p1)" | ||
| 3853 | msgstr "" | ||
| 3854 | |||
| 3855 | msgid "Alert if protocol doesn't match expected protocol version (ex: 2.0)" | ||
| 3856 | msgstr "" | ||
| 3857 | |||
| 3858 | #, c-format | ||
| 3859 | msgid "Command: %s\n" | ||
| 3860 | msgstr "" | ||
| 3861 | |||
| 3862 | #, c-format | ||
| 3863 | msgid "Format: %s\n" | ||
| 3864 | msgstr "" | ||
| 3865 | |||
| 3866 | #, c-format | ||
| 3867 | msgid "total=%.0f, used=%.0f, free=%.0f\n" | ||
| 3868 | msgstr "" | ||
| 3869 | |||
| 3870 | #, c-format | ||
| 3871 | msgid "total=%.0f, free=%.0f\n" | ||
| 3872 | msgstr "" | ||
| 3873 | |||
| 3874 | msgid "Error getting swap devices\n" | ||
| 3875 | msgstr "" | ||
| 3876 | |||
| 3877 | msgid "SWAP OK: No swap devices defined\n" | ||
| 3878 | msgstr "" | ||
| 3879 | |||
| 3880 | msgid "swapctl failed: " | ||
| 3881 | msgstr "" | ||
| 3882 | |||
| 3883 | msgid "Error in swapctl call\n" | ||
| 3884 | msgstr "" | ||
| 3885 | |||
| 3886 | #, c-format | ||
| 3887 | msgid "SWAP %s - %d%% free (%dMB out of %dMB) %s|" | ||
| 3888 | msgstr "" | ||
| 3889 | |||
| 3890 | msgid "Warning threshold percentage must be <= 100!" | ||
| 3891 | msgstr "" | ||
| 3892 | |||
| 3893 | msgid "Warning threshold be positive integer or percentage!" | ||
| 3894 | msgstr "" | ||
| 3895 | |||
| 3896 | msgid "Critical threshold percentage must be <= 100!" | ||
| 3897 | msgstr "" | ||
| 3898 | |||
| 3899 | msgid "Critical threshold be positive integer or percentage!" | ||
| 3900 | msgstr "" | ||
| 3901 | |||
| 3902 | msgid "" | ||
| 3903 | "no-swap result must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) " | ||
| 3904 | "or integer (0-3)." | ||
| 3905 | msgstr "" | ||
| 3906 | |||
| 3907 | msgid "Warning should be more than critical" | ||
| 3908 | msgstr "" | ||
| 3909 | |||
| 3910 | msgid "Check swap space on local machine." | ||
| 3911 | msgstr "" | ||
| 3912 | |||
| 3913 | msgid "" | ||
| 3914 | "Exit with WARNING status if less than INTEGER bytes of swap space are free" | ||
| 3915 | msgstr "" | ||
| 3916 | |||
| 3917 | msgid "Exit with WARNING status if less than PERCENT of swap space is free" | ||
| 3918 | msgstr "" | ||
| 3919 | |||
| 3920 | msgid "" | ||
| 3921 | "Exit with CRITICAL status if less than INTEGER bytes of swap space are free" | ||
| 3922 | msgstr "" | ||
| 3923 | |||
| 3924 | msgid "Exit with CRITICAL status if less than PERCENT of swap space is free" | ||
| 3925 | msgstr "" | ||
| 3926 | |||
| 3927 | msgid "Conduct comparisons for all swap partitions, one by one" | ||
| 3928 | msgstr "" | ||
| 3929 | |||
| 3930 | msgid "" | ||
| 3931 | "Resulting state when there is no swap regardless of thresholds. Default:" | ||
| 3932 | msgstr "" | ||
| 3933 | |||
| 3934 | msgid "" | ||
| 3935 | "Both INTEGER and PERCENT thresholds can be specified, they are all checked." | ||
| 3936 | msgstr "" | ||
| 3937 | |||
| 3938 | msgid "On AIX, if -a is specified, uses lsps -a, otherwise uses lsps -s." | ||
| 3939 | msgstr "" | ||
| 3940 | |||
| 3941 | msgid "CRITICAL - Generic check_tcp called with unknown service\n" | ||
| 3942 | msgstr "" | ||
| 3943 | |||
| 3944 | msgid "With UDP checks, a send/expect string must be specified." | ||
| 3945 | msgstr "" | ||
| 3946 | |||
| 3947 | msgid "No arguments found" | ||
| 3948 | msgstr "" | ||
| 3949 | |||
| 3950 | msgid "Maxbytes must be a positive integer" | ||
| 3951 | msgstr "" | ||
| 3952 | |||
| 3953 | msgid "Refuse must be one of ok, warn, crit" | ||
| 3954 | msgstr "" | ||
| 3955 | |||
| 3956 | msgid "Mismatch must be one of ok, warn, crit" | ||
| 3957 | msgstr "" | ||
| 3958 | |||
| 3959 | msgid "Delay must be a positive integer" | ||
| 3960 | msgstr "" | ||
| 3961 | |||
| 3962 | msgid "You must provide a server address" | ||
| 3963 | msgstr "" | ||
| 3964 | |||
| 3965 | msgid "Invalid hostname, address or socket" | ||
| 3966 | msgstr "" | ||
| 3967 | |||
| 3968 | #, c-format | ||
| 3969 | msgid "" | ||
| 3970 | "This plugin tests %s connections with the specified host (or unix socket).\n" | ||
| 3971 | "\n" | ||
| 3972 | msgstr "" | ||
| 3973 | |||
| 3974 | msgid "" | ||
| 3975 | "Can use \\n, \\r, \\t or \\\\ in send or quit string. Must come before send " | ||
| 3976 | "or quit option" | ||
| 3977 | msgstr "" | ||
| 3978 | |||
| 3979 | msgid "Default: nothing added to send, \\r\\n added to end of quit" | ||
| 3980 | msgstr "" | ||
| 3981 | |||
| 3982 | msgid "String to send to the server" | ||
| 3983 | msgstr "" | ||
| 3984 | |||
| 3985 | msgid "String to expect in server response" | ||
| 3986 | msgstr "" | ||
| 3987 | |||
| 3988 | msgid "(may be repeated)" | ||
| 3989 | msgstr "" | ||
| 3990 | |||
| 3991 | msgid "All expect strings need to occur in server response. Default is any" | ||
| 3992 | msgstr "" | ||
| 3993 | |||
| 3994 | msgid "String to send server to initiate a clean close of the connection" | ||
| 3995 | msgstr "" | ||
| 3996 | |||
| 3997 | msgid "Accept TCP refusals with states ok, warn, crit (default: crit)" | ||
| 3998 | msgstr "" | ||
| 3999 | |||
| 4000 | msgid "" | ||
| 4001 | "Accept expected string mismatches with states ok, warn, crit (default: warn)" | ||
| 4002 | msgstr "" | ||
| 4003 | |||
| 4004 | msgid "Hide output from TCP socket" | ||
| 4005 | msgstr "" | ||
| 4006 | |||
| 4007 | msgid "Close connection once more than this number of bytes are received" | ||
| 4008 | msgstr "" | ||
| 4009 | |||
| 4010 | msgid "Seconds to wait between sending string and polling for response" | ||
| 4011 | msgstr "" | ||
| 4012 | |||
| 4013 | msgid "1st is #days for warning, 2nd is critical (if not specified - 0)." | ||
| 4014 | msgstr "" | ||
| 4015 | |||
| 4016 | msgid "Use SSL for the connection." | ||
| 4017 | msgstr "" | ||
| 4018 | |||
| 4019 | msgid "SSL server_name" | ||
| 4020 | msgstr "" | ||
| 4021 | |||
| 4022 | #, c-format | ||
| 4023 | msgid "TIME UNKNOWN - could not connect to server %s, port %d\n" | ||
| 4024 | msgstr "" | ||
| 4025 | |||
| 4026 | #, c-format | ||
| 4027 | msgid "TIME UNKNOWN - could not send UDP request to server %s, port %d\n" | ||
| 4028 | msgstr "" | ||
| 4029 | |||
| 4030 | #, c-format | ||
| 4031 | msgid "TIME UNKNOWN - no data received from server %s, port %d\n" | ||
| 4032 | msgstr "" | ||
| 4033 | |||
| 4034 | #, c-format | ||
| 4035 | msgid "TIME %s - %d second response time|%s\n" | ||
| 4036 | msgstr "" | ||
| 4037 | |||
| 4038 | #, c-format | ||
| 4039 | msgid "TIME %s - %lu second time difference|%s %s\n" | ||
| 4040 | msgstr "" | ||
| 4041 | |||
| 4042 | msgid "Warning thresholds must be a positive integer" | ||
| 4043 | msgstr "" | ||
| 4044 | |||
| 4045 | msgid "Critical thresholds must be a positive integer" | ||
| 4046 | msgstr "" | ||
| 4047 | |||
| 4048 | msgid "This plugin will check the time on the specified host." | ||
| 4049 | msgstr "" | ||
| 4050 | |||
| 4051 | msgid "Use UDP to connect, not TCP" | ||
| 4052 | msgstr "" | ||
| 4053 | |||
| 4054 | msgid "Time difference (sec.) necessary to result in a warning status" | ||
| 4055 | msgstr "" | ||
| 4056 | |||
| 4057 | msgid "Time difference (sec.) necessary to result in a critical status" | ||
| 4058 | msgstr "" | ||
| 4059 | |||
| 4060 | msgid "Response time (sec.) necessary to result in warning status" | ||
| 4061 | msgstr "" | ||
| 4062 | |||
| 4063 | msgid "Response time (sec.) necessary to result in critical status" | ||
| 4064 | msgstr "" | ||
| 4065 | |||
| 4066 | msgid "On Battery, Low Battery" | ||
| 4067 | msgstr "" | ||
| 4068 | |||
| 4069 | msgid "Online" | ||
| 4070 | msgstr "" | ||
| 4071 | |||
| 4072 | msgid "On Battery" | ||
| 4073 | msgstr "" | ||
| 4074 | |||
| 4075 | msgid ", Low Battery" | ||
| 4076 | msgstr "" | ||
| 4077 | |||
| 4078 | msgid ", Calibrating" | ||
| 4079 | msgstr "" | ||
| 4080 | |||
| 4081 | msgid ", Replace Battery" | ||
| 4082 | msgstr "" | ||
| 4083 | |||
| 4084 | msgid ", On Bypass" | ||
| 4085 | msgstr "" | ||
| 4086 | |||
| 4087 | msgid ", Overload" | ||
| 4088 | msgstr "" | ||
| 4089 | |||
| 4090 | msgid ", Trimming" | ||
| 4091 | msgstr "" | ||
| 4092 | |||
| 4093 | msgid ", Boosting" | ||
| 4094 | msgstr "" | ||
| 4095 | |||
| 4096 | msgid ", Charging" | ||
| 4097 | msgstr "" | ||
| 4098 | |||
| 4099 | msgid ", Discharging" | ||
| 4100 | msgstr "" | ||
| 4101 | |||
| 4102 | msgid ", Unknown" | ||
| 4103 | msgstr "" | ||
| 4104 | |||
| 4105 | msgid "UPS does not support any available options\n" | ||
| 4106 | msgstr "" | ||
| 4107 | |||
| 4108 | msgid "Invalid response received from host" | ||
| 4109 | msgstr "" | ||
| 4110 | |||
| 4111 | msgid "UPS name to long for buffer" | ||
| 4112 | msgstr "" | ||
| 4113 | |||
| 4114 | #, c-format | ||
| 4115 | msgid "CRITICAL - no such UPS '%s' on that host\n" | ||
| 4116 | msgstr "" | ||
| 4117 | |||
| 4118 | msgid "CRITICAL - UPS data is stale" | ||
| 4119 | msgstr "" | ||
| 4120 | |||
| 4121 | #, c-format | ||
| 4122 | msgid "Unknown error: %s\n" | ||
| 4123 | msgstr "" | ||
| 4124 | |||
| 4125 | msgid "Error: unable to parse variable" | ||
| 4126 | msgstr "" | ||
| 4127 | |||
| 4128 | msgid "Unrecognized UPS variable" | ||
| 4129 | msgstr "" | ||
| 4130 | |||
| 4131 | msgid "Error : no UPS indicated" | ||
| 4132 | msgstr "" | ||
| 4133 | |||
| 4134 | msgid "" | ||
| 4135 | "This plugin tests the UPS service on the specified host. Network UPS Tools" | ||
| 4136 | msgstr "" | ||
| 4137 | |||
| 4138 | msgid "from www.networkupstools.org must be running for this plugin to work." | ||
| 4139 | msgstr "" | ||
| 4140 | |||
| 4141 | msgid "Name of UPS" | ||
| 4142 | msgstr "" | ||
| 4143 | |||
| 4144 | msgid "Output of temperatures in Celsius" | ||
| 4145 | msgstr "" | ||
| 4146 | |||
| 4147 | msgid "Valid values for STRING are" | ||
| 4148 | msgstr "" | ||
| 4149 | |||
| 4150 | msgid "" | ||
| 4151 | "This plugin attempts to determine the status of a UPS (Uninterruptible Power" | ||
| 4152 | msgstr "" | ||
| 4153 | |||
| 4154 | msgid "" | ||
| 4155 | "Supply) on a local or remote host. If the UPS is online or calibrating, the" | ||
| 4156 | msgstr "" | ||
| 4157 | |||
| 4158 | msgid "" | ||
| 4159 | "plugin will return an OK state. If the battery is on it will return a WARNING" | ||
| 4160 | msgstr "" | ||
| 4161 | |||
| 4162 | msgid "" | ||
| 4163 | "state. If the UPS is off or has a low battery the plugin will return a " | ||
| 4164 | "CRITICAL" | ||
| 4165 | msgstr "" | ||
| 4166 | |||
| 4167 | msgid "" | ||
| 4168 | "You may also specify a variable to check (such as temperature, utility " | ||
| 4169 | "voltage," | ||
| 4170 | msgstr "" | ||
| 4171 | |||
| 4172 | msgid "" | ||
| 4173 | "battery load, etc.) as well as warning and critical thresholds for the value" | ||
| 4174 | msgstr "" | ||
| 4175 | |||
| 4176 | msgid "" | ||
| 4177 | "of that variable. If the remote host has multiple UPS that are being " | ||
| 4178 | "monitored" | ||
| 4179 | msgstr "" | ||
| 4180 | |||
| 4181 | msgid "you will have to use the --ups option to specify which UPS to check." | ||
| 4182 | msgstr "" | ||
| 4183 | |||
| 4184 | msgid "" | ||
| 4185 | "This plugin requires that the UPSD daemon distributed with Russell Kroll's" | ||
| 4186 | msgstr "" | ||
| 4187 | |||
| 4188 | msgid "" | ||
| 4189 | "Network UPS Tools be installed on the remote host. If you do not have the" | ||
| 4190 | msgstr "" | ||
| 4191 | |||
| 4192 | msgid "package installed on your system, you can download it from" | ||
| 4193 | msgstr "" | ||
| 4194 | |||
| 4195 | msgid "http://www.networkupstools.org" | ||
| 4196 | msgstr "" | ||
| 4197 | |||
| 4198 | #, c-format | ||
| 4199 | msgid "Could not enumerate RD sessions: %d\n" | ||
| 4200 | msgstr "" | ||
| 4201 | |||
| 4202 | #, c-format | ||
| 4203 | msgid "# users=%d" | ||
| 4204 | msgstr "" | ||
| 4205 | |||
| 4206 | msgid "Unable to read output" | ||
| 4207 | msgstr "" | ||
| 4208 | |||
| 4209 | #, c-format | ||
| 4210 | msgid "USERS %s - %d users currently logged in |%s\n" | ||
| 4211 | msgstr "" | ||
| 4212 | |||
| 4213 | msgid "This plugin checks the number of users currently logged in on the local" | ||
| 4214 | msgstr "" | ||
| 4215 | |||
| 4216 | msgid "" | ||
| 4217 | "system and generates an error if the number exceeds the thresholds specified." | ||
| 4218 | msgstr "" | ||
| 4219 | |||
| 4220 | msgid "Set WARNING status if more than INTEGER users are logged in" | ||
| 4221 | msgstr "" | ||
| 4222 | |||
| 4223 | msgid "Set CRITICAL status if more than INTEGER users are logged in" | ||
| 4224 | msgstr "" | ||
| 4225 | |||
| 4226 | msgid "" | ||
| 4227 | "DEPRECATION WARNING: the -q switch (quiet output) is no longer \"quiet\"." | ||
| 4228 | msgstr "" | ||
| 4229 | |||
| 4230 | msgid "Nagios-compatible output is now always returned." | ||
| 4231 | msgstr "" | ||
| 4232 | |||
| 4233 | msgid "SMART commands are broken and have been disabled (See Notes in --help)." | ||
| 4234 | msgstr "" | ||
| 4235 | |||
| 4236 | msgid "" | ||
| 4237 | "DEPRECATION WARNING: the -n switch (Nagios-compatible output) is now the" | ||
| 4238 | msgstr "" | ||
| 4239 | |||
| 4240 | msgid "default and will be removed from future releases." | ||
| 4241 | msgstr "" | ||
| 4242 | |||
| 4243 | #, c-format | ||
| 4244 | msgid "CRITICAL - Couldn't open device %s: %s\n" | ||
| 4245 | msgstr "" | ||
| 4246 | |||
| 4247 | #, c-format | ||
| 4248 | msgid "CRITICAL - SMART_CMD_ENABLE\n" | ||
| 4249 | msgstr "" | ||
| 4250 | |||
| 4251 | #, c-format | ||
| 4252 | msgid "CRITICAL - SMART_READ_VALUES: %s\n" | ||
| 4253 | msgstr "" | ||
| 4254 | |||
| 4255 | #, c-format | ||
| 4256 | msgid "CRITICAL - %d Harddrive PreFailure%cDetected! %d/%d tests failed.\n" | ||
| 4257 | msgstr "" | ||
| 4258 | |||
| 4259 | #, c-format | ||
| 4260 | msgid "WARNING - %d Harddrive Advisor%s Detected. %d/%d tests failed.\n" | ||
| 4261 | msgstr "" | ||
| 4262 | |||
| 4263 | #, c-format | ||
| 4264 | msgid "OK - Operational (%d/%d tests passed)\n" | ||
| 4265 | msgstr "" | ||
| 4266 | |||
| 4267 | #, c-format | ||
| 4268 | msgid "ERROR - Status '%d' unknown. %d/%d tests passed\n" | ||
| 4269 | msgstr "" | ||
| 4270 | |||
| 4271 | #, c-format | ||
| 4272 | msgid "OffLineStatus=%d {%s}, AutoOffLine=%s, OffLineTimeout=%d minutes\n" | ||
| 4273 | msgstr "" | ||
| 4274 | |||
| 4275 | #, c-format | ||
| 4276 | msgid "OffLineCapability=%d {%s %s %s}\n" | ||
| 4277 | msgstr "" | ||
| 4278 | |||
| 4279 | #, c-format | ||
| 4280 | msgid "SmartRevision=%d, CheckSum=%d, SmartCapability=%d {%s %s}\n" | ||
| 4281 | msgstr "" | ||
| 4282 | |||
| 4283 | #, c-format | ||
| 4284 | msgid "CRITICAL - %s: %s\n" | ||
| 4285 | msgstr "" | ||
| 4286 | |||
| 4287 | #, c-format | ||
| 4288 | msgid "OK - Command sent (%s)\n" | ||
| 4289 | msgstr "" | ||
| 4290 | |||
| 4291 | #, c-format | ||
| 4292 | msgid "CRITICAL - SMART_READ_THRESHOLDS: %s\n" | ||
| 4293 | msgstr "" | ||
| 4294 | |||
| 4295 | #, c-format | ||
| 4296 | msgid "" | ||
| 4297 | "This plugin checks a local hard drive with the (Linux specific) SMART " | ||
| 4298 | "interface [http://smartlinux.sourceforge.net/smart/index.php]." | ||
| 4299 | msgstr "" | ||
| 4300 | |||
| 4301 | msgid "Select device DEVICE" | ||
| 4302 | msgstr "" | ||
| 4303 | |||
| 4304 | msgid "" | ||
| 4305 | "Note: if the device is specified without this option, any further option will" | ||
| 4306 | msgstr "" | ||
| 4307 | |||
| 4308 | msgid "be ignored." | ||
| 4309 | msgstr "" | ||
| 4310 | |||
| 4311 | msgid "" | ||
| 4312 | "The SMART command modes (-i/--immediate, -0/--auto-off and -1/--auto-on) were" | ||
| 4313 | msgstr "" | ||
| 4314 | |||
| 4315 | msgid "" | ||
| 4316 | "broken in an underhand manner and have been disabled. You can use smartctl" | ||
| 4317 | msgstr "" | ||
| 4318 | |||
| 4319 | msgid "instead:" | ||
| 4320 | msgstr "" | ||
| 4321 | |||
| 4322 | msgid "-0/--auto-off: use \"smartctl --offlineauto=off\"" | ||
| 4323 | msgstr "" | ||
| 4324 | |||
| 4325 | msgid "-1/--auto-on: use \"smartctl --offlineauto=on\"" | ||
| 4326 | msgstr "" | ||
| 4327 | |||
| 4328 | msgid "-i/--immediate: use \"smartctl --test=offline\"" | ||
| 4329 | msgstr "" | ||
| 4330 | |||
| 4331 | msgid "No data returned from command\n" | ||
| 4332 | msgstr "" | ||
| 4333 | |||
| 4334 | msgid "" | ||
| 4335 | "Timeout result must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) " | ||
| 4336 | "or integer (0-3)." | ||
| 4337 | msgstr "" | ||
| 4338 | |||
| 4339 | msgid "" | ||
| 4340 | "Ok must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer " | ||
| 4341 | "(0-3)." | ||
| 4342 | msgstr "" | ||
| 4343 | |||
| 4344 | msgid "" | ||
| 4345 | "Warning must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or " | ||
| 4346 | "integer (0-3)." | ||
| 4347 | msgstr "" | ||
| 4348 | |||
| 4349 | msgid "" | ||
| 4350 | "Critical must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or " | ||
| 4351 | "integer (0-3)." | ||
| 4352 | msgstr "" | ||
| 4353 | |||
| 4354 | msgid "" | ||
| 4355 | "Unknown must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or " | ||
| 4356 | "integer (0-3)." | ||
| 4357 | msgstr "" | ||
| 4358 | |||
| 4359 | msgid "Require path to command" | ||
| 4360 | msgstr "" | ||
| 4361 | |||
| 4362 | msgid "" | ||
| 4363 | "Negates the status of a plugin (returns OK for CRITICAL and vice-versa)." | ||
| 4364 | msgstr "" | ||
| 4365 | |||
| 4366 | msgid "Additional switches can be used to control which state becomes what." | ||
| 4367 | msgstr "" | ||
| 4368 | |||
| 4369 | msgid "Keep timeout longer than the plugin timeout to retain CRITICAL status." | ||
| 4370 | msgstr "" | ||
| 4371 | |||
| 4372 | msgid "Custom result on Negate timeouts; see below for STATUS definition\n" | ||
| 4373 | msgstr "" | ||
| 4374 | |||
| 4375 | #, c-format | ||
| 4376 | msgid "" | ||
| 4377 | " STATUS can be 'OK', 'WARNING', 'CRITICAL' or 'UNKNOWN' without single\n" | ||
| 4378 | msgstr "" | ||
| 4379 | |||
| 4380 | #, c-format | ||
| 4381 | msgid "" | ||
| 4382 | " quotes. Numeric values are accepted. If nothing is specified, permutes\n" | ||
| 4383 | msgstr "" | ||
| 4384 | |||
| 4385 | #, c-format | ||
| 4386 | msgid " OK and CRITICAL.\n" | ||
| 4387 | msgstr "" | ||
| 4388 | |||
| 4389 | #, c-format | ||
| 4390 | msgid "" | ||
| 4391 | " Substitute output text as well. Will only substitute text in CAPITALS\n" | ||
| 4392 | msgstr "" | ||
| 4393 | |||
| 4394 | msgid "Run check_ping and invert result. Must use full path to plugin" | ||
| 4395 | msgstr "" | ||
| 4396 | |||
| 4397 | msgid "This will return OK instead of WARNING and UNKNOWN instead of CRITICAL" | ||
| 4398 | msgstr "" | ||
| 4399 | |||
| 4400 | msgid "" | ||
| 4401 | "This plugin is a wrapper to take the output of another plugin and invert it." | ||
| 4402 | msgstr "" | ||
| 4403 | |||
| 4404 | msgid "The full path of the plugin must be provided." | ||
| 4405 | msgstr "" | ||
| 4406 | |||
| 4407 | msgid "If the wrapped plugin returns OK, the wrapper will return CRITICAL." | ||
| 4408 | msgstr "" | ||
| 4409 | |||
| 4410 | msgid "If the wrapped plugin returns CRITICAL, the wrapper will return OK." | ||
| 4411 | msgstr "" | ||
| 4412 | |||
| 4413 | msgid "Otherwise, the output state of the wrapped plugin is unchanged." | ||
| 4414 | msgstr "" | ||
| 4415 | |||
| 4416 | msgid "" | ||
| 4417 | "Using timeout-result, it is possible to override the timeout behaviour or a" | ||
| 4418 | msgstr "" | ||
| 4419 | |||
| 4420 | msgid "plugin by setting the negate timeout a bit lower." | ||
| 4421 | msgstr "" | ||
| 4422 | |||
| 4423 | #, c-format | ||
| 4424 | msgid "%s - Socket timeout after %d seconds\n" | ||
| 4425 | msgstr "" | ||
| 4426 | |||
| 4427 | #, c-format | ||
| 4428 | msgid "%s - Abnormal timeout after %d seconds\n" | ||
| 4429 | msgstr "" | ||
| 4430 | |||
| 4431 | msgid "Send failed" | ||
| 4432 | msgstr "" | ||
| 4433 | |||
| 4434 | msgid "No data was received from host!" | ||
| 4435 | msgstr "" | ||
| 4436 | |||
| 4437 | msgid "Socket creation failed" | ||
| 4438 | msgstr "" | ||
| 4439 | |||
| 4440 | msgid "Supplied path too long unix domain socket" | ||
| 4441 | msgstr "" | ||
| 4442 | |||
| 4443 | msgid "Receive failed" | ||
| 4444 | msgstr "" | ||
| 4445 | |||
| 4446 | #, c-format | ||
| 4447 | msgid "Invalid hostname/address - %s" | ||
| 4448 | msgstr "" | ||
| 4449 | |||
| 4450 | msgid "Could not malloc argv array in popen()" | ||
| 4451 | msgstr "" | ||
| 4452 | |||
| 4453 | msgid "CRITICAL - You need more args!!!" | ||
| 4454 | msgstr "" | ||
| 4455 | |||
| 4456 | msgid "Cannot catch SIGCHLD" | ||
| 4457 | msgstr "" | ||
| 4458 | |||
| 4459 | #, c-format | ||
| 4460 | msgid "CRITICAL - Plugin timed out after %d seconds\n" | ||
| 4461 | msgstr "" | ||
| 4462 | |||
| 4463 | msgid "CRITICAL - popen timeout received, but no child process" | ||
| 4464 | msgstr "" | ||
| 4465 | |||
| 4466 | #, c-format | ||
| 4467 | msgid "" | ||
| 4468 | "%s UNKNOWN - No data received from host\n" | ||
| 4469 | "CMD: %s</A>\n" | ||
| 4470 | msgstr "" | ||
| 4471 | |||
| 4472 | msgid "" | ||
| 4473 | "This plugin wraps the text output of another command (plugin) in HTML <A>" | ||
| 4474 | msgstr "" | ||
| 4475 | |||
| 4476 | msgid "" | ||
| 4477 | "tags, thus displaying the child plugin's output as a clickable link in " | ||
| 4478 | "compatible" | ||
| 4479 | msgstr "" | ||
| 4480 | |||
| 4481 | msgid "" | ||
| 4482 | "monitoring status screen. This plugin returns the status of the invoked " | ||
| 4483 | "plugin." | ||
| 4484 | msgstr "" | ||
| 4485 | |||
| 4486 | msgid "" | ||
| 4487 | "Pay close attention to quoting to ensure that the shell passes the expected" | ||
| 4488 | msgstr "" | ||
| 4489 | |||
| 4490 | msgid "data to the plugin. For example, in:" | ||
| 4491 | msgstr "" | ||
| 4492 | |||
| 4493 | msgid "urlize http://example.com/ check_http -H example.com -r 'two words'" | ||
| 4494 | msgstr "" | ||
| 4495 | |||
| 4496 | msgid "the shell will remove the single quotes and urlize will see:" | ||
| 4497 | msgstr "" | ||
| 4498 | |||
| 4499 | msgid "urlize http://example.com/ check_http -H example.com -r two words" | ||
| 4500 | msgstr "" | ||
| 4501 | |||
| 4502 | msgid "You probably want:" | ||
| 4503 | msgstr "" | ||
| 4504 | |||
| 4505 | msgid "urlize http://example.com/ \"check_http -H example.com -r 'two words'\"" | ||
| 4506 | msgstr "" | ||
| 4507 | |||
| 4508 | msgid "failed realloc in strpcpy\n" | ||
| 4509 | msgstr "" | ||
| 4510 | |||
| 4511 | msgid "failed malloc in strscat\n" | ||
| 4512 | msgstr "" | ||
| 4513 | |||
| 4514 | msgid "failed malloc in xvasprintf\n" | ||
| 4515 | msgstr "" | ||
| 4516 | |||
| 4517 | msgid "sysconf error for _SC_OPEN_MAX\n" | ||
| 4518 | msgstr "" | ||
| 4519 | |||
| 4520 | #, c-format | ||
| 4521 | msgid "" | ||
| 4522 | " %s (-h | --help) for detailed help\n" | ||
| 4523 | " %s (-V | --version) for version information\n" | ||
| 4524 | msgstr "" | ||
| 4525 | |||
| 4526 | msgid "" | ||
| 4527 | "\n" | ||
| 4528 | "Options:\n" | ||
| 4529 | " -h, --help\n" | ||
| 4530 | " Print detailed help screen\n" | ||
| 4531 | " -V, --version\n" | ||
| 4532 | " Print version information\n" | ||
| 4533 | msgstr "" | ||
| 4534 | |||
| 4535 | #, c-format | ||
| 4536 | msgid "" | ||
| 4537 | " -H, --hostname=ADDRESS\n" | ||
| 4538 | " Host name, IP Address, or unix socket (must be an absolute path)\n" | ||
| 4539 | " -%c, --port=INTEGER\n" | ||
| 4540 | " Port number (default: %s)\n" | ||
| 4541 | msgstr "" | ||
| 4542 | |||
| 4543 | msgid "" | ||
| 4544 | " -4, --use-ipv4\n" | ||
| 4545 | " Use IPv4 connection\n" | ||
| 4546 | " -6, --use-ipv6\n" | ||
| 4547 | " Use IPv6 connection\n" | ||
| 4548 | msgstr "" | ||
| 4549 | |||
| 4550 | msgid "" | ||
| 4551 | " -v, --verbose\n" | ||
| 4552 | " Show details for command-line debugging (output may be truncated by\n" | ||
| 4553 | " the monitoring system)\n" | ||
| 4554 | msgstr "" | ||
| 4555 | |||
| 4556 | msgid "" | ||
| 4557 | " -w, --warning=DOUBLE\n" | ||
| 4558 | " Response time to result in warning status (seconds)\n" | ||
| 4559 | " -c, --critical=DOUBLE\n" | ||
| 4560 | " Response time to result in critical status (seconds)\n" | ||
| 4561 | msgstr "" | ||
| 4562 | |||
| 4563 | msgid "" | ||
| 4564 | " -w, --warning=RANGE\n" | ||
| 4565 | " Warning range (format: start:end). Alert if outside this range\n" | ||
| 4566 | " -c, --critical=RANGE\n" | ||
| 4567 | " Critical range\n" | ||
| 4568 | msgstr "" | ||
| 4569 | |||
| 4570 | #, c-format | ||
| 4571 | msgid "" | ||
| 4572 | " -t, --timeout=INTEGER\n" | ||
| 4573 | " Seconds before connection times out (default: %d)\n" | ||
| 4574 | msgstr "" | ||
| 4575 | |||
| 4576 | #, c-format | ||
| 4577 | msgid "" | ||
| 4578 | " -t, --timeout=INTEGER\n" | ||
| 4579 | " Seconds before plugin times out (default: %d)\n" | ||
| 4580 | msgstr "" | ||
| 4581 | |||
| 4582 | msgid "" | ||
| 4583 | " --extra-opts=[section][@file]\n" | ||
| 4584 | " Read options from an ini file. See\n" | ||
| 4585 | " https://www.monitoring-plugins.org/doc/extra-opts.html\n" | ||
| 4586 | " for usage and examples.\n" | ||
| 4587 | msgstr "" | ||
| 4588 | |||
| 4589 | msgid "" | ||
| 4590 | " See:\n" | ||
| 4591 | " https://www.monitoring-plugins.org/doc/guidelines.html#THRESHOLDFORMAT\n" | ||
| 4592 | " for THRESHOLD format and examples.\n" | ||
| 4593 | msgstr "" | ||
| 4594 | |||
| 4595 | msgid "" | ||
| 4596 | "\n" | ||
| 4597 | "Send email to help@monitoring-plugins.org if you have questions regarding\n" | ||
| 4598 | "use of this software. To submit patches or suggest improvements, send email\n" | ||
| 4599 | "to devel@monitoring-plugins.org\n" | ||
| 4600 | "\n" | ||
| 4601 | msgstr "" | ||
| 4602 | |||
| 4603 | msgid "" | ||
| 4604 | "\n" | ||
| 4605 | "The Monitoring Plugins come with ABSOLUTELY NO WARRANTY. You may " | ||
| 4606 | "redistribute\n" | ||
| 4607 | "copies of the plugins under the terms of the GNU General Public License.\n" | ||
| 4608 | "For more information about these matters, see the file named COPYING.\n" | ||
| 4609 | msgstr "" | ||
| 4610 | |||
| 4611 | #, c-format | ||
| 4612 | msgid "Error: Could not get hardware address of interface '%s'\n" | ||
| 4613 | msgstr "" | ||
| 4614 | |||
| 4615 | #, c-format | ||
| 4616 | msgid "Error: if_nametoindex error - %s.\n" | ||
| 4617 | msgstr "" | ||
| 4618 | |||
| 4619 | #, c-format | ||
| 4620 | msgid "Error: Couldn't get hardware address from %s. sysctl 1 error - %s.\n" | ||
| 4621 | msgstr "" | ||
| 4622 | |||
| 4623 | #, c-format | ||
| 4624 | msgid "" | ||
| 4625 | "Error: Couldn't get hardware address from interface %s. malloc error - %s.\n" | ||
| 4626 | msgstr "" | ||
| 4627 | |||
| 4628 | #, c-format | ||
| 4629 | msgid "Error: Couldn't get hardware address from %s. sysctl 2 error - %s.\n" | ||
| 4630 | msgstr "" | ||
| 4631 | |||
| 4632 | #, c-format | ||
| 4633 | msgid "" | ||
| 4634 | "Error: can't find unit number in interface_name (%s) - expecting TypeNumber " | ||
| 4635 | "eg lnc0.\n" | ||
| 4636 | msgstr "" | ||
| 4637 | |||
| 4638 | #, c-format | ||
| 4639 | msgid "" | ||
| 4640 | "Error: can't read MAC address from DLPI streams interface for device %s unit " | ||
| 4641 | "%d.\n" | ||
| 4642 | msgstr "" | ||
| 4643 | |||
| 4644 | #, c-format | ||
| 4645 | msgid "" | ||
| 4646 | "Error: can't get MAC address for this architecture. Use the --mac option.\n" | ||
| 4647 | msgstr "" | ||
| 4648 | |||
| 4649 | #, c-format | ||
| 4650 | msgid "Error: Cannot determine IP address of interface %s\n" | ||
| 4651 | msgstr "" | ||
| 4652 | |||
| 4653 | #, c-format | ||
| 4654 | msgid "Error: Cannot get interface IP address on this platform.\n" | ||
| 4655 | msgstr "" | ||
| 4656 | |||
| 4657 | #, c-format | ||
| 4658 | msgid "Pretending to be relay client %s\n" | ||
| 4659 | msgstr "" | ||
| 4660 | |||
| 4661 | #, c-format | ||
| 4662 | msgid "DHCPDISCOVER to %s port %d\n" | ||
| 4663 | msgstr "" | ||
| 4664 | |||
| 4665 | #, c-format | ||
| 4666 | msgid "Result=ERROR\n" | ||
| 4667 | msgstr "" | ||
| 4668 | |||
| 4669 | #, c-format | ||
| 4670 | msgid "Result=OK\n" | ||
| 4671 | msgstr "" | ||
| 4672 | |||
| 4673 | #, c-format | ||
| 4674 | msgid "DHCPOFFER from IP address %s" | ||
| 4675 | msgstr "" | ||
| 4676 | |||
| 4677 | #, c-format | ||
| 4678 | msgid " via %s\n" | ||
| 4679 | msgstr "" | ||
| 4680 | |||
| 4681 | #, c-format | ||
| 4682 | msgid "" | ||
| 4683 | "DHCPOFFER XID (%u) did not match DHCPDISCOVER XID (%u) - ignoring packet\n" | ||
| 4684 | msgstr "" | ||
| 4685 | |||
| 4686 | #, c-format | ||
| 4687 | msgid "DHCPOFFER hardware address did not match our own - ignoring packet\n" | ||
| 4688 | msgstr "" | ||
| 4689 | |||
| 4690 | #, c-format | ||
| 4691 | msgid "Total responses seen on the wire: %d\n" | ||
| 4692 | msgstr "" | ||
| 4693 | |||
| 4694 | #, c-format | ||
| 4695 | msgid "Valid responses for this machine: %d\n" | ||
| 4696 | msgstr "" | ||
| 4697 | |||
| 4698 | #, c-format | ||
| 4699 | msgid "send_dhcp_packet result: %d\n" | ||
| 4700 | msgstr "" | ||
| 4701 | |||
| 4702 | #, c-format | ||
| 4703 | msgid "No (more) data received (nfound: %d)\n" | ||
| 4704 | msgstr "" | ||
| 4705 | |||
| 4706 | #, c-format | ||
| 4707 | msgid "recvfrom() failed, " | ||
| 4708 | msgstr "" | ||
| 4709 | |||
| 4710 | #, c-format | ||
| 4711 | msgid "receive_dhcp_packet() result: %d\n" | ||
| 4712 | msgstr "" | ||
| 4713 | |||
| 4714 | #, c-format | ||
| 4715 | msgid "receive_dhcp_packet() source: %s\n" | ||
| 4716 | msgstr "" | ||
| 4717 | |||
| 4718 | #, c-format | ||
| 4719 | msgid "Error: Could not create socket!\n" | ||
| 4720 | msgstr "" | ||
| 4721 | |||
| 4722 | #, c-format | ||
| 4723 | msgid "Error: Could not set reuse address option on DHCP socket!\n" | ||
| 4724 | msgstr "" | ||
| 4725 | |||
| 4726 | #, c-format | ||
| 4727 | msgid "Error: Could not set broadcast option on DHCP socket!\n" | ||
| 4728 | msgstr "" | ||
| 4729 | |||
| 4730 | #, c-format | ||
| 4731 | msgid "" | ||
| 4732 | "Error: Could not bind socket to interface %s. Check your privileges...\n" | ||
| 4733 | msgstr "" | ||
| 4734 | |||
| 4735 | #, c-format | ||
| 4736 | msgid "" | ||
| 4737 | "Error: Could not bind to DHCP socket (port %d)! Check your privileges...\n" | ||
| 4738 | msgstr "" | ||
| 4739 | |||
| 4740 | #, c-format | ||
| 4741 | msgid "Requested server address: %s\n" | ||
| 4742 | msgstr "" | ||
| 4743 | |||
| 4744 | #, c-format | ||
| 4745 | msgid "Lease Time: Infinite\n" | ||
| 4746 | msgstr "" | ||
| 4747 | |||
| 4748 | #, c-format | ||
| 4749 | msgid "Lease Time: %lu seconds\n" | ||
| 4750 | msgstr "" | ||
| 4751 | |||
| 4752 | #, c-format | ||
| 4753 | msgid "Renewal Time: Infinite\n" | ||
| 4754 | msgstr "" | ||
| 4755 | |||
| 4756 | #, c-format | ||
| 4757 | msgid "Renewal Time: %lu seconds\n" | ||
| 4758 | msgstr "" | ||
| 4759 | |||
| 4760 | #, c-format | ||
| 4761 | msgid "Rebinding Time: Infinite\n" | ||
| 4762 | msgstr "" | ||
| 4763 | |||
| 4764 | #, c-format | ||
| 4765 | msgid "Rebinding Time: %lu seconds\n" | ||
| 4766 | msgstr "" | ||
| 4767 | |||
| 4768 | #, c-format | ||
| 4769 | msgid "Added offer from server @ %s" | ||
| 4770 | msgstr "" | ||
| 4771 | |||
| 4772 | #, c-format | ||
| 4773 | msgid " of IP address %s\n" | ||
| 4774 | msgstr "" | ||
| 4775 | |||
| 4776 | #, c-format | ||
| 4777 | msgid "DHCP Server Match: Offerer=%s" | ||
| 4778 | msgstr "" | ||
| 4779 | |||
| 4780 | #, c-format | ||
| 4781 | msgid " Requested=%s" | ||
| 4782 | msgstr "" | ||
| 4783 | |||
| 4784 | #, c-format | ||
| 4785 | msgid " (duplicate)" | ||
| 4786 | msgstr "" | ||
| 4787 | |||
| 4788 | #, c-format | ||
| 4789 | msgid "\n" | ||
| 4790 | msgstr "" | ||
| 4791 | |||
| 4792 | #, c-format | ||
| 4793 | msgid "No DHCPOFFERs were received.\n" | ||
| 4794 | msgstr "" | ||
| 4795 | |||
| 4796 | #, c-format | ||
| 4797 | msgid "Received %d DHCPOFFER(s)" | ||
| 4798 | msgstr "" | ||
| 4799 | |||
| 4800 | #, c-format | ||
| 4801 | msgid ", %s%d of %d requested servers responded" | ||
| 4802 | msgstr "" | ||
| 4803 | |||
| 4804 | #, c-format | ||
| 4805 | msgid ", requested address (%s) was %soffered" | ||
| 4806 | msgstr "" | ||
| 4807 | |||
| 4808 | msgid "not " | ||
| 4809 | msgstr "" | ||
| 4810 | |||
| 4811 | #, c-format | ||
| 4812 | msgid ", max lease time = " | ||
| 4813 | msgstr "" | ||
| 4814 | |||
| 4815 | #, c-format | ||
| 4816 | msgid "Infinity" | ||
| 4817 | msgstr "" | ||
| 4818 | |||
| 4819 | msgid "Got unexpected non-option argument" | ||
| 4820 | msgstr "" | ||
| 4821 | |||
| 4822 | #, c-format | ||
| 4823 | msgid "Error: DLPI stream API failed to get MAC in check_ctrl: %s.\n" | ||
| 4824 | msgstr "" | ||
| 4825 | |||
| 4826 | #, c-format | ||
| 4827 | msgid "Error: DLPI stream API failed to get MAC in put_ctrl/putmsg(): %s.\n" | ||
| 4828 | msgstr "" | ||
| 4829 | |||
| 4830 | #, c-format | ||
| 4831 | msgid "Error: DLPI stream API failed to get MAC in put_both/putmsg().\n" | ||
| 4832 | msgstr "" | ||
| 4833 | |||
| 4834 | #, c-format | ||
| 4835 | msgid "" | ||
| 4836 | "Error: DLPI stream API failed to get MAC in dl_attach_req/open(%s..): %s.\n" | ||
| 4837 | msgstr "" | ||
| 4838 | |||
| 4839 | #, c-format | ||
| 4840 | msgid "Error: DLPI stream API failed to get MAC in dl_bind/check_ctrl(): %s.\n" | ||
| 4841 | msgstr "" | ||
| 4842 | |||
| 4843 | #, c-format | ||
| 4844 | msgid "Hardware address: " | ||
| 4845 | msgstr "" | ||
| 4846 | |||
| 4847 | msgid "This plugin tests the availability of DHCP servers on a network." | ||
| 4848 | msgstr "" | ||
| 4849 | |||
| 4850 | msgid "IP address of DHCP server that we must hear from" | ||
| 4851 | msgstr "" | ||
| 4852 | |||
| 4853 | msgid "IP address that should be offered by at least one DHCP server" | ||
| 4854 | msgstr "" | ||
| 4855 | |||
| 4856 | msgid "Seconds to wait for DHCPOFFER before timeout occurs" | ||
| 4857 | msgstr "" | ||
| 4858 | |||
| 4859 | msgid "Interface to to use for listening (i.e. eth0)" | ||
| 4860 | msgstr "" | ||
| 4861 | |||
| 4862 | msgid "MAC address to use in the DHCP request" | ||
| 4863 | msgstr "" | ||
| 4864 | |||
| 4865 | msgid "Unicast testing: mimic a DHCP relay, requires -s" | ||
| 4866 | msgstr "" | ||
| 4867 | |||
| 4868 | msgid "specify a target" | ||
| 4869 | msgstr "" | ||
| 4870 | |||
| 4871 | msgid "Use IPv4 (default) or IPv6 to communicate with the targets" | ||
| 4872 | msgstr "" | ||
| 4873 | |||
| 4874 | msgid "warning threshold (currently " | ||
| 4875 | msgstr "" | ||
| 4876 | |||
| 4877 | msgid "critical threshold (currently " | ||
| 4878 | msgstr "" | ||
| 4879 | |||
| 4880 | msgid "specify a source IP address or device name" | ||
| 4881 | msgstr "" | ||
| 4882 | |||
| 4883 | msgid "number of packets to send (currently " | ||
| 4884 | msgstr "" | ||
| 4885 | |||
| 4886 | msgid "max packet interval (currently " | ||
| 4887 | msgstr "" | ||
| 4888 | |||
| 4889 | msgid "max target interval (currently " | ||
| 4890 | msgstr "" | ||
| 4891 | |||
| 4892 | msgid "number of alive hosts required for success" | ||
| 4893 | msgstr "" | ||
| 4894 | |||
| 4895 | msgid "TTL on outgoing packets (currently " | ||
| 4896 | msgstr "" | ||
| 4897 | |||
| 4898 | msgid "timeout value (seconds, currently " | ||
| 4899 | msgstr "" | ||
| 4900 | |||
| 4901 | msgid "Number of icmp data bytes to send" | ||
| 4902 | msgstr "" | ||
| 4903 | |||
| 4904 | msgid "Packet size will be data bytes + icmp header (currently" | ||
| 4905 | msgstr "" | ||
| 4906 | |||
| 4907 | msgid "verbose" | ||
| 4908 | msgstr "" | ||
| 4909 | |||
| 4910 | msgid "The -H switch is optional. Naming a host (or several) to check is not." | ||
| 4911 | msgstr "" | ||
| 4912 | |||
| 4913 | msgid "" | ||
| 4914 | "Threshold format for -w and -c is 200.25,60% for 200.25 msec RTA and 60%" | ||
| 4915 | msgstr "" | ||
| 4916 | |||
| 4917 | msgid "packet loss. The default values should work well for most users." | ||
| 4918 | msgstr "" | ||
| 4919 | |||
| 4920 | msgid "" | ||
| 4921 | "You can specify different RTA factors using the standardized abbreviations" | ||
| 4922 | msgstr "" | ||
| 4923 | |||
| 4924 | msgid "" | ||
| 4925 | "us (microseconds), ms (milliseconds, default) or just plain s for seconds." | ||
| 4926 | msgstr "" | ||
| 4927 | |||
| 4928 | msgid "The -v switch can be specified several times for increased verbosity." | ||
| 4929 | msgstr "" | ||
diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin deleted file mode 100644 index 2436c49e..00000000 --- a/po/remove-potcdate.sin +++ /dev/null | |||
| @@ -1,19 +0,0 @@ | |||
| 1 | # Sed script that remove the POT-Creation-Date line in the header entry | ||
| 2 | # from a POT file. | ||
| 3 | # | ||
| 4 | # The distinction between the first and the following occurrences of the | ||
| 5 | # pattern is achieved by looking at the hold space. | ||
| 6 | /^"POT-Creation-Date: .*"$/{ | ||
| 7 | x | ||
| 8 | # Test if the hold space is empty. | ||
| 9 | s/P/P/ | ||
| 10 | ta | ||
| 11 | # Yes it was empty. First occurrence. Remove the line. | ||
| 12 | g | ||
| 13 | d | ||
| 14 | bb | ||
| 15 | :a | ||
| 16 | # The hold space was nonempty. Following occurrences. Do nothing. | ||
| 17 | x | ||
| 18 | :b | ||
| 19 | } | ||
