Esta pode ser uma questão antiga, mas a documentação por aí não é muito clara sobre por que o SNMP está agindo como é, e eu tenho lutado com essa bagunça por um tempo, então aqui vai.
A sub-rotina extend cria uma nova estrutura MIB no OID especificado e acrescenta vários valores de NET-SNMP-EXTEND-MIB e acrescenta mais valores, dependendo do nome especificado no estender a diretiva.
No seu exemplo, o OID de base é .1.3.6.1.4.1.99999.1
. O SNMPd duplica a estrutura da MIB do NET-SNMP-EXTEND-MIB e a anexa a este OID. Eu repliquei a árvore MIB básica abaixo, o MIB completo pode ser encontrado no link
.1: nsExtendNumEntries
.2: nsExtendConfigTable
.1: nsExtendConfigEntry
.1: nsExtendToken
.2: nsExtendCommand
.3: nsExtendArgs
.4: nsExtendInput
.5: nsExtendCacheTime
.6: nsExtendExecType
.7: nsExtendRunType
.20: nsExtendStorage
.21: nsExtendStatus
.3: nsExtendOutput1Table
.1: nsExtendOutput1Entry
.1: nsExtendOutput1Line
.2: nsExtendOutputFull
.3: nsExtendOutNumLines
.4: nsExtendResult
.4: nsExtendOutput2Table
.1: nsExtendOutput2Entry
.2: nsExtendOutput2Entry
O comprimento do caractere do nome é acrescentado e, em seguida, o nome é convertido em ASCII e anexado como valores decimais.
Portanto, o detalhamento da resposta OID .1.3.6.1.4.1.99999.1.3.1.1.4.116.101.115.116 = hello
é o seguinte:
.1.3.6.1.4.1.99999.1 : base OID
.3 : nsExtendOutput1Table
.1 : nsExtendOutput1Entry
.1 : nsExtendOutput1Line
.4 : Length of name ("test" in this case)
.116 : ASCII t
.101 : ASCII e
.115 : ASCII s
.116 : ASCII t
E como esse OID é o valor nsExtendOutput1Line, que retorna a primeira linha da saída do comando, o valor é "hello".