diff options
Diffstat (limited to 'plugins/check_mysql_query.c')
-rw-r--r-- | plugins/check_mysql_query.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/plugins/check_mysql_query.c b/plugins/check_mysql_query.c index 8c6a96c..171fc69 100644 --- a/plugins/check_mysql_query.c +++ b/plugins/check_mysql_query.c | |||
@@ -47,6 +47,7 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; | |||
47 | 47 | ||
48 | char *db_user = NULL; | 48 | char *db_user = NULL; |
49 | char *db_host = NULL; | 49 | char *db_host = NULL; |
50 | char *db_socket = NULL; | ||
50 | char *db_pass = NULL; | 51 | char *db_pass = NULL; |
51 | char *db = NULL; | 52 | char *db = NULL; |
52 | unsigned int db_port = MYSQL_PORT; | 53 | unsigned int db_port = MYSQL_PORT; |
@@ -86,7 +87,7 @@ main (int argc, char **argv) | |||
86 | mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"client"); | 87 | mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"client"); |
87 | 88 | ||
88 | /* establish a connection to the server and error checking */ | 89 | /* establish a connection to the server and error checking */ |
89 | if (!mysql_real_connect(&mysql,db_host,db_user,db_pass,db,db_port,NULL,0)) { | 90 | if (!mysql_real_connect(&mysql,db_host,db_user,db_pass,db,db_port,db_socket,0)) { |
90 | if (mysql_errno (&mysql) == CR_UNKNOWN_HOST) | 91 | if (mysql_errno (&mysql) == CR_UNKNOWN_HOST) |
91 | die (STATE_WARNING, "QUERY %s: %s\n", _("WARNING"), mysql_error (&mysql)); | 92 | die (STATE_WARNING, "QUERY %s: %s\n", _("WARNING"), mysql_error (&mysql)); |
92 | else if (mysql_errno (&mysql) == CR_VERSION_ERROR) | 93 | else if (mysql_errno (&mysql) == CR_VERSION_ERROR) |
@@ -170,6 +171,7 @@ process_arguments (int argc, char **argv) | |||
170 | int option = 0; | 171 | int option = 0; |
171 | static struct option longopts[] = { | 172 | static struct option longopts[] = { |
172 | {"hostname", required_argument, 0, 'H'}, | 173 | {"hostname", required_argument, 0, 'H'}, |
174 | {"socket", required_argument, 0, 's'}, | ||
173 | {"database", required_argument, 0, 'd'}, | 175 | {"database", required_argument, 0, 'd'}, |
174 | {"username", required_argument, 0, 'u'}, | 176 | {"username", required_argument, 0, 'u'}, |
175 | {"password", required_argument, 0, 'p'}, | 177 | {"password", required_argument, 0, 'p'}, |
@@ -187,7 +189,7 @@ process_arguments (int argc, char **argv) | |||
187 | return ERROR; | 189 | return ERROR; |
188 | 190 | ||
189 | while (1) { | 191 | while (1) { |
190 | c = getopt_long (argc, argv, "hvVSP:p:u:d:H:q:w:c:", longopts, &option); | 192 | c = getopt_long (argc, argv, "hvVSP:p:u:d:H:s:q:w:c:", longopts, &option); |
191 | 193 | ||
192 | if (c == -1 || c == EOF) | 194 | if (c == -1 || c == EOF) |
193 | break; | 195 | break; |
@@ -201,14 +203,17 @@ process_arguments (int argc, char **argv) | |||
201 | usage2 (_("Invalid hostname/address"), optarg); | 203 | usage2 (_("Invalid hostname/address"), optarg); |
202 | } | 204 | } |
203 | break; | 205 | break; |
204 | case 'd': /* hostname */ | 206 | case 's': /* socket */ |
207 | db_socket = optarg; | ||
208 | break; | ||
209 | case 'd': /* database */ | ||
205 | db = optarg; | 210 | db = optarg; |
206 | break; | 211 | break; |
207 | case 'u': /* username */ | 212 | case 'u': /* username */ |
208 | db_user = optarg; | 213 | db_user = optarg; |
209 | break; | 214 | break; |
210 | case 'p': /* authentication information: password */ | 215 | case 'p': /* authentication information: password */ |
211 | asprintf(&db_pass, "%s", optarg); | 216 | db_pass = strdup(optarg); |
212 | 217 | ||
213 | /* Delete the password from process list */ | 218 | /* Delete the password from process list */ |
214 | while (*optarg != '\0') { | 219 | while (*optarg != '\0') { |
@@ -293,6 +298,8 @@ print_help (void) | |||
293 | printf (" %s\n", _("SQL query to run. Only first column in first row will be read")); | 298 | printf (" %s\n", _("SQL query to run. Only first column in first row will be read")); |
294 | printf (_(UT_WARN_CRIT_RANGE)); | 299 | printf (_(UT_WARN_CRIT_RANGE)); |
295 | printf (_(UT_HOST_PORT), 'P', myport); | 300 | printf (_(UT_HOST_PORT), 'P', myport); |
301 | printf (" %s\n", "-s, --socket=STRING"); | ||
302 | printf (" %s\n", _("Use the specified socket (has no effect if -H is used)")); | ||
296 | printf (" -d, --database=STRING\n"); | 303 | printf (" -d, --database=STRING\n"); |
297 | printf (" %s\n", _("Database to check")); | 304 | printf (" %s\n", _("Database to check")); |
298 | printf (" -u, --username=STRING\n"); | 305 | printf (" -u, --username=STRING\n"); |
@@ -300,6 +307,7 @@ print_help (void) | |||
300 | printf (" -p, --password=STRING\n"); | 307 | printf (" -p, --password=STRING\n"); |
301 | printf (" %s\n", _("Password to login with")); | 308 | printf (" %s\n", _("Password to login with")); |
302 | printf (" ==> %s <==\n", _("IMPORTANT: THIS FORM OF AUTHENTICATION IS NOT SECURE!!!")); | 309 | printf (" ==> %s <==\n", _("IMPORTANT: THIS FORM OF AUTHENTICATION IS NOT SECURE!!!")); |
310 | printf (" %s\n", _("Your clear-text password could be visible as a process table entry")); | ||
303 | 311 | ||
304 | printf ("\n"); | 312 | printf ("\n"); |
305 | printf (" %s\n", _("A query is required. The result from the query should be numeric.")); | 313 | printf (" %s\n", _("A query is required. The result from the query should be numeric.")); |
@@ -313,6 +321,6 @@ void | |||
313 | print_usage (void) | 321 | print_usage (void) |
314 | { | 322 | { |
315 | printf (_("Usage:")); | 323 | printf (_("Usage:")); |
316 | printf ("%s -q SQL_query [-w warn] [-c crit]\n",progname); | 324 | printf (" %s -q SQL_query [-w warn] [-c crit] [-H host] [-P port] [-s socket]\n",progname); |
317 | printf ("[-d database] [-H host] [-P port] [-u user] [-p password]\n"); | 325 | printf (" [-d database] [-u user] [-p password]\n"); |
318 | } | 326 | } |