summaryrefslogtreecommitdiffstats
path: root/src/zabbix_get
diff options
context:
space:
mode:
authorosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-04-14 09:02:15 +0000
committerosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-04-14 09:02:15 +0000
commit0a80c5c1d8605f34a3512f618328127a46d899db (patch)
treedd189ef62cd4b38f8818a3b7aada094b6d68eead /src/zabbix_get
parent9d8cf662472860e667de2265f64d0d9203b5ac93 (diff)
downloadzabbix-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.am12
-rw-r--r--src/zabbix_get/zabbix_get.c119
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;
}