タイトルのままです。
あるサーバ①で特定のスクリプトを実行した結果を他のサーバ②で取得します。
サーバ①の設定
SNMPで返値を見る為のスクリプトを書いておきます。
今回は、pingでサーバ②との通信レイテンシ(ミリ秒)を計るスクリプトにしました。
1 2 3 4 5 6 7 |
# mkdir /script # vi /script/ping-sec-count.sh -----スクリプト中身----- #! /bin/sh ping -c 1 -w 10 52.197.***.*** | awk -F '[= ]' 'NR==2{print $10}' ------------------------ # chmod +x /script/ping-sec-count.sh |
SNMPエージェントをインストール。
1 |
# yum install net-snmp |
下記のように設定ファイルに追記します。
1 2 3 4 5 6 7 |
# vi /etc/snmp/snmpd.conf -----下記を追記----- # サーバ②のIPアドレスを記載 rocommunity monitor 52.197.***.***/32 # 返値を見たいスクリプトを記載 extend ping-sec-count /script/ping-sec-count.sh |
上部の記述の意味としては、情報を取得するだけ(read-only=ro)の、
52.197.×××.×××/32からのアクセスを許可する、
「monitor」という名前のcommunity(グループ)を定義しています。
スクリプト行の「ping-sec-count」に関しては後ほど分かります。
snmpdを起動します。
1 |
# /etc/init.d/snmpd start |
サーバ②の設定
snmpwalkコマンドが使えるよう、下記インストールを実施。
1 |
# yum install net-snmp-utils |
サーバ①のIPアドレスを指定して、スクリプトの返値を見てみます。
1 |
# snmpwalk -v 1 -c monitor 52.193.***.*** nsExtendOutputFull |
「-v 1」はSNMPバージョン1を表します。
バージョン1の認証方法は「コミュニティ名」なので、
「-c monitor」とすることで認証が通り、情報を取得できるようになります。
「nsExtendOutputFull」は取得する情報(スクリプトの返値)を指定しています。
1 2 |
[コマンド実行結果] NET-SNMP-EXTEND-MIB::nsExtendOutputFull."ping-sec-count" = STRING: <strong><span style="color: #ffff00">0.446</span></strong> |
スクリプトの返値が表示されました!
サーバ①のsnmpd.confで書いた「ping-sec-count」も、ここに表示されています。
Exec format error
私がちょっとはまったエラーです。
サーバ②でsnmpwalkを実行すると「Exec format error」と表示されてしまいます。
1 2 |
# snmpwalk -v 1 -c monitor 52.193.***.*** nsExtendOutputFull NET-SNMP-EXTEND-MIB::nsExtendOutputFull."ping-sec-count" = STRING: /script/ping-sec-count.sh: <span style="color: #ffff00"><strong>Exec format error</strong></span> |
サーバ①側のスクリプト先頭にシバン(#! /bin/sh)を記載すると直りました。
ちゃんと書いてるよ!と思っても、案外「!」が抜けてたりして。
その他
全体的な情報取得
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# snmpwalk -v 1 -c monitor 52.193.***.*** <strong><span style="color: #ffff00">nsExtendObject</span></strong> NET-SNMP-EXTEND-MIB::nsExtendNumEntries.0 = INTEGER: 1 NET-SNMP-EXTEND-MIB::nsExtendCommand."ping-sec-count" = STRING: /script/ping-sec-count.sh NET-SNMP-EXTEND-MIB::nsExtendArgs."ping-sec-count" = STRING: NET-SNMP-EXTEND-MIB::nsExtendInput."ping-sec-count" = STRING: NET-SNMP-EXTEND-MIB::nsExtendCacheTime."ping-sec-count" = INTEGER: 5 NET-SNMP-EXTEND-MIB::nsExtendExecType."ping-sec-count" = INTEGER: exec(1) NET-SNMP-EXTEND-MIB::nsExtendRunType."ping-sec-count" = INTEGER: run-on-read(1) NET-SNMP-EXTEND-MIB::nsExtendStorage."ping-sec-count" = INTEGER: permanent(4) NET-SNMP-EXTEND-MIB::nsExtendStatus."ping-sec-count" = INTEGER: active(1) NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."ping-sec-count" = STRING: 0.377 NET-SNMP-EXTEND-MIB::nsExtendOutputFull."ping-sec-count" = STRING: 0.377 <em><strong>←今回取得した値</strong></em> NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."ping-sec-count" = INTEGER: 1 NET-SNMP-EXTEND-MIB::nsExtendResult."ping-sec-count" = INTEGER: 0 NET-SNMP-EXTEND-MIB::nsExtendOutLine."ping-sec-count".1 = STRING: 0.377 |
MIBを含めた全体的な情報を取得
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# snmpwalk -v 1 -c monitor 52.193.***.*** nsExtendObject <span style="color: #ffff00"><strong>-On</strong></span> .1.3.6.1.4.1.8072.1.3.2.1.0 = INTEGER: 1 .1.3.6.1.4.1.8072.1.3.2.2.1.2.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = STRING: /script/ping-sec-count.sh .1.3.6.1.4.1.8072.1.3.2.2.1.3.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = STRING: .1.3.6.1.4.1.8072.1.3.2.2.1.4.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = STRING: .1.3.6.1.4.1.8072.1.3.2.2.1.5.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = INTEGER: 5 .1.3.6.1.4.1.8072.1.3.2.2.1.6.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = INTEGER: exec(1) .1.3.6.1.4.1.8072.1.3.2.2.1.7.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = INTEGER: run-on-read(1) .1.3.6.1.4.1.8072.1.3.2.2.1.20.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = INTEGER: permanent(4) .1.3.6.1.4.1.8072.1.3.2.2.1.21.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = INTEGER: active(1) .1.3.6.1.4.1.8072.1.3.2.3.1.1.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = STRING: 0.339 .1.3.6.1.4.1.8072.1.3.2.3.1.2.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = STRING: 0.339 <em><strong>←今回取得した値</strong></em> .1.3.6.1.4.1.8072.1.3.2.3.1.3.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = INTEGER: 1 .1.3.6.1.4.1.8072.1.3.2.3.1.4.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116 = INTEGER: 0 .1.3.6.1.4.1.8072.1.3.2.4.1.2.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116.1 = STRING: 0.339 |
MIBを指定してスクリプトの返値を取得
1 2 |
# snmpwalk -v 1 -c monitor 52.193.***.*** <span style="color: #ffff00"><strong>.1.3.6.1.4.1.8072.1.3.2.3.1.2.14.112.105.110.103.45.115.101.99.45.99.111.117.110.116</strong></span> NET-SNMP-EXTEND-MIB::nsExtendOutputFull."ping-sec-count" = STRING: 0.368 |
投稿者プロフィール
- 2015年8月入社。弊社はインフラ屋ですが、アプリも作ってみたいです。