summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2002-09-21 19:53:57 +0000
committerhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2002-09-21 19:53:57 +0000
commit22af177737d2574ec4affe764c99511a6efc065f (patch)
tree23eb82010f55cb7b4d885e74251d056fd7109e12
parent198f6d6a4ba585fb32ec61f8facf53a0fbfe6f13 (diff)
downloadzabbix-22af177737d2574ec4affe764c99511a6efc065f.tar.gz
zabbix-22af177737d2574ec4affe764c99511a6efc065f.tar.xz
zabbix-22af177737d2574ec4affe764c99511a6efc065f.zip
- added support for check_service(service,ip,port) (Alexei)
git-svn-id: svn://svn.zabbix.com/trunk@512 97f52cf1-0a1b-0410-bd0e-c28be96e8082
-rw-r--r--ChangeLog1
-rw-r--r--TODO1
-rw-r--r--src/zabbix_agent/sysinfo.c76
-rw-r--r--src/zabbix_agent/sysinfo.h2
4 files changed, 54 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index 4a0e3f76..86d75cbd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
Changes for 1.0beta6:
+ - added support for check_service(service,ip,port) (Alexei)
- added support for check_port(ip,port) (Alexei)
- fixed check_right(). Thanks to Daniel Higgins. (Alexei)
- more changes to send_email(). Thanks to Daniel Higgins. (Alexei)
diff --git a/TODO b/TODO
index f1969fb4..dd3f69bd 100644
--- a/TODO
+++ b/TODO
@@ -17,7 +17,6 @@ the agent with a predefined API that can return values to suckerd.
Not ready yet:
- - monitoring of services for different interfaces
- get rid of false warning messages (like unable to insert ...)
HB:
diff --git a/src/zabbix_agent/sysinfo.c b/src/zabbix_agent/sysinfo.c
index 0cf084f8..e829343b 100644
--- a/src/zabbix_agent/sysinfo.c
+++ b/src/zabbix_agent/sysinfo.c
@@ -158,7 +158,7 @@ COMMAND commands[AGENT_MAX_USER_COMMANDS]=
{"check_port[*]" ,CHECK_PORT, 0, "80"},
- {"check_service[*]" ,CHECK_SERVICE, 0, "ssh,22"},
+ {"check_service[*]" ,CHECK_SERVICE, 0, "ssh,127.0.0.1,22"},
{0}
};
@@ -1556,57 +1556,85 @@ float tcp_expect(char *hostname, short port, char *expect,char *sendtoclose)
}
}
-/* Service is either service name or service name plus port */
-/* Example check_service[ssh], check_service[smtp,29] */
-float CHECK_SERVICE(char *service)
+/* Example check_service[ssh], check_service[smtp,29],check_service[ssh,127.0.0.1,22]*/
+/* check_service[ssh,127.0.0.1,ssh] */
+float CHECK_SERVICE(char *service_and_ip_and_port)
{
- char *c;
+ char *c,*c1;
int port=0;
- char name[MAX_STRING_LEN+1];
+ char service[MAX_STRING_LEN+1];
+ char ip[MAX_STRING_LEN+1];
+ char port_str[MAX_STRING_LEN+1];
- c=strchr(service,',');
- strncpy(name,service,MAX_STRING_LEN);
+ c=strchr(service_and_ip_and_port,',');
+ strncpy(service,service_and_ip_and_port,MAX_STRING_LEN);
if(c != NULL)
{
- port=atoi(c+1);
- name[c-service]=0;
+ strncpy(ip,c+1,MAX_STRING_LEN);
+ service[c-service_and_ip_and_port]=0;
+
+ c1=strchr(ip,',');
+
+ if(c1!=NULL)
+ {
+ strncpy(port_str,c1+1,MAX_STRING_LEN);
+ ip[c1-ip]=0;
+ port=atoi(port_str);
+ }
+ else
+ {
+ if(strchr(ip,'.')==NULL)
+ {
+ strncpy(port_str,ip,MAX_STRING_LEN);
+ port=atoi(port_str);
+ strcpy(ip,"127.0.0.1");
+ }
+ }
+ }
+ else
+ {
+ strcpy(ip,"127.0.0.1");
}
- if(strcmp(name,"ssh") == 0)
+/* printf("IP:[%s]",ip);
+ printf("Service:[%s]",service);
+ printf("Port:[%d]",port);*/
+
+ if(strcmp(service,"ssh") == 0)
{
if(port == 0) port=22;
- return tcp_expect("127.0.0.1",port,"SSH","0\n");
+ return tcp_expect(ip,port,"SSH","0\n");
}
- if(strcmp(name,"smtp") == 0)
+ if(strcmp(service,"smtp") == 0)
{
if(port == 0) port=25;
- return tcp_expect("127.0.0.1",port,"220","QUIT\n");
+ return tcp_expect(ip,port,"220","QUIT\n");
}
- if(strcmp(name,"ftp") == 0)
+ if(strcmp(service,"ftp") == 0)
{
if(port == 0) port=21;
- return tcp_expect("127.0.0.1",port,"220","");
+ return tcp_expect(ip,port,"220","");
}
- if(strcmp(name,"http") == 0)
+ if(strcmp(service,"http") == 0)
{
if(port == 0) port=80;
- return tcp_expect("127.0.0.1",port,NULL,"");
+ return tcp_expect(ip,port,NULL,"");
}
- if(strcmp(name,"pop") == 0)
+ if(strcmp(service,"pop") == 0)
{
if(port == 0) port=110;
- return tcp_expect("127.0.0.1",port,"+OK","");
+ return tcp_expect(ip,port,"+OK","");
}
- if(strcmp(name,"nntp") == 0)
+ if(strcmp(service,"nntp") == 0)
{
if(port == 0) port=119;
- return tcp_expect("127.0.0.1",port,"220","");
+ return tcp_expect(ip,port,"220","");
}
- if(strcmp(name,"imap") == 0)
+ if(strcmp(service,"imap") == 0)
{
if(port == 0) port=143;
- return tcp_expect("127.0.0.1",port,"* OK","a1 LOGOUT\n");
+ return tcp_expect(ip,port,"* OK","a1 LOGOUT\n");
}
return FAIL;
diff --git a/src/zabbix_agent/sysinfo.h b/src/zabbix_agent/sysinfo.h
index f0ba1220..233dd581 100644
--- a/src/zabbix_agent/sysinfo.h
+++ b/src/zabbix_agent/sysinfo.h
@@ -1,7 +1,7 @@
#ifndef ZABBIX_SYSINFO_H
#define ZABBIX_SYSINFO_H
-/* #define TEST_PARAMETERS */
+#define TEST_PARAMETERS
void process(char *command, char *value);