int NET_UDP_LISTEN(const char *cmd, const char *param, unsigned flags, AGENT_RESULT *result) { char tmp[8], command[64]; unsigned short port; int res; if (1 < num_param(param)) return SYSINFO_RET_FAIL; if (0 != get_param(param, 1, tmp, sizeof(tmp))) return SYSINFO_RET_FAIL; if (FAIL == is_ushort(tmp, &port)) return SYSINFO_RET_FAIL; zbx_snprintf(command, sizeof(command), "netstat -an -P udp | grep '\\.%hu[^.].*Idle' | wc -l", port); if (SYSINFO_RET_FAIL == (res = EXECUTE_INT(NULL, command, flags, result))) return res; if (1 < result->ui64) result->ui64 = 1; return res; }
int NET_UDP_LISTEN(AGENT_REQUEST *request, AGENT_RESULT *result) { char *port_str, command[64]; unsigned short port; int res; if (1 < request->nparam) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Too many parameters.")); return SYSINFO_RET_FAIL; } port_str = get_rparam(request, 0); if (NULL == port_str || SUCCEED != is_ushort(port_str, &port)) { SET_MSG_RESULT(result, zbx_strdup(NULL, "Invalid first parameter.")); return SYSINFO_RET_FAIL; } zbx_snprintf(command, sizeof(command), "netstat -an -P udp | grep '\\.%hu[^.].*Idle' | wc -l", port); if (SYSINFO_RET_FAIL == (res = EXECUTE_INT(command, result))) return res; if (1 < result->ui64) result->ui64 = 1; return res; }
int SYSTEM_USERS_NUM(const char *cmd, const char *param, unsigned flags, AGENT_RESULT *result) { #ifdef _WINDOWS char counter_path[64]; zbx_snprintf(counter_path, sizeof(counter_path), "\\%d\\%d", PCI_TERMINAL_SERVICES, PCI_TOTAL_SESSIONS); return PERF_COUNTER(cmd, counter_path, flags, result); #else return EXECUTE_INT(cmd, "who | wc -l", flags, result); #endif }
int NET_TCP_LISTEN(const char *cmd, const char *param, unsigned flags, AGENT_RESULT *result) { char command[MAX_STRING_LEN]; assert(result); init_result(result); memset(command, '\0', sizeof(command)); zbx_snprintf(command, sizeof(command), "netstat -an | grep '*.%s' | wc -l", param); return EXECUTE_INT(NULL, command, flags, result); }
int NET_TCP_LISTEN(const char *cmd, const char *param, unsigned flags, AGENT_RESULT *result) { char command[MAX_STRING_LEN]; int res; assert(result); init_result(result); zbx_snprintf(command, sizeof(command), "netstat -an | grep '*.%s\\>' | wc -l", param); if (SYSINFO_RET_FAIL == (res = EXECUTE_INT(NULL, command, flags, result))) return res; if (NULL != GET_DBL_RESULT(result)) if (result->dbl > 1) result->dbl = 1; return res; }
int SYSTEM_USERS_NUM(AGENT_REQUEST *request, AGENT_RESULT *result) { #ifdef _WINDOWS char counter_path[64]; AGENT_REQUEST request_tmp; int ret; zbx_snprintf(counter_path, sizeof(counter_path), "\\%d\\%d", PCI_TERMINAL_SERVICES, PCI_TOTAL_SESSIONS); request_tmp.nparam = 1; request_tmp.params = zbx_malloc(NULL, request_tmp.nparam * sizeof(char *)); request_tmp.params[0] = counter_path; ret = PERF_COUNTER(&request_tmp, result); zbx_free(request_tmp.params); return ret; #else return EXECUTE_INT("who | wc -l", result); #endif }