summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarl DeBisschop <kdebisschop@users.sourceforge.net>2004-02-28 04:54:32 +0000
committerKarl DeBisschop <kdebisschop@users.sourceforge.net>2004-02-28 04:54:32 +0000
commit0eda59afa1c95f2e11ae52925169a7c11bb6e352 (patch)
tree711765a77d619b440cf30410b9c3c69102ba45c5
parentdb265d5590f08746d9375807551cb1effdcf941d (diff)
downloadmonitoring-plugins-0eda59afa1c95f2e11ae52925169a7c11bb6e352.tar.gz
update to work with Linux 2.6 /proc/meminfo format
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@827 f882894a-f735-0410-b71e-b25c423dba1c
-rw-r--r--plugins/check_swap.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/plugins/check_swap.c b/plugins/check_swap.c
index 02b043e5..fe792e87 100644
--- a/plugins/check_swap.c
+++ b/plugins/check_swap.c
@@ -52,7 +52,7 @@ main (int argc, char **argv)
52{ 52{
53 int percent_used, percent; 53 int percent_used, percent;
54 unsigned long long total_swap = 0, used_swap = 0, free_swap = 0; 54 unsigned long long total_swap = 0, used_swap = 0, free_swap = 0;
55 unsigned long long dsktotal, dskused, dskfree; 55 unsigned long long dsktotal, dskused, dskfree, tmp;
56 int result = STATE_OK; 56 int result = STATE_OK;
57 char input_buffer[MAX_INPUT_BUFFER]; 57 char input_buffer[MAX_INPUT_BUFFER];
58 char *perf; 58 char *perf;
@@ -82,8 +82,7 @@ main (int argc, char **argv)
82#ifdef HAVE_PROC_MEMINFO 82#ifdef HAVE_PROC_MEMINFO
83 fp = fopen (PROC_MEMINFO, "r"); 83 fp = fopen (PROC_MEMINFO, "r");
84 while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, fp)) { 84 while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, fp)) {
85 if (sscanf (input_buffer, " %s %llu %llu %llu", str, &dsktotal, &dskused, &dskfree) == 4 && 85 if (sscanf (input_buffer, "%*[S]%*[w]%*[a]%*[p]%*[:] %llu %llu %llu", &dsktotal, &dskused, &dskfree) == 3) {
86 strstr (str, "Swap")) {
87 dsktotal = dsktotal / 1048576; 86 dsktotal = dsktotal / 1048576;
88 dskused = dskused / 1048576; 87 dskused = dskused / 1048576;
89 dskfree = dskfree / 1048576; 88 dskfree = dskfree / 1048576;
@@ -97,8 +96,20 @@ main (int argc, char **argv)
97 asprintf (&status, "%s [%llu (%d%%)]", status, dskfree, 100 - percent); 96 asprintf (&status, "%s [%llu (%d%%)]", status, dskfree, 100 - percent);
98 } 97 }
99 } 98 }
99 else if (sscanf (input_buffer, "%*[S]%*[w]%*[a]%*[p]%[TotalFre]%*[:] %llu %*[k]%*[B]", str, &tmp)) {
100 if (strcmp ("Total", str) == 0) {
101 dsktotal = tmp / 1024;
102 }
103 else if (strcmp ("Free", str) == 0) {
104 dskfree = tmp / 1024;
105 }
106 }
100 } 107 }
101 fclose(fp); 108 fclose(fp);
109 dskused = dsktotal - dskfree;
110 total_swap = dsktotal;
111 used_swap = dskused;
112 free_swap = dskfree;
102#else 113#else
103# ifdef HAVE_SWAP 114# ifdef HAVE_SWAP
104 asprintf(&swap_command, "%s", SWAP_COMMAND); 115 asprintf(&swap_command, "%s", SWAP_COMMAND);