diff options
111 files changed, 5359 insertions, 19319 deletions
diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..c7f0b5e --- /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 0000000..7fbe690 --- /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 0000000..5cae3e5 --- /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 0000000..ee9c145 --- /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 dcf778b..3f4674a 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 0317c8c..c402e0c 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 0000000..72f7c7e --- /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 0000000..8124075 --- /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 77b09f4..77ca658 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 df1bcbb..5959f70 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 c353b1d..e16f37d 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 a294b00..8594238 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 432b1da..e1f3bf7 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 37c963e..0afa733 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 01d73a6..dc3ee89 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 f4d5e66..771621d 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 0000000..529b356 --- /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 0000000..45218d0 --- /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 547af43..09c0dc4 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 5103d10..05dd794 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 4bb60aa..02ae11f 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 9bd68c7..e283fe2 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 77f8854..6843bac 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 814b3ec..8a2a041 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 c3d2067..780220e 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 114252b..1954b0f 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 7b10494..01afacd 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 c458cf6..f8592f4 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 5906550..9d4dffe 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 34fb390..7957ec1 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 6f3aeb8..061f5d4 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 582d3ea..483be06 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 3b5a45f..5b2caf2 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 b37c446..23ee4a9 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 9f533ea..9fe38ac 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 40aa020..a80229e 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 2d22619..4b8f5e2 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 1d47e9f..f788d42 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 96addd3..de1d88d 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 f4d33a7..eda8dd4 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 84f2022..15a7080 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 49156af..f143c6f 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 5998138..db824be 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 fa982ae..5c0f6e2 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 1ad547e..2a23b39 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 d0871c4..d3bddac 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 c24ca24..29c8520 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 5d85ae2..be7a610 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 05e5502..b3dd301 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 7ffce98..468bc95 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 23a9e99..70d6f9f 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 a534b69..ca12697 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 718c8ee..cdf768c 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 0160d98..3872e34 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 a1bfe1b..868ffc1 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 313df8a..1431d13 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 1fda549..826b77e 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 eb66f62..bd25d47 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 7d85554..15ec04c 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 ac2fb15..842b7a2 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 d73d83c..19c050d 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 3614650..61b2d69 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 49cb100..464a9e1 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 46cc604..b2e1655 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 3c9d23e..10c493b 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 9a4d25f..5165c82 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 6199033..94d589e 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 741f732..6e162e6 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 c17c699..1fcbd98 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 b1b4938..6b32710 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 fbdb70f..15e035b 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 fc0ae2c..986c3e1 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 56a586a..90a0402 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 8ccbd5a..34ef37b 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 cd965e3..e7ee785 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 1d307cf..01dd35e 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 baf8c59..f50ea42 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 68737c4..380ff3b 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 2a9ee98..89b9536 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 0f08e2f..833479c 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 50f62d3..c5fe7e1 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 1bb4f07..c6af248 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 d7ee0dd..a95057e 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 723817d..54e63bc 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 a5dd8fa..1ea6963 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 102191e..ed49bb9 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 666a012..6bc0ba8 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 eae98cc..7a930a4 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 ca035ce..9eb77ce 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 1f2fbdf..6ab4a5b 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 7c74e56..cf2f81c 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 a5cd23c..907d33a 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 de9e0f0..1878038 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 088f3b5..21c3e53 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 72f2b7c..eaa9f51 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 6078b27..6eaf85b 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 b4214c6..77d6a6f 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 c76b321..f939e33 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 1074102..0000000 --- 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 1ce0c39..0000000 --- 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 82864b2..0000000 --- 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 b35f5ad..0000000 --- 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 6e491d7..0000000 --- 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 d597203..0000000 --- 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 dfc2c5d..0000000 --- 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 af48f03..0000000 --- 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 2436c49..0000000 --- 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 | } | ||