diff options
| author | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-04-14 09:02:15 +0000 |
|---|---|---|
| committer | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-04-14 09:02:15 +0000 |
| commit | 0a80c5c1d8605f34a3512f618328127a46d899db (patch) | |
| tree | dd189ef62cd4b38f8818a3b7aada094b6d68eead /src/zabbix_get | |
| parent | 9d8cf662472860e667de2265f64d0d9203b5ac93 (diff) | |
| download | zabbix-0a80c5c1d8605f34a3512f618328127a46d899db.tar.gz zabbix-0a80c5c1d8605f34a3512f618328127a46d899db.tar.xz zabbix-0a80c5c1d8605f34a3512f618328127a46d899db.zip | |
fixed commilation
git-svn-id: svn://svn.zabbix.com/trunk@4004 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src/zabbix_get')
| -rw-r--r-- | src/zabbix_get/Makefile.am | 12 | ||||
| -rw-r--r-- | src/zabbix_get/zabbix_get.c | 119 |
2 files changed, 50 insertions, 81 deletions
diff --git a/src/zabbix_get/Makefile.am b/src/zabbix_get/Makefile.am index b10905c0..999b7e0e 100644 --- a/src/zabbix_get/Makefile.am +++ b/src/zabbix_get/Makefile.am @@ -5,9 +5,9 @@ bin_PROGRAMS = zabbix_get zabbix_get_SOURCES = zabbix_get.c zabbix_get_LDADD = \ - ../libs/zbxcommon/libzbxcommon.a \ - ../libs/zbxlog/libzbxlog.a \ - ../libs/zbxcrypto/libzbxcrypto.a \ - ../libs/zbxsys/libzbxsys.a \ - ../libs/zbxconf/libzbxconf.a \ - ../libs/zbxnet/libzbxnet.a + $(top_srcdir)/src/libs/zbxcommon/libzbxcommon.a \ + $(top_srcdir)/src/libs/zbxlog/libzbxlog.a \ + $(top_srcdir)/src/libs/zbxcrypto/libzbxcrypto.a \ + $(top_srcdir)/src/libs/zbxsys/libzbxsys.a \ + $(top_srcdir)/src/libs/zbxconf/libzbxconf.a \ + $(top_srcdir)/src/libs/zbxcomms/libzbxcomms.a diff --git a/src/zabbix_get/zabbix_get.c b/src/zabbix_get/zabbix_get.c index aa1e2658..6976ae73 100644 --- a/src/zabbix_get/zabbix_get.c +++ b/src/zabbix_get/zabbix_get.c @@ -19,6 +19,8 @@ #include "common.h" +#include "comms.h" + char *progname = NULL; char title_message[] = "ZABBIX get - Communicate with ZABBIX agent"; char usage_message[] = "[-hV] -s<host name or IP> [-p<port number>] -k<key>"; @@ -95,86 +97,48 @@ void signal_handler( int sig ) * * * Purpose: connect to ZABBIX agent and receive value for given key * * * - * Parameters: server - serv name or IP address * + * Parameters: host - serv name or IP address * * port - port number * * key - item's key * + * value_max_len - maximal size of value * * * * Return value: SUCCEED - ok, FAIL - otherwise * * value - retrieved value * * * - * Author: Alexei Vladishev * + * Author: Eugene Grigorjev * * * * Comments: * * * ******************************************************************************/ -static int get_value(char *server,int port,char *key,char *value) +static int get_value( + const char *host, + const int port, + const char *key, + char *value, + int value_max_len + ) { - int i,s; - char tosend[1024]; - struct hostent *hp; - - struct sockaddr_in myaddr_in; - struct sockaddr_in servaddr_in; - -/* struct linger ling;*/ - -/* printf("get_value([%s],[%d],[%s])",server,port,key);*/ - - servaddr_in.sin_family=AF_INET; - - if(NULL == (hp = zbx_gethost(server))) - return FAIL; - - servaddr_in.sin_addr.s_addr=((struct in_addr *)(hp->h_addr))->s_addr; - - servaddr_in.sin_port=htons(port); - - s=socket(AF_INET,SOCK_STREAM,0); - if(s == -1) - { - fprintf(stderr, "Error: %s\n", strerror(errno)); - return FAIL; - } - - myaddr_in.sin_family = AF_INET; - myaddr_in.sin_port=0; - myaddr_in.sin_addr.s_addr=INADDR_ANY; - - if( connect(s,(struct sockaddr *)&servaddr_in,sizeof(struct sockaddr_in)) == -1 ) - { - fprintf(stderr, "Error: %s\n", strerror(errno)); - close(s); - return FAIL; - } - - zbx_snprintf(tosend,sizeof(tosend),"%s\n",key); - - if(write(s,tosend,strlen(tosend)) == -1) -/* if( sendto(s,tosend,strlen(tosend),0,(struct sockaddr *)&servaddr_in,sizeof(struct sockaddr_in)) == -1 )*/ - { - fprintf(stderr, "Error: %s\n", strerror(errno)); - close(s); - return FAIL; - } -/* i=sizeof(struct sockaddr_in); - i=recvfrom(s,value,1023,0,(struct sockaddr *)&servaddr_in,(socklen_t *)&i);*/ - memset(value,0,MAX_STRING_LEN); - i=read(s,value, MAX_STRING_LEN-1); - if(i==-1) - { - fprintf(stderr, "Error: %s\n", strerror(errno)); - close(s); - return FAIL; - } + zbx_sock_t s; + int ret; + char + *buf, + request[1024]; - delete_reol(value); - - if( close(s)!=0 ) + if( SUCCEED == (ret = zbx_tcp_connect(&s, host, port)) ) { - /* Ignore */ + zbx_snprintf(request, sizeof(request),"%s\n",key); + if( SUCCEED == (ret = zbx_tcp_send(&s, request)) ) + { + if( SUCCEED == (ret = zbx_tcp_recv(&s, &buf)) ) + { + zbx_rtrim(buf,"\r\n\0"); + zbx_snprintf(value, value_max_len, "%s", buf); + } + } } + zbx_tcp_close(&s); - return SUCCEED; + return ret; } /****************************************************************************** @@ -187,18 +151,18 @@ static int get_value(char *server,int port,char *key,char *value) * * * Return value: * * * - * Author: Alexei Vladishev * + * Author: Eugene Grigorjev * * * * Comments: * * * ******************************************************************************/ int main(int argc, char **argv) { - int port = 10050; - int ret=SUCCEED; + int port = 10050; + int ret = SUCCEED; char value[MAX_STRING_LEN]; - char *host=NULL; - char *key=NULL; + char *host = NULL; + char *key = NULL; int ch; progname = argv[0]; @@ -207,13 +171,13 @@ int main(int argc, char **argv) while ((ch = getopt_long(argc, argv, "k:p:s:hv", longopts, NULL)) != EOF) switch ((char) ch) { case 'k': - key = optarg; + key = strdup(optarg); break; case 'p': port = atoi(optarg); break; case 's': - host = optarg; + host = strdup(optarg); break; case 'h': help(); @@ -237,18 +201,20 @@ int main(int argc, char **argv) if(ret == SUCCEED) { +#if !defined(WINDOWS) signal( SIGINT, signal_handler ); signal( SIGQUIT, signal_handler ); signal( SIGTERM, signal_handler ); signal( SIGALRM, signal_handler ); alarm(SENDER_TIMEOUT); +#endif /* not WINDOWS */ -/* printf("Host [%s] Port [%d] Key [%s]\n",host,port,key);*/ - - ret = get_value(host,port,key,value); + ret = get_value(host, port, key, value, sizeof(value)); +#if !defined(WINDOWS) alarm(0); +#endif /* not WINDOWS */ if(ret == SUCCEED) { @@ -256,5 +222,8 @@ int main(int argc, char **argv) } } + zbx_free(host); + zbx_free(key); + return ret; } |
