IX2010のNAPTを取得

SNMPではNATPセッション数を取得出来ないので、
サーバから自動でTelnetして取得して
MRTGで表示する方法を考えてみました。

ルータ
・IX2010、2015

サーバ
・Scientific Linux、Debian/Ubuntu
・MRTG
・telnet
・expect
・tr

特に必要なのは、
telnet」「expect」です。


必要な物をインストール。

# yum install expect tenet
# apt-get install expect tenet

これだけ。

まずは、
自動でtelnetして値を取得するスクリプトを作ります。
・IXのIP・・・192.168.255.1
・IXのホスト名・・・IX2010
・IXのユーザ名・・・mrtguser
・IXのパスワード・・・mrtgpass
・ログ・・・/tmp/napt/log.txt(必要であれば)

IXのユーザ権限は「Monitor」でOKです。

取得スクリプトの中身

# vi natp.sh

#!/bin/sh

expect -c "
log_file -noappend /tmp/napt/log.txt
set timeout 10
spawn telnet 192.168.255.1
expect login: \ ; send \"mrtg\r\"
expect Password: \ ; send \"mrtg@neko6\r\"
expect IX2010% \ ; send \"show ip napt translation\r\"
expect  Codes \ ; send \"q\r\"
expect IX2010% \ ; send \"exit\r\"
"

これでOKなはず。
show ip napt translation」してすぐ、「q」しています。

オプション等
-noappend・・・ログ追記しない(今回はデバグ用で書いているだけです)
set timeout・・・タイムアウト時間
spawn・・・サーバでの実行プログラムを書く(SSHとか)

書き方は基本的に
「expect 表示文字列 \ ; send \”入力文字\r\”」
とすれば「表示文字列」が現れたら「入力文字」を送りつけます。

実行してみます。

# ./natp.sh

Connected to 192.168.255.1.
Escape character is '^]'.


login: mrtguser
Password: 
NEC Portable Internetwork Core Operating System Software
Copyright Notices:
Copyright (c) 2001-2007 NEC Infrontia All Rights Reserved.
Copyright (c) 1985-1998 OpenROUTE Networks, Inc.
Copyright (c) 1984-1987, 1989 J. Noel Chiappa.
IX2010% show ip napt translation
Interface: FastEthernet0/0.1
NAPT Cache - 5737 entry, 14263 free, 12878 peak, 30205093 create, 0 overflow
Codes: A - ALG, S - Static, Service

こんな感じで取得できます。

あとは、MRTGで取り込めるように、
別スクリプトを作ります。

# vi napt-cont.sh

#!/bin/sh

LANG=C
export LANG 
cont=`/etc/mrtg/napt.sh| grep NAPT | cut -d " " -f4,6|tr " " "\n"`
uptime=`snmpwalk -v 1 -c public 192.168.255.1 .1.3.6.1.2.1.1.3| cut -d " " -f5-`
host=`snmpwalk -v 1 -c public 192.168.255.1 .1.3.6.1.2.1.1.5| awk '{ print $4 }'`

echo "$cont"
echo "$uptime"
echo "$host"

以外にも、Uptimeとホスト名が必要なので、
これは、snmpwalkを使用しています。
(なくても動きますw)

実行してみる。

# ./napt-cont.sh 
5764
14235
22 days, 18:43:59.08
IX2010

うまく取得出来ています。

あとは、mrtg.cfgに追記します。

# vi mrtg.cfg

Target[192.168.255.1_napt]: `/etc/mrtg/napt-cont.sh`
SetEnv[192.168.255.1_napt]: MRTG_INT_IP="" MRTG_INT_DESCR="NAPT"
Options[192.168.255.1_napt]: gauge, nopercent, growright
MaxBytes[192.168.255.1_napt]: 20000
YLegend[192.168.255.1_napt]: NAPT
ShortLegend[192.168.255.1_napt]:  
LegendI[192.168.255.1_napt]: entry
LegendO[192.168.255.1_napt]: free
Title[192.168.255.1_napt]: NAPT entry  -- IX2010
PageTop[192.168.255.1_napt]: <h1>NAPT entry -- IX2010</h1>
 <TABLE>
  <TR><TD>System:</TD>  <TD>IX2010</TD></TR>
  <TR><TD>Description:</TD>     <TD>NAPT</TD></TR>
 </TABLE>

こんな感じ。

もしくは
napt-cont.shを使わずに、

Target[192.168.255.1_napt]: `/etc/mrtg/napt.sh| grep NAPT | cut -d " " -f4,6|tr " " "\n"&&snmpwalk -v 1 -c public 192.168.1.1 .1.3.6.1.2.1.1.3| cut -d " " -f5-&&snmpwalk -v 1 -c public 192.168.1.1 .1.3.6.1.2.1.1.5| awk '{ print $4 }'`

と一行で書いてもOKです。

あとはIndex.htmlを再作成します。

indexmaker /etc/mrtg/mrtg.cfg >/var/www/mrtg/index.html

これでMRTGでがグラフ化できます。

間違い等ありましたら、ご指摘下さい。
多分、もっといい方法があるはず。。。

[tegaki]どうだろう・・[/tegaki]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Enter code * Time limit is exhausted. Please reload CAPTCHA.

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください