summaryrefslogtreecommitdiffstats
path: root/web/attachments/258626-check_mysql_query.c.diff
diff options
context:
space:
mode:
Diffstat (limited to 'web/attachments/258626-check_mysql_query.c.diff')
-rw-r--r--web/attachments/258626-check_mysql_query.c.diff92
1 files changed, 92 insertions, 0 deletions
diff --git a/web/attachments/258626-check_mysql_query.c.diff b/web/attachments/258626-check_mysql_query.c.diff
new file mode 100644
index 0000000..c06efe0
--- /dev/null
+++ b/web/attachments/258626-check_mysql_query.c.diff
@@ -0,0 +1,92 @@
1--- check_mysql_query.c 2007-12-14 11:41:41.000000000 -0800
2+++ check_mysql_query.c 2007-12-14 12:17:56.000000000 -0800
3@@ -59,6 +59,8 @@
4 void print_usage (void);
5
6 char *sql_query = NULL;
7+unsigned int sql_column = 0;
8+
9 int verbose = 0;
10 thresholds *my_thresholds = NULL;
11
12@@ -74,6 +76,7 @@
13 double value;
14 char *error = NULL;
15 int status;
16+ unsigned int numcols;
17
18 setlocale (LC_ALL, "");
19 bindtextdomain (PACKAGE, LOCALEDIR);
20@@ -121,6 +124,12 @@
21 mysql_close(&mysql);
22 die (STATE_WARNING, "QUERY %s: %s\n", _("WARNING"), _("No rows returned"));
23 }
24+
25+ /* Check number of columns in result */
26+ numcols = mysql_num_fields(res);
27+ if(sql_column >= numcols) {
28+ die (STATE_WARNING, "QUERY %s: %s\n", _("WARNING"), _("Result has too few columns to satisfy --column"));
29+ }
30
31 /* fetch the first row */
32 if ( (row = mysql_fetch_row (res)) == NULL) {
33@@ -136,11 +145,11 @@
34 /* close the connection */
35 mysql_close (&mysql);
36
37- if (! is_numeric(row[0])) {
38+ if (! is_numeric(row[sql_column])) {
39 die (STATE_CRITICAL, "QUERY %s: %s - '%s'\n", _("CRITICAL"), _("Is not a numeric"), row[0]);
40 }
41
42- value = strtod(row[0], NULL);
43+ value = strtod(row[sql_column], NULL);
44
45 if (verbose >= 3)
46 printf("mysql result: %f\n", value);
47@@ -182,6 +191,7 @@
48 {"query", required_argument, 0, 'q'},
49 {"warning", required_argument, 0, 'w'},
50 {"critical", required_argument, 0, 'c'},
51+ {"column", required_argument, 0, 'C'},
52 {0, 0, 0, 0}
53 };
54
55@@ -189,7 +199,7 @@
56 return ERROR;
57
58 while (1) {
59- c = getopt_long (argc, argv, "hvVSP:p:u:d:H:q:w:c:", longopts, &option);
60+ c = getopt_long (argc, argv, "hvVSP:p:u:d:H:q:w:c:C:", longopts, &option);
61
62 if (c == -1 || c == EOF)
63 break;
64@@ -233,6 +243,9 @@
65 case 'q':
66 asprintf(&sql_query, "%s", optarg);
67 break;
68+ case 'C': /* column */
69+ sql_column = atoi(optarg);
70+ break;
71 case 'w':
72 warning = optarg;
73 break;
74@@ -292,7 +305,9 @@
75
76 printf (_(UT_HELP_VRSN));
77 printf (" -q, --query=STRING\n");
78- printf (" %s\n", _("SQL query to run. Only first column in first row will be read"));
79+ printf (" %s\n", _("SQL query to run. Only first column (unless -c says otherwise) in first row will be read"));
80+ printf (" -C, --column=INTEGER\n");
81+ printf (" %s\n", _("Column number in result row to use for comparison (Default: 0)"));
82 printf (_(UT_WARN_CRIT_RANGE));
83 printf (_(UT_HOST_PORT), 'P', myport);
84 printf (" -d, --database=STRING\n");
85@@ -317,6 +332,6 @@
86 {
87 printf (_("Usage:"));
88 printf ("%s -q SQL_query [-w warn] [-c crit]\n",progname);
89- printf ("[-d database] [-H host] [-P port] [-u user] [-p password]\n");
90+ printf ("[ -C column ] [-d database] [-H host] [-P port] [-u user] [-p password]\n");
91 }
92