#c #net-snmp
#c #net-snmp
Вопрос:
В этом руководстве объясняется, как отправить SNMP-ловушку с вызовом функции send_v2trap() в C.
Как мне отправить SNMP-ИНФОРМАЦИЮ вместо этого? На странице руководства написано, что я могу отправлять сообщения, но не указано, как это сделать.
Ответ №1:
Разобрался сам 🙂
send_v2trap(3) сообщает:
send_v2trap() uses the supplied list of variable bindings to form an SNMPv2 trap,
which is sent to SNMPv2-capable sinks on the configured list.
An equivalent INFORM is sent to the configuredq list of inform sinks.
но не говорит, что это за настроенный список;
Вместо этого snmpd.conf(5) объясняет, что я должен отредактировать /etc/snmp/snmpd.conf
и добавить строки, указывающие, какие хосты будут получать сообщения. Например, следующее заставляет send_v2trap() отправлять ИНФОРМАЦИЮ на хост1 и хост2:
informsink host1 public 162
informsink host2 public 162
Ответ №2:
На самом деле, вы можете зарегистрировать приемники внутри C с помощью net-snmp, agent_trap.h функция:
void snmpd_parse_config_informsink(const char *, char *);
где я полагаю, что первый аргумент не используется, а второй аргумент вы можете записать как следующий пример на C :
//sink declarations
String serverAddress = "127.0.0.1";
int serverPort = 162;
String community = "public";
//mount sink string
string cptrS = serverAddress ":" to_string(serverPort) " tn" community;
//transform string to char*
char * cptr = amp;cptrS[0];
//register the sink
snmpd_parse_config_informsink(NULL,cptr);
теперь вы можете вызвать функцию send_v2trap() и отправить с помощью inform переменные, установленные с помощью snmp_varlist_add_variable() .
Ссылка: http://www.net-snmp.org/dev/agent/agent__trap_8c-source.html