summaryrefslogtreecommitdiffstats
path: root/src/zabbix_server/poller
diff options
context:
space:
mode:
authoralex <alex@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-07-10 12:22:47 +0000
committeralex <alex@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-07-10 12:22:47 +0000
commite27be7bda70afa0e3c3e786582356886b7d262f4 (patch)
tree57e73c6a558278830d163356dd0a44ae50339c24 /src/zabbix_server/poller
parent09606f5c0b83c06e78e089cd1a7fd327b3af346a (diff)
downloadzabbix-e27be7bda70afa0e3c3e786582356886b7d262f4.tar.gz
zabbix-e27be7bda70afa0e3c3e786582356886b7d262f4.tar.xz
zabbix-e27be7bda70afa0e3c3e786582356886b7d262f4.zip
- changed syntax of keys for external checks (Alexei)
[svn merge -r4453:4455 svn://svn.zabbix.com/branches/1.4.2] git-svn-id: svn://svn.zabbix.com/trunk@4456 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src/zabbix_server/poller')
-rw-r--r--src/zabbix_server/poller/checks_external.c39
1 files changed, 27 insertions, 12 deletions
diff --git a/src/zabbix_server/poller/checks_external.c b/src/zabbix_server/poller/checks_external.c
index fb0c73e3..a409ad08 100644
--- a/src/zabbix_server/poller/checks_external.c
+++ b/src/zabbix_server/poller/checks_external.c
@@ -56,22 +56,24 @@ int get_value_external(DB_ITEM *item, AGENT_RESULT *result)
init_result(result);
strscpy(key, item->key);
- if((p2=strstr(key,"(")) != NULL)
+ if((p2=strchr(key,'[')) != NULL)
{
*p2=0;
strscpy(scriptname,key);
- *p2='(';
+ zabbix_log( LOG_LEVEL_DEBUG, "scriptname [%s]",scriptname);
+ *p2='[';
p2++;
}
else ret = NOTSUPPORTED;
if(ret == SUCCEED)
{
- if((ret == SUCCEED) && (p=strstr(p2,")")) != NULL)
+ if((ret == SUCCEED) && (p=strchr(p2,']')) != NULL)
{
*p=0;
strscpy(params,p2);
- *p=')';
+ zabbix_log( LOG_LEVEL_DEBUG, "params [%s]",params);
+ *p=']';
p++;
}
else ret = NOTSUPPORTED;
@@ -95,20 +97,33 @@ int get_value_external(DB_ITEM *item, AGENT_RESULT *result)
}
/* we only care about the first line */
- fgets(msg, sizeof(msg)-1, fp);
- for (i = 0; i < MAX_STRING_LEN && msg[i] != 0; ++i)
+ memset(msg,0,sizeof(msg));
+ if(NULL != fgets(msg, sizeof(msg)-1, fp))
{
- if (msg[i] == '\n')
+ for (i = 0; i < MAX_STRING_LEN && msg[i] != 0; ++i)
{
- msg[i] = 0;
- break;
+ if (msg[i] == '\n')
+ {
+ msg[i] = 0;
+ break;
+ }
}
- }
+ zabbix_log( LOG_LEVEL_DEBUG, "Result [%s]", msg);
- set_result_type(result,item->value_type,strdup(msg));
+ set_result_type(result,item->value_type,strdup(msg));
+ }
+ else
+ {
+ zbx_snprintf(error,MAX_STRING_LEN-1,"Script %s/%s returned nothing.",
+ CONFIG_EXTERNALSCRIPTS,
+ scriptname);
+ zabbix_log( LOG_LEVEL_WARNING, "%s", error);
+ SET_STR_RESULT(result, strdup(error));
+ ret = NOTSUPPORTED;
+ }
/* cleanup */
pclose(fp);
- return SUCCEED;
+ return ret;
}