2015年1月5日月曜日

コマンドラインのRSSリーダーが無かったのでPerlで書いてみた

でこぴんぐです。

回線、クラウドサービスなどの障害、メンテナンス情報など
何かと重宝するRSS!

しかし、都度確認するのは面倒、、、
っという事でコマンドラインでRSSを受信しテキストに保存を行う、
Perlのツールを作ってみました!!

出力したテキストを監視ツールでテキスト監視をすると、
事件発生時に自動的に連絡が届きます。




では、早速中身ですが、

作りとしては、Perlのライブラリで
XML::TreePPとXML::FeedPPを使って、RSSを読み取り

YAML::Tinyを使って、最後に取得したRSSアイテムを
ハッシュ値として保存します。

また、汎用的なRSSリーダーとなるように、
収集するRSSアドレスなどは引数として扱ってみました。

では、実際にJVN iPediaのインシデント情報を取得すると
<<JVN iPediaの取得サンプル>>


では、実行手順ですが、
まずは、rss_jvnipedia.plを実行!!!


すると同じディレクトリに必要なファイルが勝手に作成され、RSSの取得に励みます。

# 実行例:perl 'rss_jvnipedia.pl' ipedia http://jvndb.jvn.jp/ja/rss/jvndb.rdf jvn_ipedia.log info
# 実行内容
# <実行ファイル> [引数1] [引数2] [引数3] [引数4]
# 引数1:サービス名(後から検索でき易くする名前)
# 引数2:収集URL(RSSを収集するURL)
# 引数3:出力ファイル(出力ファイルのパス)
# 引数4:ハッシュ配列名(ハッシュ値を保存する名前)



実際に取得した内容としては、↓こんな感じで出力されます。
---
[title]: GNU bash における任意のコマンドを実行される脆弱性
[desc]: GNU bash は、環境変数の値の関数定義を適切に解析しないため、任意のコマンドを実行される脆弱性が存在します。

本脆弱性は、CVE-2014-6271、CVE-2014-7169、および CVE-2014-6277 に対する修正が不十分だったことによる脆弱性です。
[severity:score]: High : 10.0
[vector]: (AV:N/AC:L/Au:N/C:C/I:C/A:C)
[identifier]: JVNDB-2014-004476
[link]: http://jvndb.jvn.jp/ja/contents/2014/JVNDB-2014-004476.html
[pubData]: 2014-10-01T13:40+09:00
[lastData]: 2014-12-26T10:00+09:00
---

で、Zabbixで監視すると↓のような画面となります。



サンプルとしてIPAから配信されているJVN iPediaを取得するスクリプトとしていますので、
実際に使ってみる場合は、取得先のRSS形式に合わせて、
RSSアイテムをカスタマイズする必要はありますよ。


では今回使用したPerlでRSSを取得するサンプルコードです。
RSS取得サンプルコード
<<JVN iPediaの取得サンプル>>

Cron用のバッチシェル
<<実行シェルのサンプル>>


ちょっと説明が不十分かも知れませんが、
気になった方は「JVN iPediaの取得サンプル」をご覧ください。

ではでは。

0 件のコメント:

コメントを投稿