0

snmpwalk コマンドを使用してスクリプトを実行すると、乱数が出力ファイルにリダイレクトされるという問題に直面しています。

snmpd.conf undet /etc/snmp/ でスクリプトの OID を exec .1.3.6.1.4.1.99.1.53.1006 として構成しました script.sh.sh /root/my_folder/script.sh


私のスクリプトは次のとおりです。

#!/usr/bin/ksh 

Out_Path="$HOME/output.txt" 

echo $RANDOM >> $Out_Path
--------------------------

今、私は次のようにsnmpwalkコマンドを実行しています:snmpwalk -t 10 -v 1 -c public 127.0.0.1.1.3.6.1.4.1.99.1.53.1006そして出力ファイルで私は1ではなく2つの乱数を取得しています.私は1つだけを期待しています乱数は、output.txt ファイルに存在する必要があります。動作または解決策を説明できる人はいますか?


実際の問題:

達成したいことを説明しています.snmpgetコマンドでスクリプトを実行する必要があります。

問題 1: SNMPGETコマンドを使用すると、スクリプトが実行され、応答が (内部的に) 一杯になります (1 KB 以上) が、この応答をファイルに保存した後、行を取得する while ループでecho $lineを実行しています私の期待どおり、データ全体が表示されるはずです(ただし、1 KBのデータしか取得できません)

問題 2: 問題 1 を解決するために、1 つの OID(スクリプト) からファイル全体のデータを取得したような新しい設計を採用します。既存のデータとデータを更新します。このように、snmpwalk を使用して異なる OID を使用して 2 番目のスクリプトを複数回実行するので、すべてのレコードを取得します。 2 KB のデータを削除しているため、この理由で質問を投稿しました (1 つの snmpwalk コマンドで 2 回の乱数)。

これで問題が理解できたと思いますが、さらに詳細が必要な場合は説明します。

4

1 に答える 1

0

snmpwalk コマンドは、サブツリーに返されるものがある限り繰り返される snmpgetnext コマンドで構成されます。その場合、1 回の snmpwalk 呼び出しの後に 2 つの getnext 要求が送信され、取得するデータがこれ以上ないことを確認していると思います。確かに、tcpdump またはいくつかの Wireshark ソリューションを使用してトラフィックをスニファしてください。ところで。-t10 が正しいタイムアウトであると確信していますか? 再送信を避けるために、明示的な繰り返しオプションを 0 に設定します (-r0 オプション)。

あなたがしようとしているのは、上記の OID で snmp get/getnext 要求を実行してスクリプトを実行し、その出力を SNMP 応答として返すことです。1 KB の問題は別の原因によるものだと思います。大きな応答を構築する際の SNMP エージェントの問題ではないようです。次の SNMPv1 コマンドを試してください (SNMPv3 にもアクセスできる場合はお知らせください):

snmpget -v1 -t25 -r0 -cprivate <IP> .1.3.6.1.4.1.99.1.53.1006

また

snmpgetnext -v1 -t25 -r0 -cprivate <IP> .1.3.6.1.4.1.99.1.53.1005

snmpgetnext 要求の OID の最後にある 1005 オクテットに注意してください。そのような OID は存在しない可能性があります。getnext は、1005 の後に既存の OID が最初であるため、1006 に正しくアクセスする必要があります。

于 2012-12-19T12:19:30.020 に答える