Net-SNMPのPerlモジュールでTrap送信
- Net-SNMP ver5.2.2を使用してVineLinuxでTrap送信を行うためのPerlスクリプトを作成しています。
- 現在、SNMPv2cのTrapをポストすることが目的ですが、送信されるTrapのバージョンはv1となってしまいます。
- また、oid部分の変更やパラメータの無しに変更しても、送信されるTrap内容には変化がありません。
- ベストアンサー
Net-SNMPのPerlモジュールでTrap送信
現在VineLinuxにNet-SNMP ver5.2.2を インストールした環境で Trapを送信するPerlスクリプトを作成しております。 やりたいことは、マネージャに対し SNMPv2cのTrapをポストすることです。 # 現段階ではSNMPv2であればどのようなTrap # でも構いません。 net-snmp-5.2.2/perl/SNMP/README の内容にならって、下記のようなスクリプトを 作成しました(一部を抜粋)。 ------- スクリプト Start ------- 《 省 略 》 # TrapSessionオブジェクトを生成 $sess = new SNMP::TrapSession(DestHost=>$host, Community=>$comm); # Trap送信 $sess->trap(oid => 'snmpRisingAlarm', uptime => 1234, [[ifIndex, 1, 1], [sysLocation, 0, "here"]]); 《 省 略 》 ------- スクリプト End ------- READMEによると上記フォーマットは v2のものとなるはずですが、 本処理によって送信されるTrapのバージョンは v1となってしまいます。 また、oid部分を変更しても 送信するTrap内容の変化はなく、さらに $sess->trap(); とパラメータ無しに変更しても 同じ内容のTrapが送信されているようです...。 全てにおいて勉強不足状態での質問で 大変恐縮ではありますが、 御存じの方がいらっしゃいましたら、 ご教授お願い致します。
- ch09
- お礼率100% (7/7)
- Perl
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
まず、SNMPが何かもわからない素人であることを先に述べておきますが:-) READMEを見ると、 Version - default '1', [2 (same as 2c), 2c, 3] という項目があります。ので、TrapSessionでVersion => 2 を渡すと解決しないでしょうか。 また、以下のCPANモジュールもあるようです。 http://search.cpan.org/~dtown/Net-SNMP-5.2.0/
関連するQ&A
- Net-Snmpのtraphandleよりshell起動
【環境】RedHat Linux as 3 【現在】 Net-SnmpのTrapHandleを取得し 標準入力から受けた情報をファイルに出力する処理を作成中です。 出力するファイル名を現在時刻にしたいのですが シェルを実行してもファイルが出力されません。 Perl初心者で手探りで調査していますが煮詰まってしまいました。 すみませんがご教示願います。 【処理内容】 ・snmptrapd.conf traphandle default /root/bin/trap.sh ・trap.sh #!/usr/bin/perl @tim = localtime(time); $tim[5] += 1900; $tim[4] += 1; for($idx=0;$idx<5;$idx++){ $tim[$idx] = sprintf("%02d",$tim[$idx]); } while (<STDING>) { $buf. = $_; } open (FILE,">>/tmp/$T[5]$T[4]$T[3].txt"); print FILE $buf; print FILE "--------\n"; close(FILE);
- ベストアンサー
- Perl
- BlatJ:フォームを使ったメール送信-
ほんとにホトホト困っています。 どなたか教えていただけますか? ======== Perlでアンケートフォームを作り、その内容をメール送信しようと思っているのですが、NTサーバーに"Sendmail"機能が無いので、フリーソフトの"BlatJ"というものを入れてみたのですが、以下の疑問点があります。 1.コマンドラインからのインストールがうまくいってない?。 Readmeファイルの通りしたのですが、テスト用メール送信CGIさえうまくいかないのでインストールで失敗しているかもしれません。インストールが成功しているかどうか確認する方法はないですか? 2.メールの送信方法として"BlatJ ファイル名 -t送信先アドレス"と書かれてあります。実際どのようにしてPerlに組み込むのでしょうか? どうぞよろしくお願いいたします。
- ベストアンサー
- Perl
- SNMPトラップについて
こんばんは。 JP1でCiscoなどネットワーク機器の監視を検討しています。 機器からのSNMPトラップで障害を検知したいと思っています。 そこで、SNMPトラップの設計をしたいのですが、 トラップ番号は機器ベンダーにより、異なるのでしょうか?。 ベンダー間で標準化されたトラップを使用したいと思っていましたが 機器ベンダーに調べる必要があるのでしょうか?。 アドバイスをお願いします。
- 締切済み
- その他(ITシステム運用・管理)
- PerlでSMTP-AUTH認証をする
現在、さくらのレンタルサーバにてperlスクリプトを稼動しています。 今回、さくらのレンタルサーバのメール認証がPOP before SMTPからSMTP認証(SMTP-AUTH)に変更になりましたので、perlスクリプト内で自動メール送信させるのにNet::SMTP::TLSモジュールを利用することにしました。そこで (1)SMTPサーバー名、ポート番号、ユーザー名、パスワードを設定する (2)宛先などの必要な設定をする (3)メール内容を設定する (4)メールヘッダを設定する (5)メールを送信する という流れで現在perlスクリプトを以下のように記述しました。 #!/usr/bin/perl use CGI::Carp qw(fatalsToBrowser); use Net::SMTP::TLS; use Authen::SASL; my $smtp = Net::SMTP::TLS->new($mailhost, Port => $mailport, User => $mail_username, Password => $mail_password ); $smtp->mail($from_mail); $smtp->to($tomail); $smtp->data(); $smtp->datasend($header); $smtp->datasend($message); $smtp->dataend(); $smtp->quit; 変数の値は割愛していますが、 上記のスクリプトは、POP before SMTPの時は問題なくメール送信できたのですが、サーバのメール認証がSMTP認証(SMTP-AUTH)に変更になってからは以下のようなエラーが出ます。 invalid SSL_version specified at /usr/local/perl/5.8/lib/perl5/site_perl/5.8/IO/Socket/SSL.pm line 418 何か間違いであるとか、他に必要な設定がありますでしょうか? 宜しくご教授お願いいたします。
- ベストアンサー
- Perl
- perlがうごきません
<html> <head> <title>form3</title> </head> <body> <form action="form3.cgi" method="post" name="form3"> <input type="text"name="form3"> <input type="submit"value="送信"> </form> </body> </html> ::::::::::::::::::::::::::::::: #! /usr/bin/perl if($ENV{"REQUEST_METHOD"} eq "GET"){ $str=$ENV{QUERY_STRING"}; }else{ read(STDIN, $str, $ENV{"CONTENT_LENGTH"}); } $str=~ tr/+/ /; $str=~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("c", hex($1))/eg; foreach(split(/&/, $str)){ my ($key, $value)=split(/=/, $_); $data{$key}=$value; } print "Content-type:text/html\n"; print "\n"; print "<html>\n"; print "<head><title>form3</title></head>\n"; print "<body>$data{'form3'}</body>\n"; print "</html>\n"; exit; :::::::::::::::::::::::::::::::: どうしてもうごきません。 どこかスクリプトがまちがっているのでしょうか。 パールのパスはあっています。
- ベストアンサー
- Perl
- Perlでの$ENV{REMOTE_ADD}の信ぴょう性を教えてくださ
Perlでの$ENV{REMOTE_ADD}の信ぴょう性を教えてください。 Perlによる、CGIサイトを運営しています。 IPアドレスを$ENV{REMOTE_ADD}で取得し、Firewall内プライベートアドレス(10.*.*.*)以外はloginをしないと内容が表示されないようにスクリプトをつくり、Firewallの内外から動作確認し、きちんと動いていたのでそのまま運用していました。 ところが、先日海外(ハワイ)に行った際、アップルストアでそのサイトにアクセスした際にloginなしで内容が表示されてしまいました。 アップルストアに置いてあったPCなので、IP偽装などは行っていないと思われますので、どうして見えるのだろうかわかりません。 $ENV{REMOTE_ADD}で取得した値は信ぴょう性がないのでしょうか?それとも、10.*.*.*はグローバルアドレスとして使用可能なのでしょうか?
- ベストアンサー
- Perl
- pp (Perl Packager) で requireの代わりになるもの
ActivePerl v5.8.7 をWin-2000で使っています。 オリジナルのスクリプト内で、これもオリジナルのモジュールをrequireしている場合に、 ppでexe形式に変換できるのですが、他のPCでコピーして使おうとしたときに、 ”require先のファイルが無い”とエラーになってしまいます。 これを回避する方法はないでしょうか? (requireの代わりに、該当箇所にモジュールファイルの内容すべてをペーストしてしまう、ということで一時凌ぎはできるのですが、何か違うような気がしています) よろしくお願いいたします。 ------------------------ #!perl require "c:\\perl\\sub\\userfunc.pm"; : : ------------------------ pp -o sample.exe sample.pl c:\perl\sub\userfunc.pm とやって、exeを作っています。 (c:\perl\sub\userfunc.pmを持たないPCで)実行すると、 C:\>sample.exe Can't locate c:\perl\sub\userfunc.pm in @INC (@INC contains: ・・・/inc CODE(0xdca6ac) . CODE( 0xdca7cc)) at script/sample.pl line 2.
- ベストアンサー
- Perl
- CiscoのスイッチでSNMPでモジュールダウンのTrapをあげたい
シスコのCatalyst6500でも4500でもモジュールタイプの機器ならなんでもいいのですが、モジュールが死んでしまった時にTrapをあげるよう設定したいです。 "snmp-server enable traps module"というコマンドがあるようですが、このコマンドでは何スロット目のモジュールが認識しなくなったのか分からないのでは?と思います。 そもそも認識しなくなったモジュールのTrapはあげることが出来るのでしょうか。出来るならどのような設定か教えていただきたいです。
- 締切済み
- その他(ITシステム運用・管理)
- PHPでSNMPトラップは受け取れる?
PHPでSNMPトラップは受け取れるのでしょうか? PHPには、いくつかのSNMPの関数があり、MIBの値などは取ってくれるのですが、トラップを受け取れるのかはよく分かりません。 よろしくお願いします。
- ベストアンサー
- PHP
お礼
ありがとうございます。 実は本件を書き込んだあと, TrapSessionにVersionのパラメータが あることに気づきを2を渡すようにしたのですが, 結果はTrap自体ポストすることが出来なくなりました; # ってことはこのモジュールはv1Trapしか # ポストできないのかと考え始めました 私はSNMPだけでなくperlについても素人で, 今まで開発はCでしか行ったことがありません...。 webサイトで色々みていたところ, use NET::SNMPと宣言するモジュールについては snmmpv2_trap()というメソッドが あるらしく,このモジュールを裏で探していたんです。 CPANってところで公開されていたんですね。 Perl自体やモジュールに関する知識が乏しいため 大変助かりました!! CPANのモジュールで試してみたいと思います!! APIのI/Fを調べるのに,また時間を費やしそうですが... 本当にありがとうございます。