【发布时间】:2017-07-10 12:45:14
【问题描述】:
在哪里可以找到 mib2c“语言”的保留变量名称列表?我的意思是here 未描述的可能变量,例如 ${name},它计算为作为参数传递给 mib2c.c 的 OID 名称。
- 还有其他类似的变量吗?
- 是否有一个带有传递给 mib2c 的 .conf 文件的名称。
【问题讨论】:
-
@ikegami 我同意。问题3创建here
在哪里可以找到 mib2c“语言”的保留变量名称列表?我的意思是here 未描述的可能变量,例如 ${name},它计算为作为参数传递给 mib2c.c 的 OID 名称。
【问题讨论】:
从net-snmp-5.7.3 看local/mib2c,预填充的变量由以下代码填充:
$outputName = $mibnode->{'label'} if (!defined($outputName));
$outputName =~ s/-/_/g;
$vars{'name'} = $outputName;
$vars{'oid'} = $oid;
$vars{'example_start'} = " /*\n" .
" ***************************************************\n" .
" *** START EXAMPLE CODE ***\n" .
" ***---------------------------------------------***/";
$vars{'example_end'} = " /*\n" .
" ***---------------------------------------------***\n" .
" *** END EXAMPLE CODE ***\n" .
" ***************************************************/";
因此,您最终会得到以下预填充变量:
$name 是使用-f 选项(或$mibnode->{'label'},如果未使用-f 选项,则无论如何)指定的“输出前缀”,用下划线替换破折号。$oid 是 mib2c 的参数的值(在使用帮助中称为“mibNode”)。$example_start 和 $example_end 是硬编码字符串。就是这样。
要使用-c 参数的值创建$config(如果未使用-c 选项,则为mib2c.conf),您可以更改mib2c 以将以下内容添加到上面显示的分配中:
$vars{config} = $configfile;
另外,我相信以下内容也会创建 $config,但传递给 -c 选项的值将带有目录名称:
@perleval $vars{config} = $configfile; 0@
您可以尝试通过以下方式获取原始值(假设原始值不包含/);
@perleval $vars{config} = $configfile =~ m{([^/]+)\z}s ? $1 : undef; 0@
完全未经测试。我对 SNMP 或 mib2c 一无所知。
【讨论】: