diff options
author | Ton Voon <tonvoon@users.sourceforge.net> | 2003-09-17 09:31:56 +0000 |
---|---|---|
committer | Ton Voon <tonvoon@users.sourceforge.net> | 2003-09-17 09:31:56 +0000 |
commit | 4fe50f4297fa4b34d28c2d39ab83e5d2db4e1193 (patch) | |
tree | 145b6f954fb99c75bc75df83c7477bd30b4b6aa6 /plugins/check_swap.c | |
parent | a0e099de2bb62c6b48587d75b2601f605ff14aad (diff) | |
download | monitoring-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.c | 36 |
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)); } |