aboutsummaryrefslogtreecommitdiff
path: root/plugins/check_swap.c
diff options
context:
space:
mode:
authorGravatar Ton Voon <tonvoon@users.sourceforge.net> 2003-09-17 09:31:56 +0000
committerGravatar Ton Voon <tonvoon@users.sourceforge.net> 2003-09-17 09:31:56 +0000
commit4fe50f4297fa4b34d28c2d39ab83e5d2db4e1193 (patch)
tree145b6f954fb99c75bc75df83c7477bd30b4b6aa6 /plugins/check_swap.c
parenta0e099de2bb62c6b48587d75b2601f605ff14aad (diff)
downloadmonitoring-plugins-4fe50f4297fa4b34d28c2d39ab83e5d2db4e1193.tar.gz
Support for check_swap in AIX (tested on 5.1)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@734 f882894a-f735-0410-b71e-b25c423dba1c
Diffstat (limited to 'plugins/check_swap.c')
-rw-r--r--plugins/check_swap.c36
1 files changed, 30 insertions, 6 deletions
diff --git a/plugins/check_swap.c b/plugins/check_swap.c
index 3a799c32..2b71fd21 100644
--- a/plugins/check_swap.c
+++ b/plugins/check_swap.c
@@ -47,10 +47,6 @@ long unsigned int crit_size = 0;
int verbose;
int allswaps;
-#if !defined(sun)
-int sun = 0; /* defined by compiler if it is a sun solaris system */
-#endif
-
int
main (int argc, char **argv)
{
@@ -103,10 +99,18 @@ main (int argc, char **argv)
fclose(fp);
#else
# ifdef HAVE_SWAP
- if (!allswaps && sun) {
+ if (!allswaps) {
+#ifdef _AIX
+ asprintf(&swap_command, "%s", "/usr/sbin/lsps -s");
+ asprintf(&swap_format, "%s", "%d%*s %d");
+ conv_factor = 1;
+#else
+# ifdef sun
asprintf(&swap_command, "%s", "/usr/sbin/swap -s");
asprintf(&swap_format, "%s", "%*s %*dk %*s %*s + %*dk %*s = %dk %*s %dk %*s");
conv_factor = 2048;
+# endif
+#endif
} else {
asprintf(&swap_command, "%s", SWAP_COMMAND);
asprintf(&swap_format, "%s", SWAP_FORMAT);
@@ -144,17 +148,33 @@ main (int argc, char **argv)
}
}
- if (!allswaps && sun) {
+ if (!allswaps) {
+#ifdef _AIX
+ fgets(input_buffer, MAX_INPUT_BUFFER - 1, child_process); /* Ignore first line */
+ sscanf (input_buffer, swap_format, &total_swap, &used_swap);
+ free_swap = total_swap * (100 - used_swap) /100;
+ used_swap = total_swap - free_swap;
+ if (verbose >= 3)
+ printf (_("total=%d, used=%d, free=%d\n"), total_swap, used_swap, free_swap);
+#else
+# ifdef sun
sscanf (input_buffer, swap_format, &used_swap, &free_swap);
used_swap = used_swap / 1024;
free_swap = free_swap / 1024;
total_swap = used_swap + free_swap;
+# endif
+#endif
} else {
while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) {
sscanf (input_buffer, swap_format, &dsktotal, &dskfree);
dsktotal = dsktotal / conv_factor;
+ /* AIX lists percent used, so this converts to dskfree in MBs */
+#ifdef _AIX
+ dskfree = dsktotal * (100 - dskfree) / 100;
+#else
dskfree = dskfree / conv_factor;
+#endif
if (verbose >= 3)
printf (_("total=%d, free=%d\n"), dsktotal, dskfree);
@@ -373,6 +393,10 @@ On Solaris, if -a specified, uses swap -l, otherwise uses swap -s.\n\
Will be discrepencies because swap -s counts allocated swap and includes\n\
real memory\n"));
#endif
+#ifdef _AIX
+ printf (_("\n\
+On AIX, if -a is specified, uses lsps -a, otherwise uses lsps -s.\n"));
+#endif
printf (_(UT_SUPPORT));
}