SNMP プロトコルは初めてです。snmpd
SNMP 要求を処理する方法を知りたいです。例えば:
snmpget -v1 -c public localhost sysName
私の理解では、SNMPv2-MIB などの MIB を実装していますが、uname -n
コマンドを実行していますか?
sysname OID の net-snmp snmpd マッピングについては、system_mib.cを参照してください。実際には に基づいている場合uname
があります。以下のコード スニペットを参照してください。
#ifdef HAVE_GETHOSTNAME
gethostname(sysName, sizeof(sysName));
#else
#ifdef HAVE_UNAME
strlcpy(sysName, utsName.nodename, sizeof(sysName));
#else
#if defined (HAVE_EXECV) && !defined (mingw32)
sprintf(extmp.command, "%s -n", UNAMEPROG);
/*
* setup defaults
*/
extmp.type = EXECPROC;
extmp.next = NULL;
exec_command(&extmp);
strlcpy(sysName, extmp.output, sizeof(sysName));
if (strlen(sysName) >= 1)
sysName[strlen(sysName) - 1] = 0; /* chomp new line */
#else
strcpy(sysName, "unknown");
#endif /* HAVE_EXECV */
#endif /* HAVE_UNAME */
#endif /* HAVE_GETHOSTNAME */
snmpd
内部の仕組みを理解するには、net-snmp サイトのエージェント アーキテクチャページを参照してください。詳細が説明されており、新しい MIB を使用して net-snmp を拡張する方法も説明されています。