在哪里可以找到mib2c"语言"的保留变量名列表?我的意思是未描述的可能变量here,如$ {name},它计算为作为参数传递给mib2c.c的OID名称。
答案 0 :(得分:2)
从local/mib2c
查看net-snmp-5.7.3
,预先填充的变量由以下代码填充:
$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
是硬编码字符串。就是这样。
要使用$config
参数的值创建-c
(如果未使用mib2c.conf
选项,则为-c
),您可以更改mib2c
将以下内容添加到上面显示的分配中:
$vars{config} = $configfile;
或者,我相信以下内容也会创建$config
,但传递给-c
选项的值将以目录名称为前缀:
@perleval $vars{config} = $configfile; 0@
您可以尝试使用以下内容获取原始值(假设原始值不包含/
);
@perleval $vars{config} = $configfile =~ m{([^/]+)\z}s ? $1 : undef; 0@
完全未经测试。我对SNMP或mib2c
没有任何了解。