SNMP V3和P

2024-09-29 23:21:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在linux上使用SNMPget来获取关于我网络上设备的信息。我能够在linux终端上成功地使用snmpget,但是现在我想用perl/python编写一个脚本,让它为我完成工作。在

SNMPget示例

snmpgetnext -v 3 -n "" -u USER -a MD5 -A PASSWORD -l authNoPriv 192.168.1.1 sysDescr

我也在尝试用perl做同样的事情,但似乎找不到任何关于如何做的好的文档。 我在internet上找到的(但这不是SNMP v3):

$cat snmp

^{pr2}$

我试图将其修改为snmpv3,但无法。有人知道这个吗?在


Tags: 网络脚本信息终端示例linuxpasswordmd5
1条回答
网友
1楼 · 发布于 2024-09-29 23:21:23

SNMPv3比v1和v2c复杂得多,它至少需要用户名(因为它就像v1和v2c一样),在实际情况下,您必须添加身份验证和隐私协议以及密码。在

您可以使用正式的NET::SNMP文档来学习如何使用此模块,我在其中添加一个Set(not Get)用法示例:

#! /usr/local/bin/perl

use strict;
use warnings;

use Net::SNMP;

my $OID_sysContact = '1.3.6.1.2.1.1.4.0';

my ($session, $error) = Net::SNMP->session(
   -hostname     => 'myv3host.example.com',
    -version      => 'snmpv3',
   -username     => 'myv3Username',
   -authprotocol => 'sha1',
   -authkey      => '0x6695febc9288e36282235fc7151f128497b38f3f',
   -privprotocol => 'des',
   -privkey      => '0x6695febc9288e36282235fc7151f1284',
);

if (!defined $session) {
   printf "ERROR: %s.\n", $error;
   exit 1;
}

my $result = $session->set_request(
   -varbindlist => [ $OID_sysContact, OCTET_STRING, 'Help Desk x911' ],
);

if (!defined $result) {
   printf "ERROR: %s.\n", $session->error();
   $session->close();
   exit 1;
}

printf "The sysContact for host '%s' was set to '%s'.\n",
      $session->hostname(), $result->{$OID_sysContact};

$session->close();

exit 0;

会话创建($session)部分是主要问题,之后您可以使用v1/v2c这样的常规命令

另一个问题是,您需要请求OID(例如.1.3)格式,而不是字符串名称,除非您导入MIB模块进行翻译。在

祝你好运。。。在

相关问题 更多 >

    热门问题