diff options
| author | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2003-04-05 13:17:07 +0000 |
|---|---|---|
| committer | hugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2003-04-05 13:17:07 +0000 |
| commit | 7cbc20d918bbae6eac7095100a7cd9b91bb7eca6 (patch) | |
| tree | fa0d3d240d9d3ef5dc5c9b37a32cccd56996b06c /src | |
| parent | 396f27cae0ea4088e894487e46b8fe5c9a74db2d (diff) | |
| download | zabbix-7cbc20d918bbae6eac7095100a7cd9b91bb7eca6.tar.gz zabbix-7cbc20d918bbae6eac7095100a7cd9b91bb7eca6.tar.xz zabbix-7cbc20d918bbae6eac7095100a7cd9b91bb7eca6.zip | |
- changes definition of check_service[*]. Now it returns number of seconds
spent on service check. Tahns to J��rgen Schmitz. (Alexei)
git-svn-id: svn://svn.zabbix.com/trunk@741 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src')
| -rw-r--r-- | src/zabbix_agent/sysinfo.c | 62 |
1 files changed, 46 insertions, 16 deletions
diff --git a/src/zabbix_agent/sysinfo.c b/src/zabbix_agent/sysinfo.c index f20b5aa5..d894e9e6 100644 --- a/src/zabbix_agent/sysinfo.c +++ b/src/zabbix_agent/sysinfo.c @@ -1825,7 +1825,11 @@ void forward_request(char *proxy,char *command,int port,char *value); } */ -double tcp_expect(char *hostname, short port, char *expect,char *sendtoclose) +/* + * 0 - NOT OK + * 1 - OK + * */ +int tcp_expect(char *hostname, short port, char *expect,char *sendtoclose) { char *haddr; char c[1024]; @@ -1887,7 +1891,11 @@ double tcp_expect(char *hostname, short port, char *expect,char *sendtoclose) } } -double check_ssh(char *hostname, short port) +/* + * 0 - NOT OK + * 1 - OK + * */ +int check_ssh(char *hostname, short port) { char *haddr; char c[MAX_STRING_LEN+1]; @@ -1965,6 +1973,15 @@ double CHECK_SERVICE(char *service_and_ip_and_port) char ip[MAX_STRING_LEN+1]; char port_str[MAX_STRING_LEN+1]; + struct timeval t1,t2; + struct timezone tz1,tz2; + + int result; + + long exec_time; + + gettimeofday(&t1,&tz1); + c=strchr(service_and_ip_and_port,','); strncpy(service,service_and_ip_and_port,MAX_STRING_LEN); @@ -2003,40 +2020,53 @@ double CHECK_SERVICE(char *service_and_ip_and_port) if(strcmp(service,"ssh") == 0) { if(port == 0) port=22; - return check_ssh(ip,port); + result=check_ssh(ip,port); } - if(strcmp(service,"smtp") == 0) + else if(strcmp(service,"smtp") == 0) { if(port == 0) port=25; - return tcp_expect(ip,port,"220","QUIT\n"); + result=tcp_expect(ip,port,"220","QUIT\n"); } - if(strcmp(service,"ftp") == 0) + else if(strcmp(service,"ftp") == 0) { if(port == 0) port=21; - return tcp_expect(ip,port,"220",""); + result=tcp_expect(ip,port,"220",""); } - if(strcmp(service,"http") == 0) + else if(strcmp(service,"http") == 0) { if(port == 0) port=80; - return tcp_expect(ip,port,NULL,""); + result=tcp_expect(ip,port,NULL,""); } - if(strcmp(service,"pop") == 0) + else if(strcmp(service,"pop") == 0) { if(port == 0) port=110; - return tcp_expect(ip,port,"+OK",""); + result=tcp_expect(ip,port,"+OK",""); } - if(strcmp(service,"nntp") == 0) + else if(strcmp(service,"nntp") == 0) { if(port == 0) port=119; - return tcp_expect(ip,port,"220",""); + result=tcp_expect(ip,port,"220",""); } - if(strcmp(service,"imap") == 0) + else if(strcmp(service,"imap") == 0) { if(port == 0) port=143; - return tcp_expect(ip,port,"* OK","a1 LOGOUT\n"); + result=tcp_expect(ip,port,"* OK","a1 LOGOUT\n"); + } + else + { + result=0; } - return FAIL; + if(1 == result) + { + gettimeofday(&t2,&tz2); + exec_time=(t2.tv_sec - t1.tv_sec) * 1000000 + (t2.tv_usec - t1.tv_usec); + return (double)exec_time/1000000; + } + else + { + return (double)result; + } } double CHECK_PORT(char *ip_and_port) |
