-1

SNMP プロトコルは初めてです。snmpdSNMP 要求を処理する方法を知りたいです。例えば:

snmpget -v1 -c public localhost sysName

私の理解では、SNMPv2-MIB などの MIB を実装していますが、uname -nコマンドを実行していますか?

4

1 に答える 1

0

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 を拡張する方法も説明されています。

于 2014-10-09T23:17:34.643 に答える