diff options
author | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2002-09-21 19:53:57 +0000 |
---|---|---|
committer | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2002-09-21 19:53:57 +0000 |
commit | 22af177737d2574ec4affe764c99511a6efc065f (patch) | |
tree | 23eb82010f55cb7b4d885e74251d056fd7109e12 | |
parent | 198f6d6a4ba585fb32ec61f8facf53a0fbfe6f13 (diff) | |
download | zabbix-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-- | ChangeLog | 1 | ||||
-rw-r--r-- | TODO | 1 | ||||
-rw-r--r-- | src/zabbix_agent/sysinfo.c | 76 | ||||
-rw-r--r-- | src/zabbix_agent/sysinfo.h | 2 |
4 files changed, 54 insertions, 26 deletions
@@ -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) @@ -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); |