less設定 

コマンドラインオプション
-xN
[TAB]幅を指定する。

$ less -x4


環境変数
LESS
値がlessへコマンドラインオプションとして渡される。

$ LESS="-x4"
$ export LESS


パターンマッチ内で.(ドット)を'.'と記述するには? 

perlのパターンマッチにて、OIDとかの様に.(ドット)を多数含む文字列を引っかけたい場合、.(ドット)を\(バックスラッシュ)でいちいちエスケープしなければなりません。

$oid =~ m/\.1\.3\.6\.1\.1$/;

ちょっと勘弁して欲しい感じ。なんかいい書き方ないかしら?

SNMPの一般トラップ 

SNMPの一般トラップ

trap番号OID意味 data binding
0 1.3.6.1.6.3.1.1.5.1 coldStart なし
1 1.3.6.1.6.3.1.1.5.2 warmStart なし
2 1.3.6.1.6.3.1.1.5.3 linkDown ifIndex
SNMPv2以降はifAdminStatusとifOperStatusが追加。
3 1.3.6.1.6.3.1.1.5.4 linkUp ifIndex
SNMPv2以降はifAdminStatusとifOperStatusが追加。
4 1.3.6.1.6.3.1.1.5.5 authenticationFailure
認証失敗
なし
5 1.3.6.1.6.3.1.1.5.6 epgNeighborLoss
EPG失敗
epgNeighAddr
6 1.3.6.1.4.1.エンタープライズ番号.固有トラップ番号 ベンダ固有トラップ ベンダ定義


トラップはsnmptrapdで受信できる。snmptrapdがトラップを受信した際に呼び出すスクリプトは/etc/snmp/snmptrapd.confのtranphandle業で指定する。

traphandle default /path/to/traphandle.pl

トラップを受信したsnmptrapdは、traphandleで指定したスクリプトの標準入力に対してトラップ情報を出力する。スクリプト側では標準入力から読み込んで動作すればよい。
snmptrapdが出力するのはこんな感じ。

router01
UDP: [192.168.1.1]:60201
.1.3.6.1.2.1.1.3.0 31:18:27:02.00
.1.3.6.1.6.3.1.1.4.1.0 .1.3.6.1.6.3.1.1.5.3
.1.3.6.1.2.1.2.2.1.1.3 3
.1.3.6.1.2.1.2.2.1.7.3 2
.1.3.6.1.2.1.2.2.1.8.3 3

1行目 送信元DNS名
2行目 トラップの送信プロトコル、送信元IPアドレス、送信元ポート番号
3行目 トラップ送信元のuptime
4行目 一般トラップOIDとベンダ固有トラップOID
5行目以降 varbind

SNMPトラップの送信


指示子説明使い方
i
INTEGER。整数
 
u
UNSIGNED。符号なし整数
 
c
COUNTER32。32bitカウンタ。
 
s
STRING。文字列。
 
x
HEX STRING。16進数文字列。
 
d
DECIMAL STRING。10進数文字列。
 
n
NULLOBJ。値のないオブジェクト?
 
o
OBJID。OID。
 
t
TIMETICKS。時刻。単位とかは?
 
a
IPADDRESS。IPアドレス。
 
b
BITS。2進数? ビットのバイナリ表現? 具体的にはどんなだ? コマンドでの指定方法とか?
 


コマンドsnmptrapでのトラップ送信例
SNMPv1の場合

snmptrap -v 1 -c COMMUNITY localhost 1.3.6.1.6.3.1.1.5.4 127.0.0.1 3 0 "" .1.3.6.1.2.1.2.2.1.1.0 i 1

SNMPv2の場合

snmptrap -v 2c -c COMMUNITY localhost "" .1.3.6.1.6.3.1.1.5.4 .1.3.6.1.2.1.2.2.1.1.0 i 1

ゴミ 

目が覚めてしまってこんな時間に記事を書いたりして。

最近知人2方向に呑みのお誘いを掛けたところ、片方からは音沙汰なしでがっくり。
「おらぁ、連絡位よこせや。」
とかって思いながらがっかり中。

とかって大したことではなくて、仕事がやりにくい環境で駄目駄目です。こっちの方が精神的に来ていますな。こんな時間に目が覚めた時にも、仕事のことを思い悩んでいましたし。いやいや自分は単なるサラリーマンですが、会社社長とかになると、心配事は山の様にあるんだろうなぁ。ご愁傷様です。性格が向いてないと絶対できないね、無責任でないと。

時間も金もそこそこ何とかなる自分の環境にちょっと感謝。

裸のreturn 

perlでreturnするときに、偽を返そうとして

return undef;


とやってしまうのは良くない。これは配列コンテキストで評価されると配列数1のリストとして扱われ、結局真値として評価される危険があるからということが理由。
では、

return();


の扱いはどうなるんだろう? いわゆる裸のreturnは

return;


と記述することだと理解しているのだけど、()の有無で何か変わることはあるのだろうか?