mirror of
https://github.com/monitoring-plugins/monitoring-plugins.git
synced 2026-02-23 09:59:28 -05:00
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
This commit is contained in:
parent
a0e099de2b
commit
4fe50f4297
2 changed files with 70 additions and 25 deletions
59
configure.in
59
configure.in
|
|
@ -1263,23 +1263,9 @@ dnl SWAP info required is amount allocated/available and amount free
|
|||
dnl The plugin works through all the swap devices and adds up the total swap
|
||||
dnl available.
|
||||
AC_PATH_PROG(PATH_TO_SWAP,swap)
|
||||
AC_PATH_PROG(PATH_TO_SWAPINFO,swapinfo)
|
||||
|
||||
dnl dunno why this does not work below - use hack (kbd)
|
||||
dnl fine on linux, broken on solaris
|
||||
dnl if /bin/test -e "/proc/meminfo"
|
||||
AC_MSG_CHECKING(for how to check memory)
|
||||
if [cat /proc/meminfo > /dev/null 2>&1]
|
||||
if (test -n "$PATH_TO_SWAP")
|
||||
then
|
||||
AC_MSG_RESULT([found /proc/meminfo])
|
||||
AC_DEFINE(HAVE_PROC_MEMINFO,1,[Define if we have /proc/meminfo])
|
||||
AC_DEFINE_UNQUOTED(PROC_MEMINFO,"/proc/meminfo",[path to /proc/meminfo if name changes])
|
||||
EXTRAS="$EXTRAS check_swap"
|
||||
fi
|
||||
|
||||
if ( test -n "$PATH_TO_SWAP" || test -n "$PATH_TO_SWAPINFO" )
|
||||
then
|
||||
|
||||
AC_MSG_CHECKING([for $PATH_TO_SWAP format])
|
||||
if [$PATH_TO_SWAP -l 2>&1 >/dev/null]
|
||||
then
|
||||
ac_cv_have_swap=yes
|
||||
|
|
@ -1306,8 +1292,15 @@ then
|
|||
|
||||
fi
|
||||
EXTRAS="$EXTRAS check_swap"
|
||||
fi
|
||||
dnl end if for PATH_TO_SWAP
|
||||
fi
|
||||
|
||||
elif [$PATH_TO_SWAPINFO -k 2>&1 | egrep -i "^Device" >/dev/null]
|
||||
AC_PATH_PROG(PATH_TO_SWAPINFO,swapinfo)
|
||||
if (test -n "$PATH_TO_SWAPINFO")
|
||||
then
|
||||
AC_MSG_CHECKING([for $PATH_TO_SWAPINFO format])
|
||||
if [$PATH_TO_SWAPINFO -k 2>&1 | egrep -i "^Device" >/dev/null]
|
||||
then
|
||||
ac_cv_have_swap=yes
|
||||
ac_cv_swap_command="$PATH_TO_SWAPINFO -k"
|
||||
|
|
@ -1328,6 +1321,23 @@ then
|
|||
ac_cv_swap_conv=1024
|
||||
AC_MSG_RESULT([using HP-UX format swapinfo])
|
||||
fi
|
||||
dnl end if for PATH_TO_SWAPINFO
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(PATH_TO_LSPS,lsps)
|
||||
if (test -n "$PATH_TO_LSPS")
|
||||
then
|
||||
AC_MSG_CHECKING([for $PATH_TO_LSPS format])
|
||||
if [$PATH_TO_LSPS -a 2>/dev/null | egrep -i "^Page Space" > /dev/null]
|
||||
then
|
||||
ac_cv_have_swap=yes
|
||||
ac_cv_swap_command="$PATH_TO_LSPS -a"
|
||||
ac_cv_swap_format=["%*s %*s %*s %d%*s %d %*s"]
|
||||
ac_cv_swap_conv=1
|
||||
AC_MSG_RESULT([using AIX lsps])
|
||||
fi
|
||||
dnl end if for PATH_TO_SWAPINFO
|
||||
fi
|
||||
|
||||
if test "x$ac_cv_have_swap" != "x"
|
||||
then
|
||||
|
|
@ -1343,8 +1353,19 @@ then
|
|||
[Conversion factor to MB])
|
||||
fi
|
||||
|
||||
dnl End of if SWAP
|
||||
fi
|
||||
dnl dunno why this does not work below - use hack (kbd)
|
||||
dnl fine on linux, broken on solaris
|
||||
dnl if /bin/test -e "/proc/meminfo"
|
||||
AC_MSG_CHECKING([for /proc/meminfo])
|
||||
if [cat /proc/meminfo > /dev/null 2>&1]
|
||||
then
|
||||
AC_MSG_RESULT([found /proc/meminfo])
|
||||
AC_DEFINE(HAVE_PROC_MEMINFO,1,[Define if we have /proc/meminfo])
|
||||
AC_DEFINE_UNQUOTED(PROC_MEMINFO,"/proc/meminfo",[path to /proc/meminfo if name changes])
|
||||
EXTRAS="$EXTRAS check_swap"
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(PATH_TO_DIG,dig)
|
||||
AC_DEFINE_UNQUOTED(PATH_TO_DIG,"$PATH_TO_DIG",[Path to dig command, if present])
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
@ -372,6 +392,10 @@ print_help (void)
|
|||
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));
|
||||
|
|
|
|||
Loading…
Reference in a new issue