2012-02-13 8 views
0

私は、次の(作業)perlスクリプトがあります。今、私は同じキーでのsnmpwalkまたはsnmpgetコマンドを使用していたSNMP v3でNET :: SNMPは動作しますが、snmpwalk/snmpgetでは動作しませんか?

use Net::SNMP; 

# create session to the host 
my ($session, $error) = Net::SNMP->session(
       -hostname => $hostname, 
       -version => 'snmpv3', 
       -username => 'my_user_name', 
       -authkey => 'my_authkey',#actually, here stands the real authkey as configured on the switch 
       -privkey => 'my_privkey',#same as on switch 
       -authprotocol => 'sha', 
       -privProtocol => 'des' 
     ); 
     if (!defined($session)) { 
      print $error . "\n"; 
       last; 
     } 

     # retrieve a table from the remote agent 
     my $result = $session->get_table(
       -baseoid => $MAC_OID 
     ); 

     if (!defined($result)) { 
       print $session->error . "\n"; 
       $session->close; 
       last; 
     } 
#print out the result of the snmp query 
#.... 

を。私はそれを見たよう

defSecurityName my_user_name 
defContext "" 
defAuthType SHA 
defSecurityLevel authPriv 
defAuthPassphrase my_auth_key here 
defVersion 3 
defPrivPassphrase my_privkey here 
defPrivType DES 

、私はスクリプト内やsnmpgetコマンドで同じ資格情報を使用します。そのために、私は以下の内容で私のホームディレクトリの.SNMPでsnmp.confファイルを作成しました。なぜ私はsnmpgetを取得する:認証の失敗(パスワード、コミュニティまたはキーが間違っている)

+0

私は、Perlを使ってマルチベンダーネットワーク管理を行っている会社で働いていました。私の0.02ドルというのは、あるSNMPクライアントライブラリで何かが動作し、別のSNMPクライアントライブラリでは驚くべきではないという矛盾があり、無作為なデバイスのSNMPエージェントが迷惑メールであると驚くことではないということです。 ;) – fennec

答えて

1

これは、使用するsnmpgetとsnmpsetのバージョンによって異なります。以前のバージョンのnet-snmpをC#ベースのSNMPエージェントに対してテストしたところ、http://sharpsnmplib.codeplex.com SHA authenモード+ DESプライバシーモードでは、net-snmpコマンドラインツールが正しいメッセージバイトを生成できないことに気付きました(暗号化が間違っていますどのエージェントもそれを解読することはできません)。

あなたが知っているように、同じバグの影響を受けないので、Net :: SNMPを代わりに使用することをお勧めします。

1

問題は、Net :: SNMPの認証キーとコマンドラインnet-snmpツールのパスワードを使用していることです。使用しているNet :: SNMPの使用状況に基づいて、実際には「ローカライズされた」キーを使用しています。つまり、snmp.confファイルの正しいトークンは、

defAuthLocalizedKey 0xHEXSTRING 
defPrivLocalizedKey 0xHEXSTRING 

です。詳細については、snmp.confのマニュアルページを参照してください。

関連する問題