2012年06月01日

【CentOS6.2】「こら!root宛mailも見ろ!管理者はてめぇだろ!」

 日頃、NotePC上のCentOS6.2端末上ではsudo設定をした関係で、rootでのloginを全くしない。今回、自宅サーバ構築の準備でNotePC上でInstallをしていて上手くいかなかった関係で、たまたま、su - でrootになった。そうすると処理終了のタイミングで、rootにメールがあるよとの趣旨の懐かしいコンソール出力があった。

続きを読む
posted by Mire at 00:17 | Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2012年05月17日

【CentOS6.2】sudoで管理者間root Password共有を止める

 さて、前稿のLibreOfficeのinstallの説明では、Fedoraの類推で判るだろうと逃げてしまったが、改めて探して試ると、とっくに、このBlogの何処かに書いていてもおかしくないテーマなのだが見当たらない。仕方がないので、サーバ構築のタイミングと言うこともあり、本稿に独立して書き留め置くことにした。

 sudo は、予め、ユーザID別に与える管理権限を定義して置くことで、自らのユーザIDのPasswordを使ってその範囲内で管理権限の処理を実行出来るコマンドで、ubuntu等は、これを本則にしているくらい一般的な仕組みである。
 sudo の引数で指定したコマンドは、次の様に「/var/log/secure」の「COMMAND=」以下にlogとして明記されるので、管理者がscriptコマンドでの記録を忘れても、誰のIDで何時、どんなコマンドが実行されたかは判るので、不慮の人為障害の原因を推測する手がかりや、不正アクセスの追跡の可能性をもたらしてくれる。
続きを読む
posted by Mire at 23:49 | Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2010年04月26日

【呟き】セキュアなWeb通信。SSL、個人認証、IP制御

 セキュアなWeb環境が個人情報を含む情報の送受信には不可欠である。今日はWeb通信上のセキュリティについての、当方の認識についてメモとして書き留めておく。

 経路での暗号化を図り情報漏洩に対処するのがSSLであるし、個人認証の主流はIDとその固有のパスワード管理に依存している。また公開Webでの利用は少ないこともあるだろうが、特定IP区画の接続やその拒否というIP制御も取り得る手法だろう。実際には、これらの組合せで、目的に合った安全性を確保するしかない。

続きを読む
posted by Mire at 00:40 | Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年12月01日

【CentOS5.4】Zope-2.12.1をeasy_installでInstall

 最近、ヘンテナにハマってPython系のシステムに掛ける時間が減ってしまった様だ。10日程前の「【CentOS5.4】各Pythonにeasy_installをInstall」では、元々、Zopeのインストールが目的でeasy_installのインストールを思い立った訳だが、Zope自体の為のインストールとしては使わない。まあ、やった後で、それに気付いた訳なので、もし、期待して試ている方がいたら、ご勘弁願いたい。
 何故かというと、Zopeをそのままインストールしようとすると他のPythonモジュールと同じく、/usr/local/lib/python2.6/site-packages以下にインストールされてしまい。python2.6をZopeに合わせたモジュール選定と設定をしなければならなくなり、他に素で使いたいアプリとの間で少なからず、摩擦を生じるからである。

 Zope2.12.xのインストールでは、それを回避し、Zope専用のPython実行環境を作成する為に、virtualenv をインストールし、virtualenv を使い、別のフォルダにそれを作成し、そこに、easy_installをインストール、それを使って、Zopeをインストールする手順を踏むことになる。

 従って、今後の新規インストールの手順は以下の様な感じになってしまう。
  1. Python2.6.xのインストール
    • ソースから /usr/local/lib/Python2.6 & /usr/local/bin/python2.6 にInstallする場合の手順は概ね次の通り
      script ~/20091101_Install_Python2.6.4.txt
      cd /usr/local/src
      wget http://www.python.org/ftp/python/2.6.4/Python-2.6.4.tgz
      tar xvzf Python-2.6.4.tgz
      cd Python-2.6.4
      ./configure
      make
      make install
      exit
      ※ src 内のファイルは実行自体には不要なので適宜整理してよい。PythonやZopeのインストールに当たっては、script を実行する等して、その実行ログを残して置くことをお勧めする。Windowsとは異なりLinuxの場合には、Python内の標準モジュールであっても、そのbuild時に必要なライブラリが揃っているとは限らないからだ。

  2. virtualenv をインストール

  3. zope 実行ユーザの作成
    ※セキュリティ上 実行ユーザをrootとは別のものにします。
  4. virtualenv 作成とZope2.12.1のインストール
    /home/zope/my_zope2にZope2.12.1をインストールする場合の実行例




    [root@l22dm ~]# su - zope
    [zope@l22dm ~]$ virtualenv --no-site-packages my_zope2
    New python executable in my_zope2/bin/python2.6
    Also creating executable in my_zope2/bin/python
    Installing setuptools............done.
    [zope@l22dm ~]$ cd my_zope2
    [zope@l22dm my_zope2]$ source bin/activate
    (my_zope2)[zope@l22dm my_zope2]$ ls
    bin include lib
    (my_zope2)[zope@l22dm my_zope2]$ bin/easy_install -i http://download.zope.org/Zope2/index/2.12.1 Zope2
    Searching for Zope2
    Reading http://download.zope.org/Zope2/index/2.12.1/Zope2/
    Best match: Zope2 2.12.1
    Downloading http://pypi.python.org/packages/source/Z/Zope2/Zope2-2.12.1.tar.gz
    Processing Zope2-2.12.1.tar.gz
    Running Zope2-2.12.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-2Vu8xl/Zope2-2.12.1/egg-dist-tmp-__i976
    src/AccessControl/cAccessControl.c:598: 警告: ‘intargfunc’ is deprecated
    src/AccessControl/cAccessControl.c:599: 警告: ‘intargfunc’ is deprecated
    src/AccessControl/cAccessControl.c:600: 警告: ‘intintargfunc’ is deprecated
    src/AccessControl/cAccessControl.c:606: 警告: ‘intargfunc’ is deprecated
    src/Record/_Record.c:340: 警告: ‘intargfunc’ is deprecated
    src/Record/_Record.c:341: 警告: ‘intargfunc’ is deprecated
    src/Record/_Record.c:342: 警告: ‘intintargfunc’ is deprecated
    Adding Zope2 2.12.1 to easy-install.pth file
    Installing runzope script to /home/zope/my_zope2/bin
    Installing zopectl script to /home/zope/my_zope2/bin
    Installing zpasswd script to /home/zope/my_zope2/bin
    Installing mkzeoinstance script to /home/zope/my_zope2/bin
    Installing mkzopeinstance script to /home/zope/my_zope2/bin

    Installed /home/zope/my_zope2/lib/python2.6/site-packages/Zope2-2.12.1-py2.6-linux-i686.egg
    Processing dependencies for Zope2
    <後略>
    ※ 詳細は未調査ながら、ご覧の通り、python2.6/object.hにあるintargfunc辺りで警告が出されている。警告レベルの場合様子見での利用し、不具合発生時に、それが原因でないかどうかをチェックすることになる。
  5. Zopeインスタンスを作成
    • /home/zope/Z2にZopeインスタンスを作成した場合の実行例は次の通り
       


      (my_zope2)[zope@l22dm my_zope2]$ bin/mkzopeinstance
      Please choose a directory in which you'd like to install
      Zope "instance home" files such as database files, configuration
      files, etc.

      Directory: ~/Z2
      Please choose a username and password for the initial user.
      These will be the credentials you use to initially manage
      your new Zope instance.

      Username: mire Zopeの管理画面にログインするIDを登録
      Password: <パスワード>
      Verify password: <パスワード>の再入力
      (my_zope2)[zope@l22dm my_zope2]$

  6. zope.conf編集で設定を変更
     最小限必要なものとしては、port番号の指定と文字コードの指定がある。設定例は次の通り
     


    rest-input-encoding utf-8
    rest-output-encoding utf-8
    rest-language-code ja
    port-base 12000
    default-zpublisher-encoding utf-8
    <http-server>
    # valid keys are "address" and "force-connection-close"
    address 8080
    </http-server>
    この設定の場合、utf-8で日本語を扱い、http://localhost:20080/でアクセスが可能になる。
  7. /home/zope/my_zope2/lib/python2.6/site-packages/sitecustomize.pyを追加し、利用文字コードをUTF-8に
         /home/zope/my_zope2/lib/python2.6/site-packages/sitecustomize.py


    import sys
    sys.setdefaultencoding('UTF-8')

  8. Zopeの起動
     結構これだけ書くだけでも骨が折れるもんだな。で、取敢えず、手動での起動テストするには
     


    (my_zope2)[zope@l22dm Z2]$ bin/zopectl start
    . .
    daemon process started, pid=20417
    (my_zope2)[zope@l22dm Z2]$ ps
    PID TTY TIME CMD
    19851 pts/3 00:00:00 bash
    20424 pts/3 00:00:00 ps
    (my_zope2)[zope@l22dm Z2]$ bin/zopectl stop …停止するとき

    daemon process stopped
    (my_zope2)[zope@l22dm Z2]$

  9. Zope管理画面にログイン
     起動して試たなら、管理画面にログインし、管理者IDを追加して置く事をお勧めします。後日だと、インストール時に設定したIDとパスワードを忘れてしまい、パスワードレスキューが必要になる。
タグ:Zope CentOS Linux
posted by Mire at 21:02 | Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年11月09日

【Windows Update】特定のものを除外 〜 まだIE8は嫌なのよぉ!!

 これ迄、毎日聞いてくるIE8へのUpdateを逐次、チェックを外し拒否し続けていたが、面倒になった。かと言って、Windows Updateを止めるのも嫌なので、個別に止める方法がないかと思い、Windows Updateの「インストールする更新プログラムの選択」のリスト上で右クリックして試た。
 すると意味不明な「更新プログラムの非表示(H)」というオプションが表示される。試しにこれを選択すると、表示が薄くなり、Windows Updateの窓を一度閉じた後は、リストに表示されなくなった。どうも、Windows Updateの「非表示の更新プログラムの再表示」と対になって更新リストへの掲載、非掲載という意味の日本語訳が、直訳で表示非表示さされているのであろう。Vistaユーザの視点から見ると、「さもありなむ」で、ユーザ視点の設計からは程遠い和訳ということだ。

 念の為、「更新プログラムの非表示」でググってみると更新対象からの除外の効果がある様なので、幸いIE7はまだセキュリティ対策の対象の様だし、IE8のユーザが増える迄、このまま放置する。
posted by Mire at 01:53 | Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年10月28日

【ApacheのCGI設定】あれ? 〜.cgiが使えないぞ

 ちょい使いには、Pythonの3行サーバでも充分だが、常時汎用で利用するなら、Apacheでしょう。
 ということで、Apache2.2で、CGI実行をさせるべく設定と思いhttpd.confを変更し再起動したが、上手く行かない。はい、はまりました。

はまりポイント1: VistaでのProgram Files内のファイル編集は「管理者として実行」せよ

 前もはまったものに、またはまりました。Vistaでは、普通に起動したエディタで編集して保存してもRoaming内にその編集が書かれるだけで、ファイル本体にその編集が反映されることはない。システム設計としてセキュリティ書込み拒否なら判るが受け入れた振りで済ませる辺りが何とも思想が理解出来ないが、MS仕様なので文句言っても仕方ないのだろう。
 皆様もお気をつけあれ。

はまりポイント2: 「#AddHandler cgi-script .cgi」のコメントアウトでは駄目だってよ

 これって、「<IfModule mime_module>」内の設定だからなのかな? Apache1.3系辺りではこれで良かった様な気がするのだが、どうも、個別Directoryに設定する必要が有る様だ。これは、Options の ExecCGIも同様に必要な様で結局以下の設定をすることで、ようやく〜.cgiの実行が可能になった。


  httpd.conf


<Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin">
AllowOverride None
#Options None
Options ExecCGI
AddHandler cgi-script .cgi
Order allow,deny
Allow from all
</Directory>

<Directory "D:/cgi-bin">
AllowOverride None
#Options None
Options ExecCGI
AddHandler cgi-script .cgi
Order allow,deny
Allow from all
</Directory>


 こちらの明示的に個別設定しないと動的コンテンツの実行が出来ないというのは、セキュリティ思想的に理解出来るので素直に受け入れることにする。続きを読む
タグ:httpd.conf CGI
posted by Mire at 05:47 | Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年10月15日

【PythonでCGI】FORMタグでGUI TOOL 〜 SPAM迷惑投稿を切刻む

 このブログでは過去、cgiを書く上で必須となるヘッダ/フッター部分の関数とCGI引数の取得とGET型のURL引数表記を助ける関数を紹介した。この稿では、より一般的にCGIっぽいformタグを使ったツールを紹介する。
 説明を簡単にする為、formには一つのtextareaタグにsubmitボタンを配置し、入力データの送受信共に同じcgiプログラムでの関数で受ける程度のもので、データ加工も簡単なものにさせてもらった。

 今日、紹介するものは、textareaのテキストを1文字毎半角空白文字を挿入したものを生成する他愛のないものだ。用途は、タイトルの通り「SPAM迷惑投稿」の被害状況は消すことなく、SPAM迷惑投稿者の目的である下手な鉄砲も数打ちゃ当たる式でのURLやキーワード検索向上を阻止するとこにある。このブログでいうと、国内からはH系、海外からは薬物系の「SPAM迷惑投稿」があるが、以前はハンドでこの作業を行なって来たが今後は、このツールで対応出来る訳だ。

 先ずはスクリーンショットからご覧頂こう。わざわざtSPAM迷惑投稿を宣伝したくないので、今回はテキストでなく、取敢えず読める程度の縮尺イメージにさせてもらった。SPAM迷惑投稿を貼付て、実行ボタンをクリック!!
 SPAM迷惑投稿を貼付て、実行ボタンをクリックすると、Firefoxの場合は(formタグに「target="_blank"」を設定しているので)別タブに以下の画面が表示される。テキスト欄の必要な文字列をコピーし、Blogのコメント管理画面に貼付けて書替
 テキスト欄の必要な文字列をコピーし、Blogのコメント管理画面に貼付けて書替て作業完了となる。

 さて、これからはいつもの通り<pre>タグによるテキスト情報なので、コピペでのソース取得が可能だ。尚、今回より、汎用関数は当方の共通モジュールとして「Lib/site-packages/mire」以下に配置し、それをimportさせたので、今回説明するフォーム表示&データ処理、そして、次稿で説明するCGIプログラムのdebugの為の処理が目立つ程度で、後は、多少__doc__や__copyright__等、他人の配布モジュールにあるglobal変数を追加したことくらいである。
 Web/cgi-bin/html4spam.py


#!c:/Python26/python
# -*- coding: UTF8 -*-
# ※ Windows の場合1行目はdummyです

u"""
#####################################################################
# SPAM COMMENT SPLITTER 0.0.0 (C) Mire 2009-10-15 #
#####################################################################
 blogを持っていると
怒り^^;;を込めて、SPAM迷惑投稿を切り刻みます。コピペで上書きすれば、
内容はそのままでも目的のURL linkは全てはずれレンダリングも消えます。
USEGE:
1.SPAM迷惑投稿をテキスト欄に貼付けボタンをクリックして下さい。
2.別窓または別タブで1文字毎の半角スペース区切りテキストが表示。
3.このスペース区切テキストのCopy&PaseteでSPAM迷惑投稿を置換え
"""

__author__ = "Mire in Japan"
__version__ = '0.0.0'
__copyright__ = 'Copyright (c) 2009 Mire'
__license__ = 'GPL'
__url__ = 'http://pythonlife.seesaa.net/'

debug = 0 #debugレベル


########################################
## 当Tool専用関数の定義contents()のみ ##
########################################
def contents(debug=1):
u"""
コンテンツ「入出力フォーム」を表示します
"""
try:
from mire.htm import display_err, cgi_params

print u'<table width="590px" style="background-color:#F0F0F0;"><tr>'
print u'<td><font size="-1"><b>怒り^^;;を込めSPAM迷惑投稿を切刻みます。\
コピペで上書きすれば内容はそのままでもURLのレンダリングは消えます。</b>\
</font></td></tr><tr><td><center>',

prms=cgi_params() #> mire.htm.cgi_params(): CGI引数情報の辞書を返します

if debug > 1: #debugレベル2: CGI引数の名前と値を表示します。
print '<pre align="left" style="text-align:center; white-space: pre-wrap;\
white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap;\
word-wrap: break-word; ">'
for p in prms:
print '%s: %s' % (p,prms[p])
print '</pre>'

if 'html_text' in prms: #cgi引数が存在したら、
html_text=unicode(prms['html_text']) # CGIの引数の値はunicode化が必要な様だ
ss=p=''
for s in html_text:
#unicodeはMultiBite文字も文字単位処理
if s=='\n' or s=='\r' or p=='\n' or p=='\r' or ss=='': #改行符号と頭の文字の
ss=ss+s #前後には空白文字を加えず
else: #そうでないなら
ss=ss+' '+s #空白文字を加える
p=s #直前の文字を代入
html_text=ss #html_textを置換え
else: #引数がないなら
html_text='' #0長文字列

#コンテンツ本体: table,form textarea,inputタグで入出力画面を表示
print u'<table><form method="post" target="_blank"><tr>'
print u'<td><textarea cols="88" rows="20" style="font-size:8pt;" name="html_text"',
print u'mire_val="html4blog_text(html_text)">%s</textarea></td>' % (html_text)
print u'</tr><tr><td><center>',
print u'<input type="submit" style="font-size:8pt; width:567px">',
print u'</center></td></tr></form></table></center></td></tr></table>'


except: #vividな作成部分はhtml
if debug > 0:
print '<span align="left">'
display_err(locals()) #>mire.htm.display_err() #用の例外処理で障害切分
print '</span>'
else: #運用中のdebug message表示はセキュリティ上不適格。通常はdebug=0で以下のmessage
print '<pre>Error was occured.\nPlease, contact your system administrators.\n'
print 'You? Do Your Best!\n Test html4spam.py with debug=2. Good luck.</pre>'


########################################
## ##
## 処理実行開始位置 ##
## ##
########################################
try:
from mire.htm import display_err, html_header, html_footer
html_header(charset='UTF-8', title=u'SPAM COMMENT SPLITTER (C) 2009 Mire GPL license'
, body=['style="right-margin:0px; background-color:#808080;"'])
contents(debug=debug)
html_footer()

except:
if debug > 0:
display_err(locals()) #こちらは最後の抑え
else: #運用中のdebug message表示はセキュリティ上不適格。通常はdebug=0で以下のmessage
print 'Content-type: text/html\n\n<html>\n<head></head><body>'
print '<pre>Error was occured.\nPlease, contact your system administrators.\n'
print 'You? Do Your Best!\n Test html4spam.py with debug=2.\n\nGood luck.</pre>'
print '</pre></body></html>'



 さて、ソースコード「html4spam.py」を早速眺め試よう。尚、今回説明する部分は太字にしておいた。先ずは「処理実行開始位置」のある下の方から見て行こう。

1. モジュールからの汎用関数のimport


 「from mire.htm import display_err, html_header, html_footer」では、「Lib/site-packages/mire/htm.py」に定義してある関数をimportして、Pythonの名前空間に登録し参照を可能にし、html_header()という記述で関数利用を可能にしているものだ。

2. CGIとしてのHTML文書を標準出力する


 既に標準化した関数で後述する「contents()関数」を挟んで、コンテンツを先ずは無難に表示させる様にしている。
html_header(charset='UTF-8', title=u'タイトル名', body=['style="right-margin:0px; background-color:#808080;"'])
contents(debug=debug)
html_footer()
 今回は取敢えず、スタイルシートは直書き、今風には使わない表示制御系のHTMLタグを多用したので、設定しなかったが、cssには「〜.css」といったスタイルシート定義ファイルを文字列リストとして複数設定出来る等、必要とされるほぼ全てのものがhtml_header()には網羅されている。
 ということで、今回のメインのお仕事は、実際に表示される中身を定義するcontents()関数を作るだけということになる。

3. CGI引数情報を取得する関数他をimport


 「from mire.htm import display_err, cgi_params」で、5行後にある「prms=cgi_params()」の1行でしWebブラウザとの間でCGIによるデータ受信が可能になる。直下のprint分は見栄えの為ごちゃごちゃしているが、「怒り^^;;を込めSPAM迷惑投稿を切刻みます。\
コピペで上書きすれば内容はそのままでもURLのレンダリングは消えます。」を表示したいだけだ。

4. テキスト欄の入力内容が引数「html_text」で返ってきたら「切刻み」


 引数「html_text」があったら、その中身を最初の1文字目と改行符号のある時を除き半角空白文字を挟んで行き、処理が終わったら、それ(ss)を「html_text」に代入し、そうでないなら「html_text」にゼロ長文字列を代入するという、このツール最大のお仕事をしているところだ。

5. 「コンテンツ本体」を表示


print u'<table><form method="post" target="_blank"><tr>'
ここで一番大切なところはこの行だ。
  1. formタグでmethodをpostに指定したことで、テキスト欄に思う存分の文字数を入れて実行出来る様になる。
  2. formタグでtargetを_blankにしたことで別窓(または別タブ)で開く様になる。
  3. action設定がないのでこの「html4spam.py」のurlがcgi通信を投げる相手は「html4spam.py」となる。


 これを前提に次の2行でtextareaタグとsubmitボタンを配置し、textareaタグ内には「html_text」の中身を表示させる様にしている。
print u'mire_val="html4blog_text(html_text)">%s</textarea></td>' % (html_text)
print u'<input type="submit" style="font-size:8pt; width:567px">',


 以上の仕組みで、テキスト欄に文字を入れてボタンをクリックすると、別窓または別タブの同じフォームに半角空白文字で切刻んだものが表示されることになる訳で、その動作を「SPAM迷惑投稿対策」に使うという付加価値を求め「SPAM COMMENT SPLITTER」と称しているのが、このツールの実体だ。


 最後になるが、このままでは、当方のmireパッケージがないので動かないので、以下に今回使ったモジュール内の関数4つを参考迄掲載して置く。
  Lib/site-packages/mire/htm.py


#!c:/Python26/python
# -*- coding: UTF8 -*-
# ※ Windows の場合1行目はdummyです

u"""
######################################################################
#01. html_header(charset, :html文書の開始タグ一式を標準出力します
# ,title,base :
# ,refresh :
# ,cache,robot:
# ,css,style :
# ,js,author :
# ,generator :
# ,keywords :
# ,description:
# ,body) :
#02. def html_footer() : html文書の終了タグ一式を標準出力
#03. url2str_list(url) : urlの示す文書を文字列リストで返します
#04. url2str(url,trim=0) : urlを文字列で返します。前後空白除去trim=1
#05. get_charset(s) : str文字列からmeta定義のcharsetを返します
#06. str2unicode(s,charset) : 文字列のunicode化を試みその文字列を返します
#07. cgi_params() : CGI引数を辞書化し返します
#08. param_lst(omit_params : 引数とその値をGET形式'引数名=値'文字列listを
# ,params_dic): 返す「url+'?'+'&'.join(<param_lst>)」で活用
#09. tag_encode(lines) : タグ文字のままHTML表示可能な文字列listに変換
#10.
#

"""
__author__ = "Mire in Japan"
__version__ = '0.0.0'
__copyright__ = 'Copyright (c) 2009 Mire'
__license__ = 'GPL'
__url__ = 'http://pythonlife.seesaa.net/'


def html_header0():
print 'Content-type: text/html\n'

## html文書の開始タグ一式を標準出力します
def html_header(charset='UTF-8',title='',base='',refresh=[],cache=0,robot=0
,css=['/css/default.css'],js=['/js/default.js'],author=''
,generator="Mire's Python CGI",keywords=[],description=[]
,style=[],body=[],h=1):
u"""
charset : 文字コード 'Shift_JIS','UTF-8','EUC-JP'等
title : HTMLヘッダタイトル 文字列指定
base : 相対URL表記のベースURL 文字列指定、無指定はcgiファイルの設置位置
、'/'はサーバroot
refresh : 指定秒後に自頁または指定頁へジャンプ [秒数] or [秒数,'ジャンプ先URL']
cache : cache期限を秒数で指定 整数、-1:期限なし、0:cacheなし
robot : 自動検索エンジンに表明 禁止:-1、了解:1
css : スタイルシートファイルをリストで指定 []:利用しない
style : 個別のスタイルをリストで指定 []:利用しない
js : JavaScriptファイル  をリストで指定 []:利用しない
author : 執筆者 文字列指定
generator : 作成エディタ 文字列指定
keywords : 検索エンジン用キーワードをリストで指定
description : 検索エンジン用文献説明をリストで指定
h : 'Content-type: text/html\n'の付加:h=1
"""
from time import time,gmtime,strftime
if h==1:
#print 'Content-type: text/html; charset=%s\n\n' % (charset)
print 'Content-type: text/html;\n\n'
print '<html>\n<head>'
if not base=='':
print '<base href="%s" target="_self">' % (base)
print '<meta http-equiv="Content-Type" content="text/html; charset=%s" />' % (charset)
if len(refresh)>0: # refresh秒のみが指定されたら、その間だけcasheする。
if len(refresh)==1 and cashe>refresh[0]:
cache=refresh[0]
if len(refresh)>1:
url='; url=%s' % (refresh[1])
else:
url=''
print '<meta http-equiv="refresh" content="%d%s">' % (reflesh[0],url)
print '<title >%s</title>' % (title) # ページタイトル
if cache==0:
print '<meta http-equiv="pragma" content="no-cache">'
elif cache>=1: #cache期限として現在時にcache秒を足した日時の"Sat, 31 Aug 2009 17:35:42 GMT"形式日時文字列
print strftime('<meta http-equiv="expires" content="%a, %d %b %Y %H:%M:%S GMT">',gmtime(time()+cache))
if len(author):
print '<meta name="author" content="%s">' % (author)
if not generator=='':
print '<meta name="generator" content="%s">' % (generator)
if len(description)>0: # description文書説明
print '<meta name="description" content="%s" />' % (','.join(description.sort()))
if len(keywords)>0: # キーワード
print '<meta name="keywords" content="%s" />' % (','.join(keywords.sort()))
if robot==1:
print '<meta name="robots" content="all">'
elif robot==-1:
print '<meta name="robots" content="noindex,nofollow">'
if len(js)>0: # JavaScript活用
print '<meta http-equiv="Content-Script-Type" content="text/javascript" />'
if len(css)>0: # StyleSheet活用
print '<meta http-equiv="Content-Style-Type" content="text/css" />'
for c in css: # css スタイルシートファイルリンク先 #
print '<link rel="stylesheet" href="%s" type="text/css" />' % (c)
for j in js: # javascriptファイルリンク先 #
print '<script type="text/javascript" src="%s"></script>' % (j)
if len(style)>0:
print '<style type="text/css">%s</style>' % (' '.join(style))
print '</head>'
print '<body %s>' % (' '.join(body))

## html文書の終了タグ一式を標準出力
def html_footer():
u"""
html文書の終了タグ一式を標準出力
"""
print '</body>\n</html>'


## CGI引数の辞書化 ##
def cgi_params():
u"""
## CGI引数の辞書化 ##
cgi.FieldStorage()で得られるcgi引数を辞書に収め返す
辞書構造とすることで修正が可能になる他、
必要な既存の引数を引継ぎインタラクティブにページを変化
させるときに便利。
【使い方】
下記の様に引数名を keys()で取得、順不同の為、必要より、
sort()の上、引数名を1つずつ取出し活用すると良い
param_dic = cgi_params()
keys = param_dic.keys()
for k in keys:
value = param_dic[k]
print k,value
"""
import cgi
form = cgi.FieldStorage()
params= {}
keys = form.keys()
for key in keys:
params[key]=form[key].value
return params


## エラー表示関数(コメント行文字化け対策+thread実行時のエラー情報表示の時系列混乱軽減) ##
waiting=0
def display_err(local, title = u'\n\n#### EXCEPTION ERROR ####'):
"""
##########################################################################################
#エラー表示関数(コメント行文字化け対策 + thread実行時のエラー情報表示の時系列混乱軽減) #
#USAGE: 第一引数に「locals()」を指定することで、処理時の変数値を表示します。 #
# waitingはthread実行時のエラー情報表示の時系列混乱軽減の為のWAIT処理です。 #
# waiting = 0 #
# def foo(): #
# global waiting #
# sleep(waiting) #
# try: #
# 処理 #
# waiting = 0 #
# except: #
# display_err(locals(),'<例外処理の場所を表すタイトル>')# locals()指定は必須 #
# waiting = 1 #
# foo() #
##########################################################################################
"""
import traceback
from time import sleep
print 'Content-type: text/html\n\n<html>\n<head>'
print '<body><pre>'
if local is None:
local =locals()
global waiting
frame0 = u'\n*******************************************************************************'
frame1 = u'*******************************************************************************\n\n'
errs = [frame0, title]
errs.append(u'%s' % (dsp_hex(traceback.format_exc()))) #> dsp_hex(s): コメント文字化け対策
sleep(waiting)
ls = local
keys = ls.keys()
errs.append(u'')
for key in keys: # display_err()関係の変数の表示を省く
# if not key in ['v', 'ls', 'keys', 'key', 'errs', 'txt', 'er', 'sleep']:
er = u'* %s: %s' % (repr(key).ljust(24),repr(ls[key]))
errs.append(er)
errs.append(frame1)
txt = u'\n'.join(errs)
print txt
print '</pre></body></html>'

## コメント文字化け対策 ##
def dsp_hex(s):
from re import search
charsets=['UTF-8','Shift_JIS','EUC-JP','iso-2022-jp'] # どれでもいいので、charsetで、
for charset in charsets: # unicode化し、コメント部分の
try: # 文字化けを防ぐ
return unicode(s,charset)
except:
print u'%sでは変換不能でした' % (charset)
pass
sss=u''
for ss in s: # 想定外のcharsetのときは16進数表記に
if (ord(ss)>=32 and ord(ss)<=126) or ss.isspace(): # Windowsにはcurses.ascii.isprint()が
sss=sss+ss # ないのでcurses/ascii.pyの中身を展開
else:
sss=sss+'\\'+hex(ord(ss))[2:].upper()
return sss
(※html4spam.pyで不要なものは省いている。)続きを読む
タグ:CGI Python
posted by Mire at 23:34 | Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年10月07日

NW死活監視用関数「pings()」をpythonモジュール「dpkt」で実現

 前稿では、popen()で、OSコマンドを呼出す形での死活監視実現であったが、その後、調べて試ると、windows (vista)でも有効なモジュールが見つかった。今回はそのモジュールとそのexamples中にあったpingコマンドを模したコードを芸もなく丸ごと拝借し、不要な標準出力をコメントの上必要となる応答の有無出力をreturnさせる様にして前稿のものに組み込んませてもらった。ライセンスは「New BSD License」とのことだ。

 尚、依然としてVistaでは、コマンドプロンプトを「管理者として実行」で起動したものでないと使えないので注意して欲しい。その場合とモジュールがない人様に例外処理として従来のpopen()で、OSコマンドを呼出すものが実行される様にはした。勿論、popen()でプロセスを呼出さない分CPU付加は低く軽快になるので「dpkt」の利用を推奨はする。

 但し、必要なモジュール「dpkt」は、現在dpkt-1.6が最新だが、少なくともPython2.6上では、そのままでは動作しないのでプロジェクトのsvnより「bgp.py」をとって来て置換えている。

 当方の環境では、waitは、popen()の場合には0.8秒程度が適当だったが、dpkt活用では、3秒辺りが最適の様だ。これは、dpktでのpingのweitは相手の応答時にしか効いていない様で、約3秒程の間、5〜6回程度who hasパケットを送り続ける為だ。どうも今回のthread利用ではping処理自体のwaitを実際にかかる秒数付近にした場合に効率的に処理が進む様だ。

 テストソースコードは以下の通り。(青色文字のところがdpktのexaplesにあるping.pyをコピーし、一部書き換えたもの)
/PyPRec/pings.py 〜 Test Code


#!c:/Python26/python
# -*- coding: UTF8 -*-
from datetime import datetime

import math, optparse, random, socket, sys, time
import dpkt

class Ping(object):
def __init__(self):
usage = '%prog [OPTIONS] '
self.op = optparse.OptionParser(usage=usage)
self.op.add_option('-c', dest='count', type='int', default=sys.maxint,
help='Total number of queries to send')
self.op.add_option('-i', dest='wait', type='float', default=1,
help='Specify packet interval timeout in seconds')

def gen_ping(self, opts):
pass
def open_sock(self, opts):
pass
def print_header(self, opts):
pass
def print_reply(self, opts, buf):
pass

def main(self, argv=None):
#if not argv:
# argv = sys.argv[1:]
opts, args = self.op.parse_args(argv)

if not args:
self.op.error('missing host')
elif len(args) > 1:
self.op.error('only one host may be specified')

host = args[0]
opts.ip = socket.gethostbyname(host)
sock = self.open_sock(opts)

sent = rcvd = rtt_max = rtt_sum = rtt_sumsq = 0
bm_tm = datetime.now()
rtt_max = 0.0
#rtt_min = 0xffff
rtt_min = 999999.0
try:
#self.print_header(opts)
for ping in self.gen_ping(opts):
try:
#start = time.time()
st=datetime.now()-bm_tm
start = ((st.days*24)*60)*60+st.seconds+st.microseconds*0.0000001
sock.send(ping)
buf = sock.recv(0xffff)
ct = datetime.now()-bm_tm
rtt = ((ct.days*24)*60)*60+ct.seconds+ct.microseconds*0.0000001 - start
if rtt < rtt_min: rtt_min = rtt
if rtt > rtt_max: rtt_max = rtt
rtt_sum += rtt
rtt_sumsq += rtt * rtt

#self.print_reply(opts, buf, rtt)
rcvd += 1
except socket.timeout:
pass
sent += 1
time.sleep(opts.wait)
except KeyboardInterrupt:
pass
#print '\n--- %s ping statistics ---' % opts.ip
#print '%d packets transmitted, %d packets received, %.1f%% packet loss' % \
# (sent, rcvd, (float(sent - rcvd) / sent) * 100)

rtt_avg = rtt_sum / sent
if rtt_min == 0xffff: rtt_min = 0
#print 'round-trip min/avg/max/std-dev = %.3f/%.3f/%.3f/%.3f ms' % \
# (rtt_min * 1000, rtt_avg * 1000, rtt_max * 1000,
# math.sqrt((rtt_sumsq / sent) - (rtt_avg * rtt_avg)) * 1000)
#print 'return', datetime.now()
return 1 + rcvd - sent #response


class ICMPPing(Ping):
def __init__(self):
Ping.__init__(self)
self.op.add_option('-p', dest='payload', type='string',
default='hello world!',
help='Echo payload string')

def open_sock(self, opts):
sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, 1)

sock.connect((opts.ip, 1))
sock.settimeout(opts.wait)
return sock

def gen_ping(self, opts):
for i in xrange(opts.count):
icmp = dpkt.icmp.ICMP(
type=8, data=dpkt.icmp.ICMP.Echo(id=random.randint(0, 0xffff),
seq=i, data=opts.payload))
yield str(icmp)

def print_header(self, opts):
#print 'PING %s: %d data bytes' % (opts.ip, len(opts.payload))
pass

def print_reply(self, opts, buf, rtt):
ip = dpkt.ip.IP(buf)
if sys.platform == 'darwin':
# XXX - work around raw socket bug on MacOS X
ip.data = ip.icmp = dpkt.icmp.ICMP(buf[20:])
ip.len = len(ip.data)
#print '%d bytes from %s: icmp_seq=%d ip_id=%d ttl=%d time=%.3f ms' % \
# (len(ip.icmp), opts.ip, ip.icmp.echo.seq, ip.id, ip.ttl,
# rtt * 1000)

def ping(ip,wait=0.1,debug=0):
from os import popen
from time import sleep
global PINGs
global PING0
global PING1
try:
argv = ['-i','%f' % (wait),'-c','1', ip]
p= ICMPPing()
nw=datetime.now()
response = p.main(argv=argv)
PINGs.append((ip,response,nw))
if response==1:
PING1.append((ip,1,nw))
elif response==0:
PING0.append((ip,0,nw))
if debug>2: print ip,response,datetime.now()

except:
ppi=popen('ping -n 1 -w 1 %s' % (ip))
lines = ppi.readlines()
for l in lines:
s=l.find('(')
e=l.find('%')
if s>0 and e>0:
loss=int(l[s+1:e])
print ip,int(l[s+1:e])
if loss==100:
i=0
while i<=3:
try:
PINGs.append((ip,0))
PING0.append((ip,0))
i=4
except ProgrammingError,err:
print '\a',err
i=i+1
sleep(0.01*i)
pass
elif loss==0:
i=0
while i<=3:
try:
PINGs.append((ip,1))
PING1.append((ip,1))
i=4
except ProgrammingError,err:
print '\a',err
i=i+1
sleep(0.01*i)


def arp_v_a():
from os import popen,environ
if environ['os'].upper()[:3]=='WIN':
ppi=popen('arp -v -a')
lines = ppi.readlines()
datas=[]
for l in lines:
s = l.strip().split()
if len(s)>=3:
ip=s[0]
mac=s[1]
if len(mac.split('-'))>=6 and not mac=='00-00-00-00-00-00':
print ip,mac
datas.append([ip,mac])
return datas
else:
#ここは、Mireの開発環境外対応を机上で考えた暫定版である
#Windows以外のOSでの処理は利用可能なpythonモジュールに置換えが推奨される。
ppi=popen('arp -v -a')
lines = ppi.readlines()
datas=[]
for l in lines:
s = l.strip().split()
if len(s)>=3:
ip=s[0]
mac=s[2]
if len(mac.split(':'))>=6 and not mac=='00:00:00:00:00:00':
print ip,mac
datas.append([ip,mac])
return datas


def pings(wait,debug=0):
from datetime import datetime
from thread import start_new_thread
from time import sleep
global PINGs
tm_s = datetime.today()
tm=tm_s
PINGs=[]
PING0=[]
PING1=[]
for i in xrange(254):
start_new_thread(ping,('192.168.0.%d' % (i+1),wait,debug,))
#sleep(0.08) # 「Unhandled exception in thread started by」除けお呪い
sleep(0.08) # 「Unhandled exception in thread started by」除けお呪い
tm_p=tm
tm = datetime.now()
if debug>0: print tm-tm_p
tm_e = datetime.now()
sleep(3.0) # 最後に実行したthreadが終了する最大マージン分待つ
while not len(PINGs)==254:
sleep(0.1)
print tm-tm_s
macs = arp_v_a()

return PINGs # grobal変数なのでreturnは不要と言えば不要かも


debug=3
wait=3.2
i=0
while i<5: #5は連続実行テスト回数
PINGs=[]
PING0=[]
PING1=[]
datas = pings(wait=wait,debug=debug)
for d in datas:
print d
i=i+1
arp_v_a()
続きを読む
posted by Mire at 11:31 | Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年10月04日

NW死活監視用関数「pings()」の制作

 死活監視には、前稿の様なsnmp問合せに失敗したときに本当に死んでいるのかを確認したい時のやり方と、今回紹介するNetworkに接続されている端末を調べたい場合がある。本日はそれがお題だ。
 前稿との差は、予め指定した監視対象端末に対しての問合せであったのに対し、今回は管理するLANネットワーク(サブネット)全体を対象にしていることだ。まあ、大企業や大学の様のLANでない限り、普通はCクラス程度のアドレス空間を上限と考えたとして、デフォゲを含めて頭とお尻の0と255を除いた254個IPを定期的にループチェックする訳だから、その所要時間をどれだけ縮めるとこが出来るかという対応が必要となる。
 もし、全稿の関数をそのまま使うのであれば、それだけで、1.5秒×254個=381秒と6分以上かかってしまうので、thread利用と死活確認をある程度簡便なものにして行くしかない。また、前稿では、thread処理内の処理はprint出力のみであった訳だか、実際のツールでは、これをデータとしてツール本体に返り値として戻してやる必要もある。

 今回は取敢えず、話を簡単にする為に、死活確認は「ping -n 1 -w 1 <IP Address>」の一つだけとし、一つ当たりの実行所要時間を0.5秒に節約して書いて試みた。

 threadから関数を呼んだ場合その返り値を受取ることが出来ない(様にみえる)。Pythonの場合、原則global変数は使わないで書くのが御作法だし、単純に関数内で呼出元にある変数名と同じ名前の変数を使っても思った様に振舞ってくれる訳ではない。そんな場合にはThread Freeなデータ渡しの手法して、データベースへの書出しに期待したくなる。

 今回、試しに sqlite3のメモリ上のDBに期待をかけたが、残念ながらsqlliteは今現在はthreadでconnectやcursorを渡して利用すること自体が出来ない様だった。また、当方にとってDBと言えばFIREBIRDなので、threadに何処迄対応可能かを見て試た。結論は想定通り、出来ないことはないが、例外処理での再処理だけでは解決出来ないことが、OSとサーバの種類(clasic / super)により発生する。今回もVistaとsupers\ serverとの組み合わせでは、kinterbasdb内で使っているcコードで出会い頭の対応不可能な事故も発生した。この辺りはLinuxでもマルチコアCPU利用でも起きたことなので今は諦めて別解を求めた方が賢いというものだろう。で、結局のところ、grobal変数を準備してそれに書き込ませることで解決させた。

 下記のソースコードでは、参考迄FIREBIRD書込み分も行頭に「##」でコメントにして掲載した。尚、今回使ったgrobal変数は、本来返り値としてのローカル変数の代わりに利用する訳なので、利用に当たり初期化させているし、thread内で使われているので、thread呼出ししている関数双方での利用以外はしない様にしなければ正常に機能しなくなる。
#!c:/Python26/python
# -*- coding: UTF8 -*-

##def ping(ip,conn,cur):
def ping(ip):
from os import popen
## from kinterbasdb import ProgrammingError
from time import sleep
global PINGs
ppi=popen('ping -n 1 -w 1 %s' % (ip))
lines = ppi.readlines()
for l in lines:
s=l.find('(')
e=l.find('%')
if s>0 and e>0:
loss=int(l[s+1:e])
print ip,int(l[s+1:e])
if loss==100:
i=0
while i<=3:
try:
## cur.execute("INSERT INTO PINGS (IP,LIVE)VALUES('%s',0);" % (ip))
PINGs.append((ip,0))
i=4
except ProgrammingError,err:
print '\a',err
i=i+1
sleep(0.01*i)
pass
elif loss==0:
i=0
while i<=3:
try:
## cur.execute("INSERT INTO PINGS (IP,LIVE)VALUES('%s',1);" % (ip))
PINGs.append((ip,1))
i=4
except ProgrammingError,err:
print '\a',err
i=i+1
sleep(0.01*i)
##【Firebird2が完全なthread freeではない現実】
##
##
## その1: 多分、カーソルが使用中で書き込めない場合
##
## Unhandled exception in thread started by
## 192.168.0.21Unhandled exception in thread started by
## Traceback (most recent call last):
##
## Traceback (most recent call last):
## File "alive_hosts.py", line 31, in ping
## File "alive_hosts.py", line 31, in ping
## cur.execute("INSERT INTO PINGS (IP,LIVE)VALUES('%s',1);" % (ip))
## kinterbasdb100.ProgrammingError:
## (0L, 'Invalid cursor state. The cursor must be open to perform this operation.')
## cur.execute("INSERT INTO PINGS (IP,LIVE)VALUES('%s',1);" % (ip))
## kinterbasdb.ProgrammingError: (0L,
## 'Invalid cursor state. The cursor must be open to perform this operation.')
## 0:00:00.096000
## 0:00:00.091000
##
##
##その2: 状況は判らないが、コンパイルモジュール側で障害が発生し停止する。次期メジャーバージョン待ち
##
## Assertion failed: ps != NULL, file c:\kinterbasdb\kinterbasdb-3.3.0\_kicore_xsqlda.c, line 147
##
## This application has requested the Runtime to terminate it in an unusual way.
## Please contact the application's support team for more information.
##
##


##def pings(conn=None, cur=None, dsn='', user='SYSDBA', password='masterkey',dialect=3):

def pings():
from datetime import datetime
from thread import start_new_thread
from time import sleep
## from kinterbasdb import connect
global PINGs
tm_s = datetime.today()
tm=tm_s
## if conn is None:
## conn = connect(dsn=dsn,user=user,password=password,dialect=dialect)
## cur = conn.cursor()
## cur.execute('DELETE FROM PINGS;')
PINGs=[]
for i in xrange(254):
## start_new_thread(ping,('192.168.0.%d' % (i+1),conn,cur,))
start_new_thread(ping,('192.168.0.%d' % (i+1),))
sleep(0.08) # 「Unhandled exception in thread started by」除けお呪い
tm_p=tm
tm = datetime.today()
print tm-tm_p
tm_e = datetime.today()
sleep(1.0) # 最後に実行したthreadが終了する最大マージン分待つ
while not len(PINGs)==254:
sleep(0.1)
## conn.commit()
## cur.execute('SELECT IP,LIVE FROM PINGS;')
## datas=cur.fetchall()
## cur.execute('DELETE FROM PINGS;')
## #conn.commit()
print tm-tm_s
## return datas
return PINGs # grobal変数なのでreturnは不要と言えば不要かも

def create_db(dsn='localhost:DUMMY',user='SYSDBA',password='masterkey',page_size=None):
from kinterbasdb import create_database
ds=dsn[len(dsn.split(':')[0]):]
sql="CREATE DATABASE '%s' USER '%s' PASSWORD '%s'" % (ds,user,password)
if not page_size is None:
sql=sql+'PAZE_SIZE %d' % (page_size)
conn=create_database(sql)
conn.commit()
conn.close()

def create_tbl(sql='',dsn='localhost:DUMMY',user='SYSDBA',password='masterkey'):
from kinterbasdb import connect
conn=connect(dsn=dsn,user=user,password=password)
cur=conn.cursor()
cur.execute(sql)
conn.commit()
conn.close()

def exists_db(dsn='', user='SYSDBA', password='masterkey'):
"""
#### 接続して試て、DBの存在を確認 ####
存在したら 1を返し、でなければ、0を返す
"""
from kinterbasdb import connect
try:
conn=connect(dsn=dsn,user=user,password=password)
conn.close()
#print 'EXISTS_DB'
return 1
except:
#print 'NOT EXISTS_DB'
return 0

def exists_tbl(table,conn=None,cur=None,dsn='', user='SYSDBA', password='masterkey'):
"""システムテーブル「RDB$RELATIONS」に接続し作成予定のテーブル名が
既存テーブルとダブってないか調査
"""
from kinterbasdb import connect
sql_exists="""SELECT RDB$RELATION_ID
FROM RDB$RELATIONS
WHERE RDB$RELATION_NAME='%s';""" % (table)
if conn==None:
try:
conn=connect(dsn=dsn,user=user,password=password)
cur=conn.cursor()
cur.execute(sql_exists)
if len(cur.fetchall())==0: # 存在しなかったら
return 0
else:
return 1
except:
return -1
finally:
conn.close() # 接続を閉じる。
else:
try:
cur.execute(sql_exists)
if len(cur.fetchall())==0: # 存在しなかったら
return 0
else:
return 1
except:
return -1
finally:
conn.close() # 接続を閉じる。


def init_db(dsn, user='SYSDBA', password='masterkey',dialect=3):
if not exists_db(dsn=dsn,user=user,password=password):
create_db(dsn=dsn,user=user,password=password)

def init_table(table,sql,conn=None,cur=None,dsn='', user='SYSDBA', password='masterkey',dialect=3):
from kinterbasdb import connect
if not exists_tbl(table,conn=None,cur=None,dsn=dsn,user=user,password=password):
create_tbl(sql=sql,dsn=dsn,user=user,password=password)

#telnet('192.168.0.23',80)
##dsn='localhost:K:\\PyPRec_Alive.fdb'
##user='SYSDBA'
##password='masterkey'
##dialect=3
##init_db(dsn=dsn,user=user,password=password)
##sql='CREATE TABLE PINGS(IP VARCHAR(16), LIVE INTEGER,PRIMARY KEY(IP));'
##init_table(table='PINGS', sql=sql, conn=None, cur=None, dsn=dsn, user=user, password=password)
##print pings(conn=None, cur=None, dsn=dsn, user=user, password=password, dialect=dialect)
i=0
while i<1000:
PINGs=[]
datas = pings()
for d in datas:
print d
i=i+1

 尚、このpings()関数はPyPRecでは、1分間隔での定時実行と全IP端末の記録を行なうことで、プロセス情報取得時の死活判断の補助情報として活用する。また、pings()の最後には「arp -a」を実行し、その捕捉情報も活用予定である。現時点では、残念ながらVISTA上なので、LINUX用のコーディングが出来ないので難しいが、ISC-DHCPD情報の活用や別サーバでの収集情報の相互活用等より精度の高い情報になる様にして行きたいと思っている。
posted by Mire at 05:17 | Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年10月03日

個別死活監視用関数「alive_host()」の制作

 監視端末に対するsnmp問合せに失敗したときに、その端末自体が、電源OFFや持出されてNetworkに居なくなっているのであれば、問合せはあきらめてその端末を飛ばして監視して行く必要がある。
 その為には監視端末の死活監視を出来るだけスマートに行いたいものである。ここで紹介する関数は残念ながら妥協の産物であり、取敢えずの産物であることを予めお断りしておく。

 仕組みとしては、次の3つをスマートにpythonコードで実行したいところだ。
1. 「arp -d <ip adress>」でarpテーブルから指定IPの情報の削除を試み。
2. 「ping -n 1 -w 1 <ip adress>」で「Who has <ip adress>」のBroadcastをさせ、ipを持ったNW-i/fに口を割らせる。
3. 「arp -a <ip adress>」で最後に該当するIPが、arpテーブルにがあるかどうかをチェックする。

 しかし、当方のWindowsVistaという開発環境は最悪で、arpをpythonで実現可能なAP_PACKETにWindows未対応な為、socketではシステムが(多分)書けない。従って、折角の「arprequest」が使えない。また、ping、icmp通信にも「pyip」があるが、VISTAではセキュリティで拒否されてしまう(2009-10-09誤解されそうなので追記:コマンドプロンプトを「管理者として実行(A)...」で起動しその中で使う限りでは問題なく動作する。ただ、pypiのサンプルping.pyは指定IPがいないとエラーとなる等多少手抜きだったことに加えその時の待ちが長いことを嫌い採用ししなかった。結論として、後述の「NW死活監視用関数「pings()」をpythonモジュール「dpkt」で実現」にある通り当方では「dpkt」を別用途で活用予定。これらは有るだけでも有難いのではあるが、欲を言わせてもらえるならpyipもdpktもドキュメントが殆どないのでサンプルコードを手かがりとして解析し使い始めるしかないのには閉口してしまう。packet通信に疎い当方程度の進歩のない厨房には敷居は高い。)。結局、3つ共、popenでコマンド実行することになった。とても残念な結果書いたテストコードが次のものだ。たかだか3つのコマンド実行ながら、Cクラス256区画のスキャンでは6分以上もかかるので、試しにthread実行させて試た。2分半程度に収まったので効果はある。
#!c:/Python26/python
# -*- coding: UTF8 -*-

def alive_host(ip,retry=3):
"""
 死活監視は端末利用状況の把握と不正接続端末の監視に必要である。
しかし、全アドレス空間のチェックには時間がかかってしまう。
 この関数は、IP個別の死活状態を確認する為のもので、最大1.5秒
かかるので、監視端末を予め絞った管理には使えるが空間全体をなめまわすなら
thread実行が必要だろう。しかし、その場合、CPU使用率と同時起動thread数の制限
等による不具合への配慮を入れる必要がある。
"""
from os import environ, popen
os = environ['os']

#print (os)
# OS別で処理方法を分ける。
if os[:7]=='Windows':
i=0
while i=6 or len(l.split(':'))>=6):
mac=l.strip()[len(ip):].strip()[:17]
print '%s mac=%s' % (ip,mac) # 判定には不要
return [1,mac]
i=i+1
return [0,'']
else:
# UNIX系であれば、arprequestとpyipが使えるので、
# チェックにプロセスを起動させることはない。
# 多分結構軽いものになると思う。
# http://pypi.python.org/pypi?%3Aaction=search&term=icmp&submit=search
from arprequest import ArpRequest



from datetime import datetime
from threading import Thread
from thread import start_new_thread
tm_s=datetime.today()
print tm_s
tm=datetime.today()
for i in xrange(255):
ip='192.168.0.%d' % (i+1)
#alive_host(ip=ip) # 直接関数を実行すると逐次処理の為、
# 監視対象が増えると実用的でない
#Thread(target=alive_host, args=(ip,)).run() # Thread().run()だと、CPUが解放されないので
# threadにした意味がない
start_new_thread(alive_host, (ip,)) # 一番簡易なthread実行方法。但し同時多量起動
# の影響は別途考慮のこと
tm_p=tm
tm=datetime.today()
print tm-tm_p # threadに処理が渡されたら表示されてしまう。

tm_e=datetime.today()
print tm_e,'-',tm_s,'=',tm_e-tm_s # 経過時間

 NWブートが可能なPCでは、NWカードの死活だけではOSの死活迄は判らない。その点注意を要する。
 また、DHCPでダイナミック付与されたIPについては、ISC-DHCPDであれば、IP付与の記録を死活状況判定に役立てることも可能である。続きを読む
posted by Mire at 04:59 | Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年09月27日

pysnmp4.xが今頃気になってInstall

 何となく優柔不断な行動で時間を無駄にし続けている様で嫌なのだが、 pysnmp2.0.9を使ったmono_request()でPyPRecを書いた頃よりは、snmpを思い出して来たし、新たに学習を進めていくと、どうしてもMIB情報の利用をもっとスマートにしたくなって来てしまった。pysnmpは現在、devel扱いながらもpysnmp4系が最新のであり、snmpv3迄対応しているし、MIB情報へのアクセスも出来る様に見える。

 もともと、インストールして試ようとしてうまく行かず、且つ、この手の情報はマイナー過ぎて日本語情報が不足しているので、取敢えず理解できたsnmp2.0.9で走ってしまったのが真実であった。随分と廻り道しているが、ちょいとInstallに挑戦して試た。(マイナー過ぎるのは、このSNMPにドップリ浸かってから、このBLOGへの人のアクセスが減って来ていることから良く分かる。力を入れていないがアフィリエイトのクリック収入もかなり低下気味元々、日に1円でもあれば嬉しい程度なので、なくなるととても寂しい。こんなの見て満足してクリックしてくれる人なんてそんなにいないよな。以上只の愚痴^^;;)

 今度は、ちゃんとREADMEも読んで試ると、4xはpysnmp2.0.9とは違い、次の必要とするモジュールがあった様でいくつかの関門があったので、ここに書き留めて置く。
  • pycrypto-2.0.1
  • pyasn1-0.0.9a


pycrypto-2.0.1のインストール


 これは、Install時にコンパイラし、pydというバイナリファイルを生成するので、MSVCかMinGWまたはCygwin上のgccが必要となる。当方は多分MinGW派^^;なので、次の様にインストール。
K:\DownloadFiles\Python\pycrypto-2.0.1>c:\Python26\python.exe setup.py build -f -c mingw32 install -f
running build
running build_py
copying .\test.py -> build\lib.win32-2.6\Crypto
copying .\__init__.py -> build\lib.win32-2.6\Crypto
copying .\Hash\HMAC.py -> build\lib.win32-2.6\Crypto\Hash
copying .\Hash\MD5.py -> build\lib.win32-2.6\Crypto\Hash
copying .\Hash\SHA.py -> build\lib.win32-2.6\Crypto\Hash
copying .\Hash\__init__.py -> build\lib.win32-2.6\Crypto\Hash
copying .\Cipher\__init__.py -> build\lib.win32-2.6\Crypto\Cipher
copying .\Util\number.py -> build\lib.win32-2.6\Crypto\Util
copying .\Util\randpool.py -> build\lib.win32-2.6\Crypto\Util
copying .\Util\RFC1751.py -> build\lib.win32-2.6\Crypto\Util
copying .\Util\test.py -> build\lib.win32-2.6\Crypto\Util
copying .\Util\__init__.py -> build\lib.win32-2.6\Crypto\Util
copying .\Protocol\AllOrNothing.py -> build\lib.win32-2.6\Crypto\Protocol
copying .\Protocol\Chaffing.py -> build\lib.win32-2.6\Crypto\Protocol
copying .\Protocol\__init__.py -> build\lib.win32-2.6\Crypto\Protocol
copying .\PublicKey\DSA.py -> build\lib.win32-2.6\Crypto\PublicKey
copying .\PublicKey\ElGamal.py -> build\lib.win32-2.6\Crypto\PublicKey
copying .\PublicKey\pubkey.py -> build\lib.win32-2.6\Crypto\PublicKey
copying .\PublicKey\qNEW.py -> build\lib.win32-2.6\Crypto\PublicKey
copying .\PublicKey\RSA.py -> build\lib.win32-2.6\Crypto\PublicKey
copying .\PublicKey\__init__.py -> build\lib.win32-2.6\Crypto\PublicKey
running build_ext
building 'Crypto.Hash.MD2' extension
creating build\temp.win32-2.6
creating build\temp.win32-2.6\Release
creating build\temp.win32-2.6\Release\src
D:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Isrc/ -Ic:\Python26\include -Ic:\Python26\PC -c src/MD2.c -o build\temp.win32-2.6\Release\src\md2.o
writing build\temp.win32-2.6\Release\src\MD2.def
D:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\md2.o build\temp.win32-2.6\Release\src\MD2.def -Lc:\Python26\libs -Lc:\Python26\PCbuild -lpython26 -lmsvcr90 -o build\lib.win32-2.6\Crypto\Hash\MD2.pyd
building 'Crypto.Hash.MD4' extension
D:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Isrc/ -Ic:\Python26\include -Ic:\Python26\PC -c src/MD4.c -o build\temp.win32-2.6\Release\src\md4.o
writing build\temp.win32-2.6\Release\src\MD4.def
D:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\md4.o build\temp.win32-2.6\Release\src\MD4.def -Lc:\Python26\libs -Lc:\Python26\PCbuild -lpython26 -lmsvcr90 -o build\lib.win32-2.6\Crypto\Hash\MD4.pyd
building 'Crypto.Hash.RIPEMD' extension
D:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Isrc/ -Ic:\Python26\include -Ic:\Python26\PC -c src/RIPEMD.c -o build\temp.win32-2.6\Release\src\ripemd.o
writing build\temp.win32-2.6\Release\src\RIPEMD.def
D:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\ripemd.o build\temp.win32-2.6\Release\src\RIPEMD.def -Lc:\Python26\libs -Lc:\Python26\PCbuild -lws2_32 -lpython26 -lmsvcr90 -o build\lib.win32-2.6\Crypto\Hash\RIPEMD.pyd
building 'Crypto.Hash.SHA256' extension
D:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Isrc/ -Ic:\Python26\include -Ic:\Python26\PC -c src/SHA256.c -o build\temp.win32-2.6\Release\src\sha256.o
writing build\temp.win32-2.6\Release\src\SHA256.def
D:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\sha256.o build\temp.win32-2.6\Release\src\SHA256.def -Lc:\Python26\libs -Lc:\Python26\PCbuild -lpython26 -lmsvcr90 -o build\lib.win32-2.6\Crypto\Hash\SHA256.pyd
building 'Crypto.Cipher.AES' extension
D:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Isrc/ -Ic:\Python26\include -Ic:\Python26\PC -c src/AES.c -o build\temp.win32-2.6\Release\src\aes.o
writing build\temp.win32-2.6\Release\src\AES.def
D:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\aes.o build\temp.win32-2.6\Release\src\AES.def -Lc:\Python26\libs -Lc:\Python26\PCbuild -lpython26 -lmsvcr90 -o build\lib.win32-2.6\Crypto\Cipher\AES.pyd
building 'Crypto.Cipher.ARC2' extension
D:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Isrc/ -Ic:\Python26\include -Ic:\Python26\PC -c src/ARC2.c -o build\temp.win32-2.6\Release\src\arc2.o
writing build\temp.win32-2.6\Release\src\ARC2.def
D:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\arc2.o build\temp.win32-2.6\Release\src\ARC2.def -Lc:\Python26\libs -Lc:\Python26\PCbuild -lpython26 -lmsvcr90 -o build\lib.win32-2.6\Crypto\Cipher\ARC2.pyd
building 'Crypto.Cipher.Blowfish' extension
D:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Isrc/ -Ic:\Python26\include -Ic:\Python26\PC -c src/Blowfish.c -o build\temp.win32-2.6\Release\src\blowfish.o
writing build\temp.win32-2.6\Release\src\Blowfish.def
D:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\blowfish.o build\temp.win32-2.6\Release\src\Blowfish.def -Lc:\Python26\libs -Lc:\Python26\PCbuild -lpython26 -lmsvcr90 -o build\lib.win32-2.6\Crypto\Cipher\Blowfish.pyd
building 'Crypto.Cipher.CAST' extension
D:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Isrc/ -Ic:\Python26\include -Ic:\Python26\PC -c src/CAST.c -o build\temp.win32-2.6\Release\src\cast.o
writing build\temp.win32-2.6\Release\src\CAST.def
D:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\cast.o build\temp.win32-2.6\Release\src\CAST.def -Lc:\Python26\libs -Lc:\Python26\PCbuild -lpython26 -lmsvcr90 -o build\lib.win32-2.6\Crypto\Cipher\CAST.pyd
building 'Crypto.Cipher.DES' extension
D:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Isrc/ -Ic:\Python26\include -Ic:\Python26\PC -c src/DES.c -o build\temp.win32-2.6\Release\src\des.o
writing build\temp.win32-2.6\Release\src\DES.def
D:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\des.o build\temp.win32-2.6\Release\src\DES.def -Lc:\Python26\libs -Lc:\Python26\PCbuild -lpython26 -lmsvcr90 -o build\lib.win32-2.6\Crypto\Cipher\DES.pyd
building 'Crypto.Cipher.DES3' extension
D:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Isrc/ -Ic:\Python26\include -Ic:\Python26\PC -c src/DES3.c -o build\temp.win32-2.6\Release\src\des3.o
writing build\temp.win32-2.6\Release\src\DES3.def
D:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\des3.o build\temp.win32-2.6\Release\src\DES3.def -Lc:\Python26\libs -Lc:\Python26\PCbuild -lpython26 -lmsvcr90 -o build\lib.win32-2.6\Crypto\Cipher\DES3.pyd
building 'Crypto.Cipher.IDEA' extension
D:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Isrc/ -Ic:\Python26\include -Ic:\Python26\PC -c src/IDEA.c -o build\temp.win32-2.6\Release\src\idea.o
src/IDEA.c:42:1: warning: "CONST" redefined
In file included from D:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/windows.h:48,
from D:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winsock2.h:22,
from src/IDEA.c:16:
D:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/windef.h:39:1: warning: this is the location of the previous definition
writing build\temp.win32-2.6\Release\src\IDEA.def
D:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\idea.o build\temp.win32-2.6\Release\src\IDEA.def -Lc:\Python26\libs -Lc:\Python26\PCbuild -lws2_32 -lpython26 -lmsvcr90 -o build\lib.win32-2.6\Crypto\Cipher\IDEApyd
building 'Crypto.Cipher.RC5' extension
D:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Isrc/ -Ic:\Python26\include -Ic:\Python26\PC -c src/RC5.c -o build\temp.win32-2.6\Release\src\rc5.o
writing build\temp.win32-2.6\Release\src\RC5.def
D:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\rc5.o build\temp.win32-2.6\Release\src\RC5.def -Lc:\Python26\libs -Lc:\Python26\PCbuild -lpython26 -lmsvcr90 -o build\lib.win32-2.6\Crypto\Cipher\RC5.pyd
building 'Crypto.Cipher.ARC4' extension
D:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Isrc/ -Ic:\Python26\include -Ic:\Python26\PC -c src/ARC4.c -o build\temp.win32-2.6\Release\src\arc4.o
writing build\temp.win32-2.6\Release\src\ARC4.def
D:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\arc4.o build\temp.win32-2.6\Release\src\ARC4.def -Lc:\Python26\libs -Lc:\Python26\PCbuild -lpython26 -lmsvcr90 -o build\lib.win32-2.6\Crypto\Cipher\ARC4.pyd
building 'Crypto.Cipher.XOR' extension
D:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -Isrc/ -Ic:\Python26\include -Ic:\Python26\PC -c src/XOR.c -o build\temp.win32-2.6\Release\src\xor.o
writing build\temp.win32-2.6\Release\src\XOR.def
D:\MinGW\bin\gcc.exe -mno-cygwin -shared -s build\temp.win32-2.6\Release\src\xor.o build\temp.win32-2.6\Release\src\XOR.def -Lc:\Python26\libs -Lc:\Python26\PCbuild -lpython26 -lmsvcr90 -o build\lib.win32-2.6\Crypto\Cipher\XOR.pyd
running install
running install_lib
creating c:\Python26\Lib\site-packages\Crypto
creating c:\Python26\Lib\site-packages\Crypto\Cipher
copying build\lib.win32-2.6\Crypto\Cipher\AES.pyd -> c:\Python26\Lib\site-packages\Crypto\Cipher
copying build\lib.win32-2.6\Crypto\Cipher\ARC2.pyd -> c:\Python26\Lib\site-packages\Crypto\Cipher
copying build\lib.win32-2.6\Crypto\Cipher\ARC4.pyd -> c:\Python26\Lib\site-packages\Crypto\Cipher
copying build\lib.win32-2.6\Crypto\Cipher\Blowfish.pyd -> c:\Python26\Lib\site-packages\Crypto\Cipher
copying build\lib.win32-2.6\Crypto\Cipher\CAST.pyd -> c:\Python26\Lib\site-packages\Crypto\Cipher
copying build\lib.win32-2.6\Crypto\Cipher\DES.pyd -> c:\Python26\Lib\site-packages\Crypto\Cipher
copying build\lib.win32-2.6\Crypto\Cipher\DES3.pyd -> c:\Python26\Lib\site-packages\Crypto\Cipher
copying build\lib.win32-2.6\Crypto\Cipher\IDEA.pyd -> c:\Python26\Lib\site-packages\Crypto\Cipher
copying build\lib.win32-2.6\Crypto\Cipher\RC5.pyd -> c:\Python26\Lib\site-packages\Crypto\Cipher
copying build\lib.win32-2.6\Crypto\Cipher\XOR.pyd -> c:\Python26\Lib\site-packages\Crypto\Cipher
copying build\lib.win32-2.6\Crypto\Cipher\__init__.py -> c:\Python26\Lib\site-packages\Crypto\Cipher
creating c:\Python26\Lib\site-packages\Crypto\Hash
copying build\lib.win32-2.6\Crypto\Hash\HMAC.py -> c:\Python26\Lib\site-packages\Crypto\Hash
copying build\lib.win32-2.6\Crypto\Hash\MD2.pyd -> c:\Python26\Lib\site-packages\Crypto\Hash
copying build\lib.win32-2.6\Crypto\Hash\MD4.pyd -> c:\Python26\Lib\site-packages\Crypto\Hash
copying build\lib.win32-2.6\Crypto\Hash\MD5.py -> c:\Python26\Lib\site-packages\Crypto\Hash
copying build\lib.win32-2.6\Crypto\Hash\RIPEMD.pyd -> c:\Python26\Lib\site-packages\Crypto\Hash
copying build\lib.win32-2.6\Crypto\Hash\SHA.py -> c:\Python26\Lib\site-packages\Crypto\Hash
copying build\lib.win32-2.6\Crypto\Hash\SHA256.pyd -> c:\Python26\Lib\site-packages\Crypto\Hash
copying build\lib.win32-2.6\Crypto\Hash\__init__.py -> c:\Python26\Lib\site-packages\Crypto\Hash
creating c:\Python26\Lib\site-packages\Crypto\Protocol
copying build\lib.win32-2.6\Crypto\Protocol\AllOrNothing.py -> c:\Python26\Lib\site-packages\Crypto\Protocol
copying build\lib.win32-2.6\Crypto\Protocol\Chaffing.py -> c:\Python26\Lib\site-packages\Crypto\Protocol
copying build\lib.win32-2.6\Crypto\Protocol\__init__.py -> c:\Python26\Lib\site-packages\Crypto\Protocol
creating c:\Python26\Lib\site-packages\Crypto\PublicKey
copying build\lib.win32-2.6\Crypto\PublicKey\DSA.py -> c:\Python26\Lib\site-packages\Crypto\PublicKey
copying build\lib.win32-2.6\Crypto\PublicKey\ElGamal.py -> c:\Python26\Lib\site-packages\Crypto\PublicKey
copying build\lib.win32-2.6\Crypto\PublicKey\pubkey.py -> c:\Python26\Lib\site-packages\Crypto\PublicKey
copying build\lib.win32-2.6\Crypto\PublicKey\qNEW.py -> c:\Python26\Lib\site-packages\Crypto\PublicKey
copying build\lib.win32-2.6\Crypto\PublicKey\RSA.py -> c:\Python26\Lib\site-packages\Crypto\PublicKey
copying build\lib.win32-2.6\Crypto\PublicKey\__init__.py -> c:\Python26\Lib\site-packages\Crypto\PublicKey
copying build\lib.win32-2.6\Crypto\test.py -> c:\Python26\Lib\site-packages\Crypto
creating c:\Python26\Lib\site-packages\Crypto\Util
copying build\lib.win32-2.6\Crypto\Util\number.py -> c:\Python26\Lib\site-packages\Crypto\Util
copying build\lib.win32-2.6\Crypto\Util\randpool.py -> c:\Python26\Lib\site-packages\Crypto\Util
copying build\lib.win32-2.6\Crypto\Util\RFC1751.py -> c:\Python26\Lib\site-packages\Crypto\Util
copying build\lib.win32-2.6\Crypto\Util\test.py -> c:\Python26\Lib\site-packages\Crypto\Util
copying build\lib.win32-2.6\Crypto\Util\__init__.py -> c:\Python26\Lib\site-packages\Crypto\Util
copying build\lib.win32-2.6\Crypto\__init__.py -> c:\Python26\Lib\site-packages\Crypto
byte-compiling c:\Python26\Lib\site-packages\Crypto\Cipher\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\Hash\HMAC.py to HMAC.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\Hash\MD5.py to MD5.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\Hash\SHA.py to SHA.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\Hash\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\Protocol\AllOrNothing.py to AllOrNothing.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\Protocol\Chaffing.py to Chaffing.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\Protocol\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\PublicKey\DSA.py to DSA.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\PublicKey\ElGamal.py to ElGamal.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\PublicKey\pubkey.py to pubkey.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\PublicKey\qNEW.py to qNEW.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\PublicKey\RSA.py to RSA.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\PublicKey\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\test.py to test.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\Util\number.py to number.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\Util\randpool.py to randpool.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\Util\RFC1751.py to RFC1751.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\Util\test.py to test.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\Util\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\Crypto\__init__.py to __init__.pyc
running install_egg_info
Writing c:\Python26\Lib\site-packages\pycrypto-2.0.1-py2.6.egg-info

K:\DownloadFiles\Python\pycrypto-2.0.1>

まだ使っていないが多分動くだろう。これを単純に「setup.py install」とすると以下の様に「vcvarsall.batが見つからないぞ」と怒られてしまう。(因みに「vcvarsall.bat」は「Lib\distutils\msvc9compiler.py」が呼だもの。Windowsの既定ではMSVCがないとこうなる。)
K:\DownloadFiles\Python\pycrypto-2.0.1>c:\Python26\python.exe setup.py install
running install
running build
running build_py
running build_extこれは、
building 'Crypto.Hash.MD2' extension
error: Unable to find vcvarsall.bat

 後で判ったことだが、PythonでMinGWをdefaultで使いInstallする場合には、Python26/Lib/distutilsに
次の内容distutils.cfgとして作成しておくと良いそうだ。今後は概ね「setup.py install」だけで大丈夫かもしれない。

[build]
compiler=mingw32


pyasn1-0.0.9aのInstall


 こちらは、pureなPythonコードのモジュールなので普通通りの「setup.py install」で出来る。
K:\DownloadFiles\Python\pyasn1-0.0.9a>c:\Python26\python.exe setup.py install
running install
running bdist_egg
running egg_info
creating pyasn1.egg-info
writing pyasn1.egg-info\PKG-INFO
writing top-level names to pyasn1.egg-info\top_level.txt
writing dependency_links to pyasn1.egg-info\dependency_links.txt
writing manifest file 'pyasn1.egg-info\SOURCES.txt'
reading manifest file 'pyasn1.egg-info\SOURCES.txt'
writing manifest file 'pyasn1.egg-info\SOURCES.txt'
installing library code to build\bdist.win32\egg
running install_lib
running build_py
creating build
creating build\lib
creating build\lib\pyasn1
copying pyasn1\__init__.py -> build\lib\pyasn1
creating build\lib\pyasn1\v1
copying pyasn1\v1\error.py -> build\lib\pyasn1\v1
copying pyasn1\v1\__init__.py -> build\lib\pyasn1\v1
creating build\lib\pyasn1\v1\type
copying pyasn1\v1\type\base.py -> build\lib\pyasn1\v1\type
copying pyasn1\v1\type\char.py -> build\lib\pyasn1\v1\type
copying pyasn1\v1\type\constraint.py -> build\lib\pyasn1\v1\type
copying pyasn1\v1\type\error.py -> build\lib\pyasn1\v1\type
copying pyasn1\v1\type\namedtype.py -> build\lib\pyasn1\v1\type
copying pyasn1\v1\type\namedval.py -> build\lib\pyasn1\v1\type
copying pyasn1\v1\type\tag.py -> build\lib\pyasn1\v1\type
copying pyasn1\v1\type\univ.py -> build\lib\pyasn1\v1\type
copying pyasn1\v1\type\useful.py -> build\lib\pyasn1\v1\type
copying pyasn1\v1\type\__init__.py -> build\lib\pyasn1\v1\type
creating build\lib\pyasn1\v1\codec
copying pyasn1\v1\codec\__init__.py -> build\lib\pyasn1\v1\codec
creating build\lib\pyasn1\v1\codec\ber
copying pyasn1\v1\codec\ber\decoder.py -> build\lib\pyasn1\v1\codec\ber
copying pyasn1\v1\codec\ber\encoder.py -> build\lib\pyasn1\v1\codec\ber
copying pyasn1\v1\codec\ber\eoo.py -> build\lib\pyasn1\v1\codec\ber
copying pyasn1\v1\codec\ber\__init__.py -> build\lib\pyasn1\v1\codec\ber
creating build\lib\pyasn1\v1\codec\cer
copying pyasn1\v1\codec\cer\decoder.py -> build\lib\pyasn1\v1\codec\cer
copying pyasn1\v1\codec\cer\encoder.py -> build\lib\pyasn1\v1\codec\cer
copying pyasn1\v1\codec\cer\__init__.py -> build\lib\pyasn1\v1\codec\cer
creating build\lib\pyasn1\v1\codec\der
copying pyasn1\v1\codec\der\decoder.py -> build\lib\pyasn1\v1\codec\der
copying pyasn1\v1\codec\der\encoder.py -> build\lib\pyasn1\v1\codec\der
copying pyasn1\v1\codec\der\__init__.py -> build\lib\pyasn1\v1\codec\der
creating build\bdist.win32
creating build\bdist.win32\egg
creating build\bdist.win32\egg\pyasn1
creating build\bdist.win32\egg\pyasn1\v1
creating build\bdist.win32\egg\pyasn1\v1\codec
creating build\bdist.win32\egg\pyasn1\v1\codec\ber
copying build\lib\pyasn1\v1\codec\ber\decoder.py -> build\bdist.win32\egg\pyasn1\v1\codec\ber
copying build\lib\pyasn1\v1\codec\ber\encoder.py -> build\bdist.win32\egg\pyasn1\v1\codec\ber
copying build\lib\pyasn1\v1\codec\ber\eoo.py -> build\bdist.win32\egg\pyasn1\v1\codec\ber
copying build\lib\pyasn1\v1\codec\ber\__init__.py -> build\bdist.win32\egg\pyasn1\v1\codec\ber
creating build\bdist.win32\egg\pyasn1\v1\codec\cer
copying build\lib\pyasn1\v1\codec\cer\decoder.py -> build\bdist.win32\egg\pyasn1\v1\codec\cer
copying build\lib\pyasn1\v1\codec\cer\encoder.py -> build\bdist.win32\egg\pyasn1\v1\codec\cer
copying build\lib\pyasn1\v1\codec\cer\__init__.py -> build\bdist.win32\egg\pyasn1\v1\codec\cer
creating build\bdist.win32\egg\pyasn1\v1\codec\der
copying build\lib\pyasn1\v1\codec\der\decoder.py -> build\bdist.win32\egg\pyasn1\v1\codec\der
copying build\lib\pyasn1\v1\codec\der\encoder.py -> build\bdist.win32\egg\pyasn1\v1\codec\der
copying build\lib\pyasn1\v1\codec\der\__init__.py -> build\bdist.win32\egg\pyasn1\v1\codec\der
copying build\lib\pyasn1\v1\codec\__init__.py -> build\bdist.win32\egg\pyasn1\v1\codec
copying build\lib\pyasn1\v1\error.py -> build\bdist.win32\egg\pyasn1\v1
creating build\bdist.win32\egg\pyasn1\v1\type
copying build\lib\pyasn1\v1\type\base.py -> build\bdist.win32\egg\pyasn1\v1\type
copying build\lib\pyasn1\v1\type\char.py -> build\bdist.win32\egg\pyasn1\v1\type
copying build\lib\pyasn1\v1\type\constraint.py -> build\bdist.win32\egg\pyasn1\v1\type
copying build\lib\pyasn1\v1\type\error.py -> build\bdist.win32\egg\pyasn1\v1\type
copying build\lib\pyasn1\v1\type\namedtype.py -> build\bdist.win32\egg\pyasn1\v1\type
copying build\lib\pyasn1\v1\type\namedval.py -> build\bdist.win32\egg\pyasn1\v1\type
copying build\lib\pyasn1\v1\type\tag.py -> build\bdist.win32\egg\pyasn1\v1\type
copying build\lib\pyasn1\v1\type\univ.py -> build\bdist.win32\egg\pyasn1\v1\type
copying build\lib\pyasn1\v1\type\useful.py -> build\bdist.win32\egg\pyasn1\v1\type
copying build\lib\pyasn1\v1\type\__init__.py -> build\bdist.win32\egg\pyasn1\v1\type
copying build\lib\pyasn1\v1\__init__.py -> build\bdist.win32\egg\pyasn1\v1
copying build\lib\pyasn1\__init__.py -> build\bdist.win32\egg\pyasn1
byte-compiling build\bdist.win32\egg\pyasn1\v1\codec\ber\decoder.py to decoder.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\codec\ber\encoder.py to encoder.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\codec\ber\eoo.py to eoo.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\codec\ber\__init__.py to __init__.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\codec\cer\decoder.py to decoder.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\codec\cer\encoder.py to encoder.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\codec\cer\__init__.py to __init__.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\codec\der\decoder.py to decoder.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\codec\der\encoder.py to encoder.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\codec\der\__init__.py to __init__.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\codec\__init__.py to __init__.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\error.py to error.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\type\base.py to base.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\type\char.py to char.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\type\constraint.py to constraint.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\type\error.py to error.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\type\namedtype.py to namedtype.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\type\namedval.py to namedval.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\type\tag.py to tag.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\type\univ.py to univ.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\type\useful.py to useful.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\type\__init__.py to __init__.pyc
byte-compiling build\bdist.win32\egg\pyasn1\v1\__init__.py to __init__.pyc
byte-compiling build\bdist.win32\egg\pyasn1\__init__.py to __init__.pyc
creating build\bdist.win32\egg\EGG-INFO
copying pyasn1.egg-info\PKG-INFO -> build\bdist.win32\egg\EGG-INFO
copying pyasn1.egg-info\SOURCES.txt -> build\bdist.win32\egg\EGG-INFO
copying pyasn1.egg-info\dependency_links.txt -> build\bdist.win32\egg\EGG-INFO
copying pyasn1.egg-info\top_level.txt -> build\bdist.win32\egg\EGG-INFO
zip_safe flag not set; analyzing archive contents...
pyasn1.__init__: module references __path__
creating dist
creating 'dist\pyasn1-0.0.9a-py2.6.egg' and adding 'build\bdist.win32\egg' to it
removing 'build\bdist.win32\egg' (and everything under it)
Processing pyasn1-0.0.9a-py2.6.egg
creating c:\python26\lib\site-packages\pyasn1-0.0.9a-py2.6.egg
Extracting pyasn1-0.0.9a-py2.6.egg to c:\python26\lib\site-packages
Adding pyasn1 0.0.9a to easy-install.pth file

Installed c:\python26\lib\site-packages\pyasn1-0.0.9a-py2.6.egg
Processing dependencies for pyasn1==0.0.9a
Finished processing dependencies for pyasn1==0.0.9a

K:\DownloadFiles\Python\pyasn1-0.0.9a>


pysnmp-4.1.11a


 以上の2つのモジュールがあればpysnmp4系は「setup.py install」のでインストールで動作する。
K:\DownloadFiles\Python\pysnmp\pysnmp-4.1.11a>c:\Python26\python.exe setup.py install
running install

running build
running build_py
creating build
creating build\lib
creating build\lib\pysnmp
copying pysnmp\__init__.py -> build\lib\pysnmp
creating build\lib\pysnmp\v4
copying pysnmp\v4\debug.py -> build\lib\pysnmp\v4
copying pysnmp\v4\error.py -> build\lib\pysnmp\v4
copying pysnmp\v4\nextid.py -> build\lib\pysnmp\v4
copying pysnmp\v4\__init__.py -> build\lib\pysnmp\v4
creating build\lib\pysnmp\v4\smi
copying pysnmp\v4\smi\builder.py -> build\lib\pysnmp\v4\smi
copying pysnmp\v4\smi\error.py -> build\lib\pysnmp\v4\smi
copying pysnmp\v4\smi\exval.py -> build\lib\pysnmp\v4\smi
copying pysnmp\v4\smi\indices.py -> build\lib\pysnmp\v4\smi
copying pysnmp\v4\smi\instrum.py -> build\lib\pysnmp\v4\smi
copying pysnmp\v4\smi\view.py -> build\lib\pysnmp\v4\smi
copying pysnmp\v4\smi\__init__.py -> build\lib\pysnmp\v4\smi
creating build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\ASN1.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\PYSNMP-MIB.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\PYSNMP-USM-MIB.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\RFC1155-SMI.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\RFC1213-MIB.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\SNMP-COMMUNITY-MIB.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\SNMP-FRAMEWORK-MIB.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\SNMP-MPD-MIB.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\SNMP-NOTIFICATION-MIB.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\SNMP-TARGET-MIB.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\SNMP-USER-BASED-SM-MIB.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\SNMP-USM-AES-MIB.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\SNMP-VIEW-BASED-ACM-MIB.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\SNMPv2-CONF.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\SNMPv2-MIB.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\SNMPv2-SMI.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\SNMPv2-TC.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\SNMPv2-TM.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\TRANSPORT-ADDRESS-MIB.py -> build\lib\pysnmp\v4\smi\mibs
copying pysnmp\v4\smi\mibs\__init__.py -> build\lib\pysnmp\v4\smi\mibs
creating build\lib\pysnmp\v4\smi\mibs\instances
copying pysnmp\v4\smi\mibs\instances\__init__.py -> build\lib\pysnmp\v4\smi\mibs\instances
copying pysnmp\v4\smi\mibs\instances\__PYSNMP-USM-MIB.py -> build\lib\pysnmp\v4\smi\mibs\instances
copying pysnmp\v4\smi\mibs\instances\__SNMP-FRAMEWORK-MIB.py -> build\lib\pysnmp\v4\smi\mibs\instances
copying pysnmp\v4\smi\mibs\instances\__SNMP-MPD-MIB.py -> build\lib\pysnmp\v4\smi\mibs\instances
copying pysnmp\v4\smi\mibs\instances\__SNMP-TARGET-MIB.py -> build\lib\pysnmp\v4\smi\mibs\instances
copying pysnmp\v4\smi\mibs\instances\__SNMP-USER-BASED-SM-MIB.py -> build\lib\pysnmp\v4\smi\mibs\instances
copying pysnmp\v4\smi\mibs\instances\__SNMP-VIEW-BASED-ACM-MIB.py -> build\lib\pysnmp\v4\smi\mibs\instances
copying pysnmp\v4\smi\mibs\instances\__SNMPv2-MIB.py -> build\lib\pysnmp\v4\smi\mibs\instances
creating build\lib\pysnmp\v4\carrier
copying pysnmp\v4\carrier\base.py -> build\lib\pysnmp\v4\carrier
copying pysnmp\v4\carrier\error.py -> build\lib\pysnmp\v4\carrier
copying pysnmp\v4\carrier\__init__.py -> build\lib\pysnmp\v4\carrier
creating build\lib\pysnmp\v4\carrier\asynsock
copying pysnmp\v4\carrier\asynsock\base.py -> build\lib\pysnmp\v4\carrier\asynsock
copying pysnmp\v4\carrier\asynsock\dispatch.py -> build\lib\pysnmp\v4\carrier\asynsock
copying pysnmp\v4\carrier\asynsock\__init__.py -> build\lib\pysnmp\v4\carrier\asynsock
creating build\lib\pysnmp\v4\carrier\asynsock\dgram
copying pysnmp\v4\carrier\asynsock\dgram\base.py -> build\lib\pysnmp\v4\carrier\asynsock\dgram
copying pysnmp\v4\carrier\asynsock\dgram\udp.py -> build\lib\pysnmp\v4\carrier\asynsock\dgram
copying pysnmp\v4\carrier\asynsock\dgram\unix.py -> build\lib\pysnmp\v4\carrier\asynsock\dgram
copying pysnmp\v4\carrier\asynsock\dgram\__init__.py -> build\lib\pysnmp\v4\carrier\asynsock\dgram
creating build\lib\pysnmp\v4\carrier\twisted
copying pysnmp\v4\carrier\twisted\base.py -> build\lib\pysnmp\v4\carrier\twisted
copying pysnmp\v4\carrier\twisted\dispatch.py -> build\lib\pysnmp\v4\carrier\twisted
copying pysnmp\v4\carrier\twisted\__init__.py -> build\lib\pysnmp\v4\carrier\twisted
creating build\lib\pysnmp\v4\carrier\twisted\dgram
copying pysnmp\v4\carrier\twisted\dgram\base.py -> build\lib\pysnmp\v4\carrier\twisted\dgram
copying pysnmp\v4\carrier\twisted\dgram\udp.py -> build\lib\pysnmp\v4\carrier\twisted\dgram
copying pysnmp\v4\carrier\twisted\dgram\unix.py -> build\lib\pysnmp\v4\carrier\twisted\dgram
copying pysnmp\v4\carrier\twisted\dgram\__init__.py -> build\lib\pysnmp\v4\carrier\twisted\dgram
creating build\lib\pysnmp\v4\entity
copying pysnmp\v4\entity\config.py -> build\lib\pysnmp\v4\entity
copying pysnmp\v4\entity\engine.py -> build\lib\pysnmp\v4\entity
copying pysnmp\v4\entity\__init__.py -> build\lib\pysnmp\v4\entity
creating build\lib\pysnmp\v4\entity\rfc3413
copying pysnmp\v4\entity\rfc3413\cmdgen.py -> build\lib\pysnmp\v4\entity\rfc3413
copying pysnmp\v4\entity\rfc3413\cmdrsp.py -> build\lib\pysnmp\v4\entity\rfc3413
copying pysnmp\v4\entity\rfc3413\config.py -> build\lib\pysnmp\v4\entity\rfc3413
copying pysnmp\v4\entity\rfc3413\context.py -> build\lib\pysnmp\v4\entity\rfc3413
copying pysnmp\v4\entity\rfc3413\mibvar.py -> build\lib\pysnmp\v4\entity\rfc3413
copying pysnmp\v4\entity\rfc3413\ntforg.py -> build\lib\pysnmp\v4\entity\rfc3413
copying pysnmp\v4\entity\rfc3413\ntfrcv.py -> build\lib\pysnmp\v4\entity\rfc3413
copying pysnmp\v4\entity\rfc3413\__init__.py -> build\lib\pysnmp\v4\entity\rfc3413
creating build\lib\pysnmp\v4\entity\rfc3413\oneliner
copying pysnmp\v4\entity\rfc3413\oneliner\cmdgen.py -> build\lib\pysnmp\v4\entity\rfc3413\oneliner
copying pysnmp\v4\entity\rfc3413\oneliner\ntforg.py -> build\lib\pysnmp\v4\entity\rfc3413\oneliner
copying pysnmp\v4\entity\rfc3413\oneliner\__init__.py -> build\lib\pysnmp\v4\entity\rfc3413\oneliner
creating build\lib\pysnmp\v4\entity\rfc3413\twisted
copying pysnmp\v4\entity\rfc3413\twisted\cmdgen.py -> build\lib\pysnmp\v4\entity\rfc3413\twisted
copying pysnmp\v4\entity\rfc3413\twisted\ntforg.py -> build\lib\pysnmp\v4\entity\rfc3413\twisted
copying pysnmp\v4\entity\rfc3413\twisted\__init__.py -> build\lib\pysnmp\v4\entity\rfc3413\twisted
creating build\lib\pysnmp\v4\proto
copying pysnmp\v4\proto\error.py -> build\lib\pysnmp\v4\proto
copying pysnmp\v4\proto\rfc1155.py -> build\lib\pysnmp\v4\proto
copying pysnmp\v4\proto\rfc1157.py -> build\lib\pysnmp\v4\proto
copying pysnmp\v4\proto\rfc1902.py -> build\lib\pysnmp\v4\proto
copying pysnmp\v4\proto\rfc1905.py -> build\lib\pysnmp\v4\proto
copying pysnmp\v4\proto\rfc3411.py -> build\lib\pysnmp\v4\proto
copying pysnmp\v4\proto\rfc3412.py -> build\lib\pysnmp\v4\proto
copying pysnmp\v4\proto\__init__.py -> build\lib\pysnmp\v4\proto
creating build\lib\pysnmp\v4\proto\mpmod
copying pysnmp\v4\proto\mpmod\base.py -> build\lib\pysnmp\v4\proto\mpmod
copying pysnmp\v4\proto\mpmod\rfc2576.py -> build\lib\pysnmp\v4\proto\mpmod
copying pysnmp\v4\proto\mpmod\rfc3412.py -> build\lib\pysnmp\v4\proto\mpmod
copying pysnmp\v4\proto\mpmod\__init__.py -> build\lib\pysnmp\v4\proto\mpmod
creating build\lib\pysnmp\v4\proto\secmod
copying pysnmp\v4\proto\secmod\base.py -> build\lib\pysnmp\v4\proto\secmod
copying pysnmp\v4\proto\secmod\rfc2576.py -> build\lib\pysnmp\v4\proto\secmod
copying pysnmp\v4\proto\secmod\__init__.py -> build\lib\pysnmp\v4\proto\secmod
creating build\lib\pysnmp\v4\proto\secmod\rfc3414
copying pysnmp\v4\proto\secmod\rfc3414\localkey.py -> build\lib\pysnmp\v4\proto\secmod\rfc3414
copying pysnmp\v4\proto\secmod\rfc3414\service.py -> build\lib\pysnmp\v4\proto\secmod\rfc3414
copying pysnmp\v4\proto\secmod\rfc3414\__init__.py -> build\lib\pysnmp\v4\proto\secmod\rfc3414
creating build\lib\pysnmp\v4\proto\secmod\rfc3414\auth
copying pysnmp\v4\proto\secmod\rfc3414\auth\base.py -> build\lib\pysnmp\v4\proto\secmod\rfc3414\auth
copying pysnmp\v4\proto\secmod\rfc3414\auth\hmacmd5.py -> build\lib\pysnmp\v4\proto\secmod\rfc3414\auth
copying pysnmp\v4\proto\secmod\rfc3414\auth\hmacsha.py -> build\lib\pysnmp\v4\proto\secmod\rfc3414\auth
copying pysnmp\v4\proto\secmod\rfc3414\auth\noauth.py -> build\lib\pysnmp\v4\proto\secmod\rfc3414\auth
copying pysnmp\v4\proto\secmod\rfc3414\auth\__init__.py -> build\lib\pysnmp\v4\proto\secmod\rfc3414\auth
creating build\lib\pysnmp\v4\proto\secmod\rfc3414\priv
copying pysnmp\v4\proto\secmod\rfc3414\priv\base.py -> build\lib\pysnmp\v4\proto\secmod\rfc3414\priv
copying pysnmp\v4\proto\secmod\rfc3414\priv\des.py -> build\lib\pysnmp\v4\proto\secmod\rfc3414\priv
copying pysnmp\v4\proto\secmod\rfc3414\priv\nopriv.py -> build\lib\pysnmp\v4\proto\secmod\rfc3414\priv
copying pysnmp\v4\proto\secmod\rfc3414\priv\__init__.py -> build\lib\pysnmp\v4\proto\secmod\rfc3414\priv
creating build\lib\pysnmp\v4\proto\secmod\rfc3826
copying pysnmp\v4\proto\secmod\rfc3826\__init__.py -> build\lib\pysnmp\v4\proto\secmod\rfc3826
creating build\lib\pysnmp\v4\proto\secmod\rfc3826\priv
copying pysnmp\v4\proto\secmod\rfc3826\priv\aes.py -> build\lib\pysnmp\v4\proto\secmod\rfc3826\priv
copying pysnmp\v4\proto\secmod\rfc3826\priv\__init__.py -> build\lib\pysnmp\v4\proto\secmod\rfc3826\priv
creating build\lib\pysnmp\v4\proto\acmod
copying pysnmp\v4\proto\acmod\rfc3415.py -> build\lib\pysnmp\v4\proto\acmod
copying pysnmp\v4\proto\acmod\__init__.py -> build\lib\pysnmp\v4\proto\acmod
creating build\lib\pysnmp\v4\proto\proxy
copying pysnmp\v4\proto\proxy\rfc2576.py -> build\lib\pysnmp\v4\proto\proxy
copying pysnmp\v4\proto\proxy\__init__.py -> build\lib\pysnmp\v4\proto\proxy
creating build\lib\pysnmp\v4\proto\api
copying pysnmp\v4\proto\api\v1.py -> build\lib\pysnmp\v4\proto\api
copying pysnmp\v4\proto\api\v2c.py -> build\lib\pysnmp\v4\proto\api
copying pysnmp\v4\proto\api\verdec.py -> build\lib\pysnmp\v4\proto\api
copying pysnmp\v4\proto\api\__init__.py -> build\lib\pysnmp\v4\proto\api
running build_scripts
creating build\scripts-2.6
copying and adjusting tools\libsmi2pysnmp -> build\scripts-2.6
copying tools\build-pysnmp-mib -> build\scripts-2.6
running install_lib
creating c:\Python26\Lib\site-packages\pysnmp\v4
creating c:\Python26\Lib\site-packages\pysnmp\v4\carrier
creating c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock
copying build\lib\pysnmp\v4\carrier\asynsock\base.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock
creating c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock\dgram
copying build\lib\pysnmp\v4\carrier\asynsock\dgram\base.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock\dgram
copying build\lib\pysnmp\v4\carrier\asynsock\dgram\udp.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock\dgram
copying build\lib\pysnmp\v4\carrier\asynsock\dgram\unix.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock\dgram
copying build\lib\pysnmp\v4\carrier\asynsock\dgram\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock\dgram
copying build\lib\pysnmp\v4\carrier\asynsock\dispatch.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock
copying build\lib\pysnmp\v4\carrier\asynsock\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock
copying build\lib\pysnmp\v4\carrier\base.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier
copying build\lib\pysnmp\v4\carrier\error.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier
creating c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted
copying build\lib\pysnmp\v4\carrier\twisted\base.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted
creating c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted\dgram
copying build\lib\pysnmp\v4\carrier\twisted\dgram\base.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted\dgram
copying build\lib\pysnmp\v4\carrier\twisted\dgram\udp.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted\dgram
copying build\lib\pysnmp\v4\carrier\twisted\dgram\unix.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted\dgram
copying build\lib\pysnmp\v4\carrier\twisted\dgram\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted\dgram
copying build\lib\pysnmp\v4\carrier\twisted\dispatch.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted
copying build\lib\pysnmp\v4\carrier\twisted\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted
copying build\lib\pysnmp\v4\carrier\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\carrier
copying build\lib\pysnmp\v4\debug.py -> c:\Python26\Lib\site-packages\pysnmp\v4
creating c:\Python26\Lib\site-packages\pysnmp\v4\entity
copying build\lib\pysnmp\v4\entity\config.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity
copying build\lib\pysnmp\v4\entity\engine.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity
creating c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413
copying build\lib\pysnmp\v4\entity\rfc3413\cmdgen.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413
copying build\lib\pysnmp\v4\entity\rfc3413\cmdrsp.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413
copying build\lib\pysnmp\v4\entity\rfc3413\config.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413
copying build\lib\pysnmp\v4\entity\rfc3413\context.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413
copying build\lib\pysnmp\v4\entity\rfc3413\mibvar.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413
copying build\lib\pysnmp\v4\entity\rfc3413\ntforg.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413
copying build\lib\pysnmp\v4\entity\rfc3413\ntfrcv.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413
creating c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\oneliner
copying build\lib\pysnmp\v4\entity\rfc3413\oneliner\cmdgen.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\oneliner
copying build\lib\pysnmp\v4\entity\rfc3413\oneliner\ntforg.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\oneliner
copying build\lib\pysnmp\v4\entity\rfc3413\oneliner\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\oneliner
creating c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\twisted
copying build\lib\pysnmp\v4\entity\rfc3413\twisted\cmdgen.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\twisted
copying build\lib\pysnmp\v4\entity\rfc3413\twisted\ntforg.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\twisted
copying build\lib\pysnmp\v4\entity\rfc3413\twisted\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\twisted
copying build\lib\pysnmp\v4\entity\rfc3413\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413
copying build\lib\pysnmp\v4\entity\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\entity
copying build\lib\pysnmp\v4\error.py -> c:\Python26\Lib\site-packages\pysnmp\v4
copying build\lib\pysnmp\v4\nextid.py -> c:\Python26\Lib\site-packages\pysnmp\v4
creating c:\Python26\Lib\site-packages\pysnmp\v4\proto
creating c:\Python26\Lib\site-packages\pysnmp\v4\proto\acmod
copying build\lib\pysnmp\v4\proto\acmod\rfc3415.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\acmod
copying build\lib\pysnmp\v4\proto\acmod\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\acmod
creating c:\Python26\Lib\site-packages\pysnmp\v4\proto\api
copying build\lib\pysnmp\v4\proto\api\v1.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\api
copying build\lib\pysnmp\v4\proto\api\v2c.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\api
copying build\lib\pysnmp\v4\proto\api\verdec.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\api
copying build\lib\pysnmp\v4\proto\api\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\api
copying build\lib\pysnmp\v4\proto\error.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto
creating c:\Python26\Lib\site-packages\pysnmp\v4\proto\mpmod
copying build\lib\pysnmp\v4\proto\mpmod\base.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\mpmod
copying build\lib\pysnmp\v4\proto\mpmod\rfc2576.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\mpmod
copying build\lib\pysnmp\v4\proto\mpmod\rfc3412.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\mpmod
copying build\lib\pysnmp\v4\proto\mpmod\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\mpmod
creating c:\Python26\Lib\site-packages\pysnmp\v4\proto\proxy
copying build\lib\pysnmp\v4\proto\proxy\rfc2576.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\proxy
copying build\lib\pysnmp\v4\proto\proxy\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\proxy
copying build\lib\pysnmp\v4\proto\rfc1155.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto
copying build\lib\pysnmp\v4\proto\rfc1157.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto
copying build\lib\pysnmp\v4\proto\rfc1902.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto
copying build\lib\pysnmp\v4\proto\rfc1905.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto
copying build\lib\pysnmp\v4\proto\rfc3411.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto
copying build\lib\pysnmp\v4\proto\rfc3412.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto
creating c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod
copying build\lib\pysnmp\v4\proto\secmod\base.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod
copying build\lib\pysnmp\v4\proto\secmod\rfc2576.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod
creating c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414
creating c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\auth
copying build\lib\pysnmp\v4\proto\secmod\rfc3414\auth\base.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\auth
copying build\lib\pysnmp\v4\proto\secmod\rfc3414\auth\hmacmd5.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\auth
copying build\lib\pysnmp\v4\proto\secmod\rfc3414\auth\hmacsha.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\auth
copying build\lib\pysnmp\v4\proto\secmod\rfc3414\auth\noauth.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\auth
copying build\lib\pysnmp\v4\proto\secmod\rfc3414\auth\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\auth
copying build\lib\pysnmp\v4\proto\secmod\rfc3414\localkey.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414
creating c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\priv
copying build\lib\pysnmp\v4\proto\secmod\rfc3414\priv\base.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\priv
copying build\lib\pysnmp\v4\proto\secmod\rfc3414\priv\des.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\priv
copying build\lib\pysnmp\v4\proto\secmod\rfc3414\priv\nopriv.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\priv
copying build\lib\pysnmp\v4\proto\secmod\rfc3414\priv\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\priv
copying build\lib\pysnmp\v4\proto\secmod\rfc3414\service.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414
copying build\lib\pysnmp\v4\proto\secmod\rfc3414\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414
creating c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3826
creating c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3826\priv
copying build\lib\pysnmp\v4\proto\secmod\rfc3826\priv\aes.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3826\priv
copying build\lib\pysnmp\v4\proto\secmod\rfc3826\priv\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3826\priv
copying build\lib\pysnmp\v4\proto\secmod\rfc3826\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3826
copying build\lib\pysnmp\v4\proto\secmod\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod
copying build\lib\pysnmp\v4\proto\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\proto
creating c:\Python26\Lib\site-packages\pysnmp\v4\smi
copying build\lib\pysnmp\v4\smi\builder.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi
copying build\lib\pysnmp\v4\smi\error.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi
copying build\lib\pysnmp\v4\smi\exval.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi
copying build\lib\pysnmp\v4\smi\indices.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi
copying build\lib\pysnmp\v4\smi\instrum.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi
creating c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\ASN1.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
creating c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances
copying build\lib\pysnmp\v4\smi\mibs\instances\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances
copying build\lib\pysnmp\v4\smi\mibs\instances\__PYSNMP-USM-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances
copying build\lib\pysnmp\v4\smi\mibs\instances\__SNMP-FRAMEWORK-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances
copying build\lib\pysnmp\v4\smi\mibs\instances\__SNMP-MPD-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances
copying build\lib\pysnmp\v4\smi\mibs\instances\__SNMP-TARGET-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances
copying build\lib\pysnmp\v4\smi\mibs\instances\__SNMP-USER-BASED-SM-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances
copying build\lib\pysnmp\v4\smi\mibs\instances\__SNMP-VIEW-BASED-ACM-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances
copying build\lib\pysnmp\v4\smi\mibs\instances\__SNMPv2-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances
copying build\lib\pysnmp\v4\smi\mibs\PYSNMP-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\PYSNMP-USM-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\RFC1155-SMI.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\RFC1213-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\SNMP-COMMUNITY-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\SNMP-FRAMEWORK-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\SNMP-MPD-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\SNMP-NOTIFICATION-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\SNMP-TARGET-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\SNMP-USER-BASED-SM-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\SNMP-USM-AES-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\SNMP-VIEW-BASED-ACM-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\SNMPv2-CONF.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\SNMPv2-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\SNMPv2-SMI.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\SNMPv2-TC.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\SNMPv2-TM.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\TRANSPORT-ADDRESS-MIB.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\mibs\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs
copying build\lib\pysnmp\v4\smi\view.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi
copying build\lib\pysnmp\v4\smi\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4\smi
copying build\lib\pysnmp\v4\__init__.py -> c:\Python26\Lib\site-packages\pysnmp\v4
copying build\lib\pysnmp\__init__.py -> c:\Python26\Lib\site-packages\pysnmp
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock\base.py to base.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock\dgram\base.py to base.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock\dgram\udp.py to udp.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock\dgram\unix.py to unix.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock\dgram\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock\dispatch.py to dispatch.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\asynsock\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\base.py to base.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\error.py to error.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted\base.py to base.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted\dgram\base.py to base.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted\dgram\udp.py to udp.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted\dgram\unix.py to unix.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted\dgram\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted\dispatch.py to dispatch.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\twisted\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\carrier\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\debug.py to debug.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\config.py to config.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\engine.py to engine.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\cmdgen.py to cmdgen.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\cmdrsp.py to cmdrsp.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\config.py to config.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\context.py to context.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\mibvar.py to mibvar.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\ntforg.py to ntforg.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\ntfrcv.py to ntfrcv.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\oneliner\cmdgen.py to cmdgen.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\oneliner\ntforg.py to ntforg.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\oneliner\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\twisted\cmdgen.py to cmdgen.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\twisted\ntforg.py to ntforg.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\twisted\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\rfc3413\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\entity\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\error.py to error.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\nextid.py to nextid.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\acmod\rfc3415.py to rfc3415.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\acmod\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\api\v1.py to v1.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\api\v2c.py to v2c.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\api\verdec.py to verdec.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\api\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\error.py to error.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\mpmod\base.py to base.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\mpmod\rfc2576.py to rfc2576.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\mpmod\rfc3412.py to rfc3412.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\mpmod\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\proxy\rfc2576.py to rfc2576.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\proxy\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\rfc1155.py to rfc1155.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\rfc1157.py to rfc1157.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\rfc1902.py to rfc1902.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\rfc1905.py to rfc1905.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\rfc3411.py to rfc3411.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\rfc3412.py to rfc3412.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\base.py to base.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc2576.py to rfc2576.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\auth\base.py to base.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\auth\hmacmd5.py to hmacmd5.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\auth\hmacsha.py to hmacsha.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\auth\noauth.py to noauth.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\auth\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\localkey.py to localkey.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\priv\base.py to base.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\priv\des.py to des.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\priv\nopriv.py to nopriv.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\priv\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\service.py to service.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3414\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3826\priv\aes.py to aes.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3826\priv\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\rfc3826\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\secmod\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\proto\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\builder.py to builder.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\error.py to error.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\exval.py to exval.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\indices.py to indices.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\instrum.py to instrum.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\ASN1.py to ASN1.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances\__PYSNMP-USM-MIB.py to __PYSNMP-USM-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances\__SNMP-FRAMEWORK-MIB.py to __SNMP-FRAMEWORK-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances\__SNMP-MPD-MIB.py to __SNMP-MPD-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances\__SNMP-TARGET-MIB.py to __SNMP-TARGET-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances\__SNMP-USER-BASED-SM-MIB.py to __SNMP-USER-BASED-SM-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances\__SNMP-VIEW-BASED-ACM-MIB.py to __SNMP-VIEW-BASED-ACM-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\instances\__SNMPv2-MIB.py to __SNMPv2-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\PYSNMP-MIB.py to PYSNMP-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\PYSNMP-USM-MIB.py to PYSNMP-USM-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\RFC1155-SMI.py to RFC1155-SMI.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\RFC1213-MIB.py to RFC1213-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\SNMP-COMMUNITY-MIB.py to SNMP-COMMUNITY-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\SNMP-FRAMEWORK-MIB.py to SNMP-FRAMEWORK-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\SNMP-MPD-MIB.py to SNMP-MPD-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\SNMP-NOTIFICATION-MIB.py to SNMP-NOTIFICATION-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\SNMP-TARGET-MIB.py to SNMP-TARGET-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\SNMP-USER-BASED-SM-MIB.py to SNMP-USER-BASED-SM-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\SNMP-USM-AES-MIB.py to SNMP-USM-AES-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\SNMP-VIEW-BASED-ACM-MIB.py to SNMP-VIEW-BASED-ACM-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\SNMPv2-CONF.py to SNMPv2-CONF.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\SNMPv2-MIB.py to SNMPv2-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\SNMPv2-SMI.py to SNMPv2-SMI.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\SNMPv2-TC.py to SNMPv2-TC.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\SNMPv2-TM.py to SNMPv2-TM.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\TRANSPORT-ADDRESS-MIB.py to TRANSPORT-ADDRESS-MIB.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\mibs\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\view.py to view.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\smi\__init__.py to __init__.pyc
byte-compiling c:\Python26\Lib\site-packages\pysnmp\v4\__init__.py to __init__.pyc
running install_scripts
copying build\scripts-2.6\build-pysnmp-mib -> c:\Python26\Scripts
copying build\scripts-2.6\libsmi2pysnmp -> c:\Python26\Scripts
running install_egg_info
Writing c:\Python26\Lib\site-packages\pysnmp-4.1.11a-py2.6.egg-info

K:\DownloadFiles\Python\pysnmp\pysnmp-4.1.11a>
posted by Mire at 16:43 | Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

【Malware】Avast!「ScriptSH-inf trj」警告の口封じ2〜鍵は拡張子解釈

結論!!


ピリオドが複数入ったファイル名に注意!! の巻


全てのアプリが、最後のピリオド以下を拡張子として解釈するとは限らない!!」の見本だ(爆笑)



 かつて、「Avast!「ScriptSH-inf trj」警告の口封じ(2009-06-04 15:10:01)」でclamwinがパターンファイルをDLしたときの作業ファイルにAvastのリアルタイム(オンアクセス)検索が働きウザイを断ち切る為の対応を紹介したが、実を言うと最近度々警告が出ていた。毎日と言う程でないので多少の手入れで放置していたが、本日も出たので、まあ良く調べてみるのもいいかなと思い、AVASTの警告ログを覗いてみた。すると次のことが判った。
  1. clamwinの一次ファイル作成フォルダが以前紹介分とは違っている。
  2. 見逃し易いが、ファイル名にピリオドが2つあり、アプリの実装により拡張子判断が2通り可能である。


そこで、現在当方のAVASTの「オンアクセス保護の管理」⇒「オンアクセススキャナ」窓内、「詳細な設定(C)...」⇒「常駐タスクの設定」窓内の「追加設定」タブ内の下部にあるリストには以下の3つが追加してある。多分これで暫くは黙ってくれることだろう。

  • C:\PROGRAMDATA\.CLAMWIN\DB\CLAMAV*.CLAMTMP
  • C:\Users\SysAdm\AppData\Lacal\Temp\clamav-*.clamtmp
  • C:\Users\SysAdm\AppData\Local\Temp\clamav-*.*.clamtmp


 複数ピリオドでavast側が判断をしくじるとは余り予想しない。まるで、当方の書いた正規表現並の反応だが、永いことやっているとこんなことを仕出かすことがある。アプリを作っている人はお気を付けあれ。

【Avast! 関連記事】


posted by Mire at 01:08 | Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年09月26日

Python pysnmpによる SNMP情報取得2

 Python pysnmpによる SNMP情報取得で取組んだ関数に、そこそこのチェック機能と各オブジェクト情報リストの生成迄の機能を加えたものを作成した。今回はそれに、単純にループで動作テストさせ、挙動を見て試た。
 ソースコードは以下の通りで、python2.6にpysnmp2.09をインストールしていれば動作する。
#!/usr/local/bin/python -O
# -*- coding: UTF8 -*-

###############################################################################
# PYTHONISTA'S PROCESS RECORDER PyPRec.py Ver.0.1.1pre用 SNMP情報取得試作 #
# PYTHON使いのプロセス記録ツール PyPRec.py Ver.0.1.1pre用 #
# COPYRIGHT BY Mire 2009-09-15 ( support url: http://pythonlife.seesaa.net/ ) #
# 2009-08-18 現在試作段階。でも連続DB記録は出来ています。 #
# 2009-08-20 前回取得のプロセス記録を初期値として読込み変移記録を可能にした #
# repeat intervalをミリ秒単位の制度で制御する様に変更 #
# 2009-08-20 wait秒計算式に分単位「*60」の漏れ誤りがあり修正 #
# 2009-08-21 うるう日をtime.mktime()を活用して解決 #
# 2009-08-24 TypeError障害対応: 停止時の状態が判る様にして再現待ちへ #
# 2009-09-25 データズレ対策の為 SNMP情報取得方法置換の為、関数群を作成 #
###############################################################################

# TODO
#  oidとの紐付き処理なのでデータズレは起り難いと思うが、oidの取得が出来るので
# MIB定義を利用した処理も視野に入った。当初は利用するMIBに対し個別対応で逃げる
# ことにするが、将来的には汎用性を高める為にMIB定義ファイルの取込迄組込みたい。



#### A. SNMPのGETREQUEST,GETNEXTREQUESTによる情報取得を行うCORE関数 ####
def snmp_core(ip,community,head_oids,port=161,retries=5,timeout=1,version='2c'):
"""
SNMPのGETREQUEST,GETNEXTREQUESTによる情報取得を行うCORE関数

#############################################################################
#この関数はsnmpwalk.pyに変更を加え作成。pysnmpのライセンス(FreeBSD Style)に #
#従い原作者の著作権表示をする(ライセンスの詳細はpysnmp-2.0.9のLISENCEを参照)#
# pysnmp-2.0.9/examples/snmpwalk.py #
# Written by Ilya Etingof <ilya@glas.net>, 2000-2002 #
#############################################################################

snmpはudpによる「梨のつぶて」通信なので反応が返ってこない場合も想定する必要がある。
エラー部分は全てNoneを返すので、呼出し側で、retry等適切な対処が求められる。
データの歯抜けチェックには指定oidの全てが各対象別に存在するかのチェックが必要だが、
oids複数指定時に交互処理で順不定となる仕組みの為、対象,OID順での並替えたものを返す
様にした。これも呼出し側でretry、部分取得、データの決め打ち補正、または端末状況を
検査し処理を飛ばす等の対応が求められる。この働きは呼出し側のsnmp_check()で実装予定。
"""

from pysnmp import asn1, v1, v2c
from pysnmp import role
from time import sleep
# 特定IP端末用SNMPマネージャの生成
client = role.manager((ip, port))

# オプション渡し
client.timeout = timeout
client.retries = retries

# Create a SNMP request&response objects from protocol version
# specific module.
try:
req = eval('v' + version).GETREQUEST() #eval()で'v'にversion引数の値の文字列を
nextReq = eval('v' + version).GETNEXTREQUEST() #足した変数名を作りREQUEST,NEXTREQUEST
rsp = eval('v' + version).GETRESPONSE() #,RESPONSEオブジェクトを生成
except (NameError, AttributeError):
print '非サポートのSNMPバージョン: %s' % (version)
return None # 呼出し側対応を想定しNoneを返す

# BER encode initial SNMP Object IDs to query
encoded_oids = map(asn1.OBJECTID().encode, head_oids)

datas=[] #帰り値用の空リストを準備
# Traverse agent MIB
while 1:
# Encode SNMP request message and try to send it to SNMP agent
# and receive a response
i=0
while i<=10:
try:
(answer, src) = client.send_and_receive(req.encode(community=community
, encoded_oids=encoded_oids))
break
except:
i=i+1
print 'timeout',i
sleep(0.1*i)
# Attempt to decode SNMP response
rsp.decode(answer)

# Make sure response matches request (request IDs, communities, etc)
if req != rsp:
print 'Unmatched response: %s vs %s' % (str(req), str(rsp))
print vars()
return None # 呼出し側でretry対応を想定しNoneを返す

# Decode BER encoded Object IDs.
oids = map(lambda x: x[0], map(asn1.OBJECTID().decode, \
rsp['encoded_oids']))

# Decode BER encoded values associated with Object IDs.
vals = map(lambda x: x[0](), map(asn1.decode, rsp['encoded_vals']))

# Check for remote SNMP agent failure
if rsp['error_status']:
# SNMP agent reports 'no such name' when walk is over
if rsp['error_status'] == 2:
# Switch over to GETNEXT req on error
# XXX what if one of multiple vars fails?
if not (req is nextReq):
req = nextReq
continue
# One of the tables exceeded
for l in oids, vals, head_oids:
del l[rsp['error_index']-1]
else:
print 'SNMP error #' + str(rsp['error_status']) \
+ ' for OID #' + str(rsp['error_index'])
return None

# Exclude completed OIDs
while 1:
for idx in range(len(head_oids)):
if not asn1.OBJECTID(head_oids[idx]).isaprefix(oids[idx]):
# One of the tables exceeded
#print u'【%s】' % (head_oids[idx]),
for l in oids, vals, head_oids:
del l[idx]
break
else:
break
if not head_oids:
datas.sort() # oid末尾,oid順で全データを並替
#for d in datas:
# print d
return datas # 出力形式: [[[5068, [1, 3, 6, 1, 2, 1, 25, 5, 1, 1, 2]], 672], ...]

# Print out results
for (oid, val) in map(None, oids, vals):
#print oid + ' ---> ' + str(val)
#datas.append([oid_str2list(oid),val])
ls=oid_str2list(oid) # データ歯抜けチェックの為対象別並替用oid加工
datas.append([[ls[-1],ls[:-1]],val]) # [[oid末尾, oid], 帰り値]

# BER encode next SNMP Object IDs to query
encoded_oids = map(asn1.OBJECTID().encode, oids)

# Update request object
req['request_id'] = req['request_id'] + 1

# Switch over GETNEXT PDU for if not done
if not (req is nextReq):
req = nextReq
#datas.sort()
datas.sort()
#for d in datas:
# print d
return datas # 出力形式: [[[5068, [1, 3, 6, 1, 2, 1, 25, 5, 1, 1, 2]], 672], ...]


#### B. snmp_core()の返す値が不首尾な場合のRetry,補正,処理不能(None返し)等を対応する関数 ####
def snmp_check(ip='localhost',community='public',head_oids=['.1.3.6.1.2.1.25.1']):
"""
snmp_core()の返す値が不首尾な場合のRetry,補正,処理不能(None返し)等を対応する関数

Noneを返した場合にはウェイトをかけながら、Retryし、不首尾を補正
snmp_coreが返す対象別並替後のリストが正常ならそのまま返し、
そうでないなら、retry または補正(未実装)し、正常値を返す
それも無理ならNoneを返し呼出し側での(処理飛ばし)対応を期待する
Noneを返した場合は処理飛ばしで対応させる(予定)
部分補正の為には、不具合リストを準備し記録させる(予定)
部分補正数が多い場合には全情報のRetry(予定)
上記、予定分は蛇足の可能性があるので、実装後必要により付加する
"""
from time import sleep
datas=snmp_core(ip=ip,community='public',head_oids=head_oids)
i=0
while datas is None:
i=i+1
sleep(0.1*i)
datas=snmp_core(ip=ip,community='public',head_oids=head_oids)
if i>10:
bleak
ids={}
i=1
for d in datas:
oid_str='.'+'.'.join(int2str(d[0][1]))
if not ids.has_key(oid_str):
ids[oid_str]=i
i=i+1
keys=ids.keys()
idlst=[]
for k in keys:
#print k,ids[k]
idlst.append(k) # oidのリスト。項目名として活用の為作成
idlst.sort()
# ここで、データの歯抜けとデータ型の不具合をチェックし、retryやデータ補正を加える(予定)
i=0
typ={}
for d in datas:
oid_str='.'+'.'.join(int2str(d[0][1]))
#print u'〆ids[oid_str]=',ids[oid_str],'d[0][1]=',d[0][1],'d=',d
if not ids[oid_str]==i+1:
print u'〆 not ids[oid_str]=i+1',ids[oid_str],d
print u'\aデータにズレが発生しています > 部分補正または情報全体をretry取得'
i=i+1
if i==len(idlst): i=0
if not typ.has_key(oid_str):
typ[oid_str]=type(d[0][1])
else:
if not typ[oid_str] is type(d[0][1]):
print '\aデータ型に不整合が発生しています > 部分補正または情報全体をretry取得'
#for d in datas:
# print d
return datas,idlst # 返す値はsnmp_core()と同じ形式の値と出力するデータのOIDのリスト


#### C. Storage,Process等の情報を対象別の正方リスト化して返す関数 ####
def snmp_info_list(oids=['.1.3.6.1.2.1.25.5.1.1','.1.3.6.1.2.1.25.2.3.1'],ip='localhost',community='public'):
"""
Storage,Process等の情報を対象別の正方リスト化して返す関数
"""
from types import ListType
st_types={}
datas,id_lst = snmp_check(ip=ip,community=community,head_oids=oids)
#要素順のリストを生成
d_dic={}
dats=[]
i=-1
p=-1
for d in datas:
if p==d[0][-2]:
i=i+1
else:
i=1
p=d[0][-2]
if not 1: #not i==d[0][-1]: # oidの飛び等で処理位置にズレが発生したら
vs=vars()
keys=vs.keys()
for k in keys:
if type(vs[k]) is ListType:
for v in vs[k]:
print k,'\t',v
else:
print k, vs[k]
#return None # Noneを返し呼出し側での対応を期待
#print d
if not d_dic.has_key(d[0][0]): # d_dicに、d[0][-1]のキーが存在しないなら
d_dic[d[0][0]]=[d[0][0],d[1]] # d[1]を要素とするリストを値にセット
else:
d_dic[d[0][0]]=d_dic[d[0][0]]+[d[1]] # 存在したら、その値にd[1]を追加
keys=d_dic.keys()
lst=[]
for k in keys:
# print k,'=',d_dic[k]
lst.append(d_dic[k]) # d_dicの値のリストを生成
lst.sort() # 整列し
return lst,id_lst # そのリストとoidのリストを返す



# 文字列表現のoidを整数のリストに変換
def oid_str2list(oid_str):
if oid_str[0]=='.': oid_str=oid_str[1:] #ピリオドで開始している場合にはそれを省き処理
oid = oid_str.split('.') #ピリオドを区切り文字として文字列リストを取得
i=0
for o_str in oid:
try:
oid[i]=int(o_str) #整数化が可能なら、整数値に置換え
except:
pass #そうでない場合には何もしない
i=i+1
return oid


# リスト内の全ての数字を文字列化して返す
def int2str(lst):
"""
リスト内の数字を文字列化して返す
"""
from types import ListType,TupleType,IntType,FloatType,StringTypes
ls=[]
for l in lst:
if l is ListType or l is TupleType:
ls.append(int2str(l))
else:
try:
if type(l) is IntType:
ls.append('%d' % (l)) #
elif type(l) is FloatType:
ls.append('%f' % (l)) #
elif type(l) is StringTypes:
ls.append(l) #
else:
ls.append(l) #
except:
ls.append(l) # 整数化不能ならそのまま
return ls



############################################
############################################
#以下は、上記関数群のテスト用のデータと処理#
############################################
############################################

#  REQUESTは原則関連のhead_oidで行ない、それを解析加工した形式で値を渡すようにする。
# 従って、以下のものを個別に関数化して活用することにする。
sysDescr_Hardware ='.1.3.6.1.2.1.1.1' # OSハードの切替がない限り不変
sysName ='.1.3.6.1.2.1.1.5' # システム名、DNS名と共に機器特定用に活用
sysContact ='.1.3.6.1.2.1.1.4.0' # 管理者の連絡先
sysLocation ='.1.3.6.1.2.1.1.6.0' # 物理的な設置場所

hrMemorySize ='.1.3.6.1.2.1.25.2.2' # ハードメモリサイズ
# 稼働中故障で切離されることがない限り不変

hrDeviceTypes ='.1.3.6.1.2.1.25.3.2.1.2' # 値が3(=hrDeviceProcessor)の数がCPUコア数
# 稼働中不変と思われる

hrSystemDate ='.1.3.6.1.2.1.25.1.2.0' # 端末クロックのローカル時刻 DateAndTime
# SNMP通信時
sysUpTimeInstance ='.1.3.6.1.2.1.1.3.0' # アップタイム boot時よりの累積時間
hrSystemUptime ='.1.3.6.1.2.1.25.1.1' # 累積秒
hrSWInstalledLastChange ='.1.3.6.1.2.1.25.6.1' # 累積秒
hrSWInstalledLastUpdateTime ='.1.3.6.1.2.1.25.6.2' # 累積秒

hrSystemProcesses ='.1.3.6.1.2.1.25.1.6.0' # プロセス数
hrSWRun ='.1.3.6.1.2.1.25.4.2.1' # プロセス情報
hrSWRunPerf ='.1.3.6.1.2.1.25.5.1.1' # プロセスパフォーム1:CPU,2:MEM

hrSWInstalled ='.1.3.6.1.2.1.25.6.3.1' # インストールソフト

hrProcessorLoad ='.1.3.6.1.2.1.25.3.3.1.2' # CPU使用率/min. コア別

hrStorage ='.1.3.6.1.2.1.25.2.3.1' # ストレージ情報1-7,使用率:6/5,残量:5-6
#,表示:3,Type:2,メモリ:Type=2,Virtual:Type=3
#,Type:4=HD,7=Disk,5=Remove,存否4:0Bytes
# Diskは使用量警告対象から外す
hrStorageTypes={
'.1.3.6.1.2.1.25.2.1.1' : [1, 'Other Storage','no other defined type'],
'.1.3.6.1.2.1.25.2.1.2' : [2, 'Physical Memory','RAM'],
'.1.3.6.1.2.1.25.2.1.3' : [3, 'Virtual Memory','virtual memory,temporary storage of swapped or paged memory'],
'.1.3.6.1.2.1.25.2.1.4' : [4, 'Hard Disk Drive','non-removable rigid rotating magnetic storage devices'],
'.1.3.6.1.2.1.25.2.1.5' : [5, 'Removable Media','removable rigid rotating magnetic storage devices'],
'.1.3.6.1.2.1.25.2.1.6' : [6, 'Floppy Drive','non-rigid rotating magnetic storage devices'],
'.1.3.6.1.2.1.25.2.1.7' : [7, 'Optical Storage','read-only rotating optical storage devices'],
'.1.3.6.1.2.1.25.2.1.8' : [8, 'Ram Disk Drive','file system that is stored in RAM'],
'.1.3.6.1.2.1.25.2.1.9' : [9, 'Flash Memory','flash memory'],
'.1.3.6.1.2.1.25.2.1.10': [10,'Network Disk','a networked file system'],
}

# 1.  SNMPの吐くデータは文字列と整数のみだが、文字列には日付を表すDateAndTimeという
# バイト別に日付を割当てた専用の形式で記録されているものがある。
# この目的のみでの必要性は低いがpysnmp_mibsの活用も何れは考えたい。
# 2.  プロセス情報は一括取得した配列で供給されるので、それを基にPyPRec組込む必要がある
# 同時に、途中で取得に失敗したものを返している場合には別途補完しなければならない。
# 3.  hrMemorySizeは、PyPRecで用いた自作関数mono_request()と異なりデータ取得出来る
# 4.  snmpwalk.py自体は、タイムアウト等不具合が発生し易い。ここではOID個別に指定することで
# いくらか安定する様には見える。



head_oids=[sysDescr_Hardware, sysName, hrMemorySize
, hrDeviceTypes, hrSystemProcesses, hrDeviceTypes, hrSystemDate, hrSWRun, hrSWInstalled
, sysUpTimeInstance, hrSystemUptime, hrSWInstalledLastChange, hrSWInstalledLastUpdateTime]

def snmp_lists(ip='192.168.0.25',head_oids=head_oids):
# PyPRecで取得してするSNMPデータをリストのままで表示
datas=[]
for head_oid in head_oids:
datas.append(snmp_check(ip='192.168.0.25',head_oids=[head_oid]))
i=0
for ds in datas:
print u'\n\n【%s】' % (head_oids[i])
for d in ds:
print d
i=i+1
#snmp_lists(ip='192.168.0.25',head_oids=head_oids)


#datas=snmp_check(ip='localhost',community='public',head_oids=[hrSWRunPerf,hrSWRun])
##datas.sort()
#for l in datas:
# print l[0],l

i=0
while i<10000:
hrStorage_lst,id_lst = snmp_info_list(ip='192.168.0.25',community='public',oids=[hrStorage])
for l in hrStorage_lst:
#pass
print l[0],l,hrStorageTypes[l[2]]

#print

hrSWRun_lst,id_lst = snmp_info_list(ip='192.168.0.25',community='public',oids=[hrSWRunPerf,hrSWRun])
for l in hrSWRun_lst:
pass
#print l[0],l
i=i+1
PyPRec_Error_Occured_INtervals_2009-09-25_2330.png ループ動作させて試みると面白いことに2分強の間隔でsnmp_core()でreq != rspが発生しretryされることだ。原因が、マネージャ側かエージェント側か、それともネットワーク間なのかは今後の切分けで明らかにする必要があるが、このテストコードの実行タイミングに関係なく発生時期に変動はないこと、実行している側の画面操作時にも発生することがあったので、マネージャ側にある可能性が高そうに思う。無論、この部分は、原作者のソースコードにもあることで当然発生するひととしてRETRYするので、実用には支障はない。また、書き殴り初版のPyPREcで発生したデータのズレも、OIDとの紐付けがあるので発生し難くなったことかとは思う。ただ確実かどうかは判らないので、簡易チェックを入れ、問題が発生した時にコンソール主力する形にしている。
 実装に当たっては、DB側にエラーを記録させ、統計的に解析出来る様にしようと思う。続きを読む
posted by Mire at 00:55 | Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年09月23日

Python pysnmpによる SNMP情報取得

 自作のmono_request()によるSNMP情報の取得時の情報ズレに対応する為の連続情報取得をする為の関数を、とりあえず、pysnmpのexamples内のsnmpwalk.pyを改造して作成した。コマンドライン引数で指定する仕様になっているものを、関数の引数に置換え、コマンド実行終了としている所をreturn Noneに、timeoutで処理をしくじる所にはwhileでループさせる等の手を加えた程度だ。機能はするが、今のところ起動時にmono_request程の安定動作は望めない様に見える。原因が判らないので取敢えずは、Noneを返した時にretryする様にして逃げることにし、PyPRecへの組込みを考えることにする。
#!/usr/local/bin/python -O
# -*- coding: UTF8 -*-

#  これは、pysnmpのexamplesにあるsnmpwalk.pyを関数仕様に書換え、
# 多少の変更を加えたもの。著作権の大半は原作者側にあるので、
# pysnmpのライセンスに従うことになる。
#
#  只、内容が充分に理解出来たら、大幅に書き換える可能性はあるが、まずは
# PyPRecでも部分利用でテストして行く。
#
# pysnmp-2.0.9/examples/snmpwalk.py
# Written by Ilya Etingof <ilya@glas.net>, 2000-2002

def snmpwalk_func(ip,community,head_oids,port=161,retries=5,timeout=1,version='2c'):
from pysnmp import asn1, v1, v2c
from pysnmp import role
from time import sleep
# 特定IP端末用SNMPマネージャの生成
client = role.manager((ip, port))

# オプション渡し
client.timeout = timeout
client.retries = retries

# Create a SNMP request&response objects from protocol version
# specific module.
try:
req = eval('v' + version).GETREQUEST() #eval()で'v'にversion引数の値の文字列を
nextReq = eval('v' + version).GETNEXTREQUEST() #足した変数名を作りREQUEST,NEXTREQUEST
rsp = eval('v' + version).GETRESPONSE() #,RESPONSEオブジェクトを生成
except (NameError, AttributeError):
print '非サポートのSNMPバージョン: %s' % (version)
return None # 呼出し側対応を想定しNoneを返す

# BER encode initial SNMP Object IDs to query
encoded_oids = map(asn1.OBJECTID().encode, head_oids)


datas=[] #帰り値用の空リストを準備
# Traverse agent MIB
while 1:
# Encode SNMP request message and try to send it to SNMP agent
# and receive a response
i=0
while i<=10:
try:
(answer, src) = client.send_and_receive(req.encode(community=community
, encoded_oids=encoded_oids))
break
except:
i=i+1
print 'timeout',i
sleep(0.1*i)
# Attempt to decode SNMP response
rsp.decode(answer)

# Make sure response matches request (request IDs, communities, etc)
if req != rsp:
print 'Unmatched response: %s vs %s' % (str(req), str(rsp))
print vars()
return None # 呼出し側でretry対応を想定しNoneを返す

# Decode BER encoded Object IDs.
oids = map(lambda x: x[0], map(asn1.OBJECTID().decode, \
rsp['encoded_oids']))

# Decode BER encoded values associated with Object IDs.
vals = map(lambda x: x[0](), map(asn1.decode, rsp['encoded_vals']))

# Check for remote SNMP agent failure
if rsp['error_status']:
# SNMP agent reports 'no such name' when walk is over
if rsp['error_status'] == 2:
# Switch over to GETNEXT req on error
# XXX what if one of multiple vars fails?
if not (req is nextReq):
req = nextReq
continue
# One of the tables exceeded
for l in oids, vals, head_oids:
del l[rsp['error_index']-1]
else:
print 'SNMP error #' + str(rsp['error_status']) \
+ ' for OID #' + str(rsp['error_index'])
return None

# Exclude completed OIDs
while 1:
for idx in range(len(head_oids)):
if not asn1.OBJECTID(head_oids[idx]).isaprefix(oids[idx]):
# One of the tables exceeded
#print u'【%s】' % (head_oids[idx]),
for l in oids, vals, head_oids:
del l[idx]
break
else:
break
if not head_oids:
return datas

# Print out results
for (oid, val) in map(None, oids, vals):
#print oid + ' ---> ' + str(val)
datas.append([oid_str2list(oid),val])

# BER encode next SNMP Object IDs to query
encoded_oids = map(asn1.OBJECTID().encode, oids)

# Update request object
req['request_id'] = req['request_id'] + 1

# Switch over GETNEXT PDU for if not done
if not (req is nextReq):
req = nextReq
return datas

# 文字列表現のoidを整数のリストに変換
def oid_str2list(oid_str):
if oid_str[0]=='.': oid_str=oid_str[1:] #ピリオドで開始している場合にはそれを省き処理
oid = oid_str.split('.') #ピリオドを区切り文字として文字列リストを取得
i=0
for o_str in oid:
try:
oid[i]=int(o_str) #整数化が可能なら、整数値に置換え
except:
pass #そうでない場合には何もしない
i=i+1
return oid

def test_snmpwalk_func(ip='localhost',community='public',head_oids=['.1.3.6.1.2.1.25.1']):
"""
Noneを返した場合にはウェイトをかけながら、Retryし、不首尾を補正
"""
from time import sleep
datas=snmpwalk_func(ip=ip,community='public',head_oids=head_oids)
i=0
while datas is None:
i=i+1
sleep(0.1*i)
datas=snmpwalk_func(ip=ip,community='public',head_oids=head_oids)
if i>10:
bleak
return datas


hrSystemProcesses ='.1.3.6.1.2.1.25.1.6.0' # プロセス数
hrDeviceTypes ='.1.3.6.1.2.1.25.3.2.1.2' # 値が3(=hrDeviceProcessor)の数がCPUコア数
hrSystemDate ='.1.3.6.1.2.1.25.1.2.0' # 端末側のクロック時刻
hrSWRun ='.1.3.6.1.2.1.25.4.2.1' # プロセス情報
hrMemorySize ='.1.3.6.1.2.1.25.2.2' # ハードメモリサイズ

head_oids=[hrSystemProcesses,hrDeviceTypes,hrSystemDate,hrSWRun,hrMemorySize]
datas=[]
for head_oid in head_oids:
datas.append(test_snmpwalk_func(ip='192.168.0.25',head_oids=[head_oid]))


# PyPRecで取得してするSNMPデータをリストのままで表示
i=0
for ds in datas:
print u'\n\n【%s】' % (head_oids[i])
for d in ds:
print d
i=i+1

# 1.  SNMPの吐くデータは文字列と整数のみだが、文字列には日付を表すDateAndTimeという
# バイト別に日付を割当てた専用の形式で記録されているものがある。
# この目的のみでの必要性は低いがpysnmp_mibsの活用も何れは考えたい。
# 2.  プロセス情報は一括取得した配列で供給されるので、それを基にPyPRec組込む必要がある
# 同時に、途中で取得に失敗したものを返している場合には別途補完しなければならない。
# 3.  hrMemorySizeは、PyPRecで用いた自作関数mono_request()と異なりデータ取得出来る
# 4.  snmpwalk.py自体は、タイムアウト等不具合が発生し易い。ここではOID個別に指定することで
# いくらか安定する様には見える。
続きを読む
posted by Mire at 14:46 | Comment(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年09月22日

Avast! 4 Home Edition ライセンスキー取得&登録

avast_about.png ちょいと前に、Avastがバージョンアップになったと騒ぎ出したので、バージョンアップしたところ、ライセンスキーの入力を求めらることになった。従来のライセンスキーで済ませていたが、どうもお気に召さない様で、後10日で期限切れと逆切れされそうな雰囲気。切れた後での対応を見るのも嫌いではないが、余計な手間は払いたくないし、毎日、右下に表示されるお知らせもちょいとウザイので、降参し素直に新しいライセンスキーを取得登録することにした。そして、多分この手のソフトは年1回程度のメジャープログラムが変更になりライセンスの更新となるだろうから、後日の為、ここに記録を残しておく。

    FreeAvastHomeEditionResist_http.png
  1.  右下のAvast!の常駐アイコンを右クリックして「Avast!について(A)」を選択すると、右図の様な窓が開く。その中の「登録」をダブルクリックすると「avast! 4 Home Edition の登録」のWeb頁を開くことが出来る。
  2.  このままでは、素のままで、Net上を個人情報が運ばれるので「登録フォームの暗号化された (SSL) バージョンは こちらです。」の「こちら」をクリック。
    FreeAvastHomeEditionResist_SSL.png
  3.  その上部の「適切なオプションを選択してください ... 」という結構テキトーな和約の3項目目にある次の行をクリックする。

    「すでに登録したユーザですがライセンスキーの期限が切れたので新しいライセンスが必要です」

  4.  「メールアドレス」と「メールアドレス再入力」欄にメールアドレスを、「お名前」欄に名前を入れ、「このプログラムを非営利的な目的で、なおかつ個人で使用することに同意します。」をチェックした上でControl letters欄に画像で書いてある文字を欄内に入れて「登録」ボタンを押す。SSLモードの場合。これら以外の項目も表示されるが、太字のもののみが必須だ。

     以上で、ライセンスキーが、指定したメールアドレスに送られて来ることになる。今回、そのメールがなかなか届かないのでヤキモキして再送してしまったが、2通同じ内容が送られて来た。また、誤って、メール内の「unregister@avast.com へ返送」を反射的にしてしまったので、その後再度登録作業をしたが、同じライセンスキーのメールが即帰って来たので、多分メールアドレスをキーにしてライセンスキーを管理しているのだろう。10日後に逆切れされることはないとは思う。

    FreeAvastHomeEditionResist_input.png
  5.  メールが届いたら、そのメールにある以下の様なキリトリの間の文字列をコピー。

    お客様のライセンスキーはこちらです。

    ---------- キ リ ト リ ----------
    A99999999B999999999-CDEF9GHI (dummy)
    ---------- キ リ ト リ ----------

    FreeAvastHomeEdition_Resist_response.png
  6.  「Avast!について...」窓の下にある「ライセンスキー(L)...」ボタンのクリックで開く「登録」窓にライセンスキーを貼付けてOKボタンを押す

 以上で、「Avast!について...」窓内のの更新期限が更新される。

 念の為、SSL頁の登録ボタンを押した後のレスポンス頁を掲載しておくが、support@avast.comは技術的サポートの模様。どうも、「延長の登録では返信用のメールボックスはこちらです: support@avast.com」の指示に従う必要はなさそうだ。判りずらい日本語登録画面の流れだと思う。まあ、無償利用なので強くは言えない。多分、SSLは手抜きなのだろう。

【Avast! 関連記事】


続きを読む
posted by Mire at 13:56 | Comment(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

プロセス記録ツール PyPRec.py の例外発生原因(仮説通りでないなら)

 前稿の仮説を確かなものとしようと思い、次のプログラムを実行して、Vistaを固めてしまい10分近く固めてしまった。今度は、

 怪我の功名

かも。

def main():
from os import popen
cmd = 'ping -n 1 localhost'
ppi=popen(cmd,'r')
lines = ppi.readlines()
ppi.close()
return lines
i=0
lsts=[]
while i<99999999:
main()
i=i+1
一応最悪でも99999999回実行後止まる様にしたのだが、CTRL+Cで停止する「KeyboardInterrupt」の割込む余裕を準備していない。従って、CTRL+Cを押すとVista君はダンマリ。はい、この行為自体は

 藪蛇。

ところが、これでVistaを臨界迄虐めた結果、同時起動していた「プロセス記録ツール PyPRec.py」8つの内7つが悲鳴を上げて停止してしまった。

4件: TypeError: 'int' object is unsubscriptable
1件: pysnmp.role.NetworkError: connect() error: ('localhost', 161): [Errno 11001] getaddrinfo failed
2件: pysnmp.role.NetworkError: send() error: [Errno 10057] ソケットが接続されていないか、sendto 呼び出しを使ってデータグラム ソケットで送信するときにアドレスが指定されていないため、データの送受信を要求することは禁じられています。

これらは予想出来る結果で特に取上げる程のものではないが、たった一つだが、止まらずに障害時の最後の声を上げ固まった奴がいた。次がその断末魔の叫びだ。相当に苦しかった様で結構長い叫びなので、今回は中略し掲載させて頂いた。
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS 192.168.0.25 PID:1189
sleeping 189.734 seconds. (2009, 9, 21, 23, 28, 37, 363000) I wake up and look watch before 60seconds (23, 31, 55, 940000) sleep again 0.59 seconds.
next_tm= (2009, 9, 21, 23, 36, 57, 96000) doing main job (23, 31, 58, 426000)
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:26

<中略>

■NOT EXISTS localhost PID:7076
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:7128
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:7157
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:7164
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:7176
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
想定外の値です。5秒待って再実行して試ます。 ['.0.0']
再実行しましたが本来、整数である筈のPIDとして返って来た値が化けています。
0x43 0x3a 0x5c 0x50 0x79 0x74 0x68 0x6f 0x6e 0x32 0x36 0x5c 継続処理の為、PIDにダミーの数字を設定し流します。
■NOT EXISTS localhost PID:7186
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:7213
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:7219
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:7224
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:7280

<中略>

■NOT EXISTS localhost PID:7176
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
想定外の値です。5秒待って再実行して試ます。 ['.0.0']
再実行しましたが本来、整数である筈のPIDとして返って来た値が化けています。
0x43 0x3a 0x5c 0x50 0x79 0x74 0x68 0x6f 0x6e 0x32 0x36 0x5c 継続処理の為、PIDにダミーの数字を設定し流します。
■NOT EXISTS localhost PID:7186
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:7213

<中略>

■NOT EXISTS localhost PID:7616
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
想定外の値です。5秒待って再実行して試ます。 ['.0.0']
再実行しましたが本来、整数である筈のPIDとして返って来た値が化けています。
0x43 0x3a 0x5c 0x57 0x69 0x6e 0x64 0x6f 0x77 0x73 0x5c 0x73 0x79 0x73 0x74 0x65 0x6d 0x33 0x32 0x5c 継続処理の為、PIDにダミーの数字を設定し流します。
■NOT EXISTS localhost PID:7626
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:7627

<中略>

■NOT EXISTS localhost PID:7744
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
想定外の値です。5秒待って再実行して試ます。 ['.0.0']
再実行しましたが本来、整数である筈のPIDとして返って来た値が化けています。
0x43 0x3a 0x5c 0x50 0x79 0x74 0x68 0x6f 0x6e 0x32 0x36 0x5c 継続処理の為、PIDにダミーの数字を設定し流します。
■NOT EXISTS localhost PID:7754
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:7760

<中略>

■NOT EXISTS localhost PID:8488
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
想定外の値です。5秒待って再実行して試ます。 ['.0.0']
再実行しましたが本来、整数である筈のPIDとして返って来た値が化けています。
0x43 0x3a 0x5c 0x57 0x69 0x6e 0x64 0x6f 0x77 0x73 0x5c 0x73 0x79 0x73 0x74 0x65 0x6d 0x33 0x32 0x5c 継続処理の為、PIDにダミーの数字を設定し流します。
■NOT EXISTS localhost PID:8498
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:8499

<中略>

■NOT EXISTS localhost PID:8828
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
想定外の値です。5秒待って再実行して試ます。 ['.0.0']
再実行しましたが本来、整数である筈のPIDとして返って来た値が化けています。
0x43 0x3a 0x5c 0x50 0x79 0x74 0x68 0x6f 0x6e 0x32 0x36 0x5c 継続処理の為、PIDにダミーの数字を設定し流します。
■NOT EXISTS localhost PID:8838
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:8844

<中略>

■NOT EXISTS localhost PID:9176
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
想定外の値です。5秒待って再実行して試ます。 ['.0.0']
再実行しましたが本来、整数である筈のPIDとして返って来た値が化けています。
0x43 0x3a 0x5c 0x50 0x79 0x74 0x68 0x6f 0x6e 0x32 0x36 0x5c 継続処理の為、PIDにダミーの数字を設定し流します。
■NOT EXISTS localhost PID:9186
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:9192

<中略>

■NOT EXISTS localhost PID:9496
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
想定外の値です。5秒待って再実行して試ます。 ['.0.0']
再実行しましたが本来、整数である筈のPIDとして返って来た値が化けています。
0x43 0x3a 0x5c 0x50 0x79 0x74 0x68 0x6f 0x6e 0x32 0x36 0x5c 継続処理の為、PIDにダミーの数字を設定し流します。
■NOT EXISTS localhost PID:9506
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:9512

<中略>

■NOT EXISTS localhost PID:9756
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
想定外の値です。5秒待って再実行して試ます。 ['.0.0']
再実行しましたが本来、整数である筈のPIDとして返って来た値が化けています。
0x43 0x3a 0x5c 0x50 0x79 0x74 0x68 0x6f 0x6e 0x32 0x36 0x5c 継続処理の為、PIDにダミーの数字を設定し流します。
■NOT EXISTS localhost PID:9766
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:9872
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:9884
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
想定外の値です。5秒待って再実行して試ます。 ['.0.0']
再実行しましたが本来、整数である筈のPIDとして返って来た値が化けています。
0x43 0x3a 0x5c 0x50 0x79 0x74 0x68 0x6f 0x6e 0x32 0x36 0x5c 継続処理の為、PIDにダミーの数字を設定し流します。
■NOT EXISTS localhost PID:9894
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:9921
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:9960
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
想定外の値です。5秒待って再実行して試ます。 ['.0.0']
再実行しましたが本来、整数である筈のPIDとして返って来た値が化けています。
0x43 0x3a 0x5c 0x57 0x69 0x6e 0x64 0x6f 0x77 0x73 0x5c 0x73 0x79 0x73 0x74 0x65 0x6d 0x33 0x32 0x5c 継続処理の為、PIDにダミーの数字を設定し流します。
■NOT EXISTS localhost PID:9970
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:9976

<中略>

■NOT EXISTS localhost PID:11981
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS localhost PID:11984
【2009-08-23 23:45:16.891にTypeError例外発生】この時はツール停止に至る重大な障害でした。
再現待ちの不具合が再度発生しました。list rsの内容を確認して対処方法を検討して下さい
出力を確認したところプロセス情報のrsに本来数値である筈のPID等が''になる等 本来取得出来る筈のデータ取得が出来なくなる事がある様だ。発生原因を断つ上流での改善か、 その様な場合に処理をスキップさせ連続動作を確保する必要がある。
rs= [[1, '', 4, '', '', 0, 0, 0, 0], [156, '', '', '', '', 0, 0, 0, 0], [296, '', '', '', '', 0, 0, 0, 0], [308, '', '', '', '', 0, 0, 316, 0], [320, '', '', '', '', 0, 0, 0, 0], [324, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localho
st', 4, 1, 9]
, [2056, '', '', '', '', 0, 0, 0, 0], [328, '', '', '', '', 0, 0, 0, 0], [332, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 3], [1532, '', '', '', '', 0, 0, 0, 0], [348, '', '', '', '', 0, 0, 0, 0], [408, '
', '', '', '', 0, 0, 0, 0], [504, '', '', '', '', 0, 0, 0, 0], [568, '', '', '', '', 0, 0, 0, 0], [620, '', '', '', '', 0, 0, 0, 0], [640, '', '', '', '', 0, 0, 0, 0], [684, '', '', '', '', 0, 0, 692, 0], [732, '', '', '', '', 0, 0, 0, 0], [760, '', '', ''
, '', 0, 0, 0, 0], [776, '', '', '', '', 0, 0, 0, 0], [788, '', '', '', '', 0, 0, 0, 0], [920, '', '', 924, '', 0, 0, 0, 0], [944, '', '', '', '', 0, 0, 0, 0], [952, '', '', 956, '', 0, 0, 0, 0], [1032, '', '', '', '', 0, 0, 0, 0], [1100, '', '', '', '', 0
, 0, 0, 0], [1140, '', '', '', '', 0, 0, 0, 0], [1228, '', '', '', '', 0, 0, 0, 0], [1256, '', '', '', '', 0, 0, 0, 0], [1268, '', '', '', '', 0, 0, 0, 0], [1304, '', '', '', '', 0, 0, 0, 0], [1348, '', '', 1352, '', 0, 0, 0, 0], [1400, '', '', '', '', 0,
0, 0, 0], [1444, '', '', '', '', 0, 0, 0, 0], [1492, '', '', '', '', 0, 0, 0, 0], [1524, '', '', '', '', 0, 0, 0, 0], [1536, '', '', '', '', 0, 0, 0, 0], [1552, 'taskeng.exe', '', '.0.0', '', '{F40DEAB7-6803-4D49-AB5C-8025A3FB3F2C}', 4, 1, 335], [2340, '',
'', '', '', 0, 0, 0, 0], [1644, '', '', '', '', 0, 0, 0, 0], [1676, '', '', '', '', 0, 0, 1684, 0], [1688, '', '', '', '', 0, 0, 0, 0], [1704, 'cmd.exe', '', '.0.0', 'C:\\Windows\\System32\\', ' ', 4, 1, 9], [84, '', '', '', '', 0, 0, 0, 0], [1732, '', ''
, '', '', 0, 0, 0, 0], [1748, '', '', '', '', 0, 0, 0, 0], [1780, '', '', '', '', 0, 0, 0, 0], [1856, '', '', 1860, '', 0, 0, 0, 0], [1876, '', '', '', '', 0, 0, 0, 0], [1884, '', '', '', '', 0, 0, 0, 0], [1908, '', '', '', '', 0, 0, 0, 0], [2088, '', '',
2092, '', 0, 0, 0, 0], [2116, '', '', '', '', 0, 0, 0, 0], [2152, '', '', '', '', 0, 0, 0, 0], [2228, '', '', '', '', 0, 0, 2236, 0], [2312, '', '', 2316, '', 0, 0, 0, 0], [2324, '', '', 2328, '', 0, 0, 0, 0], [2356, '', '', '', '', 0, 0, 0, 0], [2380, '',
'', '', '', 0, 0, 0, 0], [2384, '', '', '', '', 0, 0, 2392, 0], [2396, 'bgsvcgen.exe', '', '.0.0', 'C:\\Windows\\system32\\', 0, 4, 1, 1], [80, '', '', '', '', 0, 0, 0, 0], [2424, '', '', '', '', 0, 0, 0, 0], [2436, '', '', '', '', 0, 0, 2444, 0], [2448,
'', '', '', '', 0, 0, 0, 0], [2468, '', '', '', '', 0, 0, 0, 0], [2516, '', '', '', '', 0, 0, 0, 0], [2572, '', '', '', '', 0, 0, 0, 0], [2588, '', '', '', '', 0, 0, 0, 0], [2624, '', '', '', '', 0, 0, 0, 0], [2640, '', '', '', '', 0, 0, 0, 0], [2696, '',
'', '', '', 0, 0, 2704, 0], [2724, '', '', '', '', 0, 0, 0, 0], [2736, '', '', '', '', 0, 0, 2744, 0], [2772, '', '', '', '', 0, 0, 0, 0], [2784, '', '', '', '', 0, 0, 0, 0], [2800, 'RtHDVCpl.exe', '', '.0.0', 'C:\\Windows\\', ' ', 4, 1, 20], [88, '', '',
'', '', 0, 0, 0, 0], [2820, '', '', 2824, '', 0, 0, 0, 0], [2836, '', '', '', '', 0, 0, 0, 0], [2916, '', '', '', '', 0, 0, 2924, 0], [2944, '', '', '', '', 0, 0, 2952, 0], [2960, '', '', '', '', 0, 0, 0, 0], [2976, 'fppdis2a.exe', '', '.0.0', 'C:\\Windows
\\System32\\spool\\drivers\\w32x86\\3\\', ' ', 4, 1, 32], [132, '', '', '', '', 0, 0, 0, 0], [3004, '', '', '', '', 0, 0, 3012, 0], [3020, '', '', '', '', 0, 0, 0, 0], [3032, '', '', '', '', 0, 0, 0, 0], [3056, '', '', '', '', 0, 0, 0, 0], [3088, '', '', '
', '', 0, 0, 3096, 0], [3108, '', '', '', '', 0, 0, 0, 0], [3148, '', '', '', '', 0, 0, 0, 0], [3436, '', '', '', '', 0, 0, 3444, 0], [3468, '', '', '', '', 0, 0, 3476, 0], [3496, '', '', '', '', 0, 0, 0, 0], [3508, '', '', '', '', 0, 0, 3516, 0], [3548, '
', '', '', '', 0, 0, 0, 0], [3568, '', '', '', '', 0, 0, 0, 0], [3576, '', '', '', '', 0, 0, 0, 0], [3612, '', '', '', '', 0, 0, 0, 0], [3660, '', '', '', '', 0, 0, 0, 0], [3752, '', '', '', '', 0, 0, 3760, 0], [3768, '', '', '', '', 0, 0, 0, 0], [3780, ''
, '', 3784, 'ClamTray.exe', 0, '.0.0', 0, 0], [4, 1, 1720, 772, '', 0, 0, 0, 0], [3848, '', '', '', '', 0, 0, 3856, 0], [3884, '', '', '', '', 0, 0, 3892, 0], [3900, '', '', '', '', 0, 0, 0, 0], [3928, '', '', '', '', 0, 0, 0, 0], [3948, '', '', '', '', 0,
0, 0, 0], [3956, '', '', '', '', 0, 0, 0, 0], [4044, '', '', '', '', 0, 0, 0, 0], [4056, '', '', '', '', 0, 0, 0, 0], [4068, '', '', '', '', 0, 0, 0, 0], [4108, '', '', 4112, '', 0, 0, 0, 0], [4140, '', '', '', '', 0, 0, 0, 0], [4172, '', '', '', '', 0, 0
, 0, 0], [4188, '', '', '', '', 0, 0, 4196, 0], [4204, 'mobsync.exe', '', '.0.0', '', 0, 4, 1, 26], [80, '', '', '', '', 0, 0, 4212, 0], [4220, 'SDWinSec.exe', '.0.0', 'C:\\Program Files\\Spybot - Search & Destroy\\', '', 4, 1, 1556, 4288], [4276, '', '',
'', '', 0, 0, 0, 0], [4364, '', '', '', '', 0, 0, 4372, 0], [4376, '', '', 4380, '', 0, 0, 0, 0], [4392, 'ehtray.exe', '', '.0.0', 'C:\\Windows\\ehome\\', ' ', 4, 1, 14], [344, '', '', '', '', 0, 0, 0, 0], [4404, '', '', 4408, 'cmd.exe', '.0.0', 'C:\\Windo
ws\\System32\\', 0, 4], [1, 9, 644, '', '', 0, 0, 0, 0], [4436, '', '', '', '', 0, 0, 4444, 0], [4460, '', '', '', '', 0, 0, 0, 0], [4468, '', '', '', '', 0, 0, 0, 0], [4536, '', '', '', '', 0, 0, 0, 0], [4548, '', '', '', '', 0, 0, 0, 0], [4568, '', '', 4
572, '', 0, 0, 0, 0], [4580, '', '', '', '', 0, 0, 4588, 0], [4604, '', '', '', '', 0, 0, 0, 0], [4624, '', '', '', '', 0, 0, 0, 0], [4636, '', '', '', '', 0, 0, 0, 0], [4660, '', '', '', '', 0, 0, 0, 0], [4680, '', '', '', '', 0, 0, 0, 0], [4768, '', '',
'', '', 0, 0, 0, 0], [4796, '', '', '', '', 0, 0, 0, 0], [4808, '', '', 4812, '', 0, 0, 0, 0], [4828, '', '', '', '', 0, 0, 0, 0], [4844, '', '', 4848, '', 0, 0, 4852, 0], [4860, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4
, 1, 3], [1988, '', '', '', '', 0, 0, 0, 0], [4892, '', '', '', '', 0, 0, 0, 0], [4924, '', '', '', '', 0, 0, 0, 0], [5028, '', '', '', '', 0, 0, 0, 0], [5068, '', '', '', '', 0, 0, 0, 0], [5112, '', '', 5116, '', 0, 0, 0, 0], [5140, '', '', '', '', 0, 0,
0, 0], [5248, '', '', '', '', 0, 0, 0, 0], [5260, '', '', '', '', 0, 0, 5268, 0], [5324, '', '', '', '', 0, 0, 0, 0], [5344, '', '', 5348, '', 0, 0, 0, 0], [5396, '', '', '', '', 0, 0, 0, 0], [5412, '', '', '', '', 0, 0, 0, 0], [5440, '', '', '', '', 0, 0,
0, 0], [5456, '', '', '', '', 0, 0, 0, 0], [5480, '', '', 5484, '', 0, 0, 0, 0], [5516, '', '', '', '', 0, 0, 0, 0], [5576, '', '', '', '', 0, 0, 0, 0], [5652, '', '', 5656, '', 0, 0, 5660, 0], [5708, '', '', '', '', 0, 0, 0, 0], [5724, '', '', '', '', 0,
0, 0, 0], [5748, '', '', 5752, '', 0, 0, 5756, 0], [5760, '', '', '', '', 0, 0, 0, 0], [5788, '', '', '', '', 0, 0, 0, 0], [5848, '', '', '', '', 0, 0, 0, 0], [5896, '', '', '', '', 0, 0, 5904, 0], [5936, '', '', '', '', 0, 0, 0, 0], [5976, '', '', '', ''
, 0, 0, 0, 0], [6068, '', '', '', '', 0, 0, 0, 0], [6120, '', '', '', '', 0, 0, 0, 0], [6152, '', '', 6156, '', 0, 0, 0, 0], [6168, '', '', '', '', 0, 0, 6176, 0], [6184, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 9],
[1888, '', '', 6188, '', 0, 0, 6192, 0], [6200, 'python.exe', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10, 2560], [6204, '', '', '', '', 0, 0, 0, 0], [6216, '', '', 6220, '', 0, 0, 0, 0], [6236, '', '', '', '', 0,
0, 6244, 0], [6260, '', '', '', '', 0, 0, 0, 0], [6268, '', '', '', '', 0, 0, 0, 0], [6280, '', '', 6284, 'python.exe', 0, '.0.0', 0, 0], [4, 1, 12, 1880, '', 0, 0, 0, 0], [6292, '', '', 6296, 'python.exe', 0, '.0.0', 0, 0], [4, 1, 9, 1864, '', 0, 0, 0, 0]
, [6300, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 7], [1892, '', '', '', '', 0, 0, 0, 0], [6304, '', '', '', '', 0, 0, 0, 0], [6316, '', '', 6320, '', 0, 0, 6324, 0], [6328, '', '', 6332, '', 0, 0, 0, 0], [6340, '',
'', '', '', 0, 0, 0, 0], [6348, '', '', 6352, '', 0, 0, 6356, 0], [6364, '', '', '', '', 0, 0, 0, 0], [6380, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [1896, '', '', '', '', 0, 0, 0, 0], [6392
, '', '', '', '', 0, 0, 0, 0], [6400, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 7], [1916, '', '', 6404, '', 0, 0, 6408, 0], [6420, '', '', 6424, '', 0, 0, 0, 0], [6432, '', '', 6436, '', 0, 0, 6440, 0], [6452, '', '
', 6456, '', 0, 0, 0, 0], [6464, '', '', 6468, '', 0, 0, 0, 0], [6480, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 9], [1916, '', '', '', '', 0, 0, 6488, 0], [6496, 'cmd.exe', '.0.0', 'C:\\Windows\\sy
stem32\\', '/c ping -n 1 localhost', 4, 1, 9, 1896], [6504, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 9, 1876], [6512, '', '', '', '', 0, 0, 6520, 0], [6532, '', '', '', '', 0, 0, 6540, 0], [6556, '', '', '', '', 0, 0, 0
, 0], [6564, '', '', 6568, '', 0, 0, 0, 0], [6580, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 12], [1892, '', '', '', '', 0, 0, 6588, 0], [6596, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping
-n 1 localhost', 4, 1, 10, 1864], [6604, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 6, 1908], [6608, '', '', 6612, '', 0, 0, 0, 0], [6620, '', '', '', '', 0, 0, 0, 0], [6632, '', '', 6636, '', 0, 0, 0, 0], [6648, '', '',
6652, '', 0, 0, 0, 0], [6664, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 9], [1956, '', '', '', '', 0, 0, 0, 0], [6680, 'python.exe', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1,
12, 1884], [6688, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 4, 1960], [6696, '', '', '', '', 0, 0, 6704, 0], [6724, '', '', 6728, '', 0, 0, 0, 0], [6736, '', '', '', '', 0, 0, 6744, 0], [6752, 'cmd.exe', '', '.0.0', 'C:\
\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 7], [1888, '', '', '', '', 0, 0, 0, 0], [6768, 'python.exe', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 15, 1940], [6776, 'cmd.exe', '.0.0', 'C:\\Windows\\system3
2\\', '/c ping -n 1 localhost', 4, 1, 4, 1852], [6784, '', '', '', '', 0, 0, 0, 0], [6800, '', '', '', '', 0, 0, 0, 0], [6804, '', '', '', '', 0, 0, 0, 0], [6816, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 6], [1852,
'', '', 6820, 'python.exe', 0, '.0.0', 0, 0], [4, 1, 10, 1844, '', 0, 0, 0, 0], [6832, '', '', 6836, '', 0, 0, 0, 0], [6848, '', '', 6852, '', 0, 0, 0, 0], [6860, '', '', '', '', 0, 0, 0, 0], [6868, '', '', '', '', 0, 0, 0, 0], [6880, '', '', '', '', 0, 0,
0, 0], [6892, '', '', 6896, 'python.exe', 0, '.0.0', 0, 0], [4, 1, 7, 1868, '', 0, 0, 0, 0], [6908, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 7], [1928, '', '', '', '', 0, 0, 0, 0], [6920, '', '', 6924, '', 0, 0, 0,
0], [6932, '', '', 6936, '', 0, 0, 6940, 0], [6948, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [1912, '', '', 6952, '', 0, 0, 6956, 0], [6964, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c
ping -n 1 localhost', 4, 1, 7, 1948], [6976, '', '', 6980, '', 0, 0, 0, 0], [6988, '', '', '', '', 0, 0, 6996, 0], [7000, '', '', '', '', 0, 0, 0, 0], [7004, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 15], [1972, '',
'', '', '', 0, 0, 0, 0], [7012, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 9], [1908, '', '', 7016, '', 0, 0, 7020, 0], [7028, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost',
4, 1, 4, 1956], [7040, '', '', '', '', 0, 0, 7048, 0], [7052, '', '', '', '', 0, 0, 0, 0], [7064, '', '', '', '', 0, 0, 0, 0], [7068, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 14], [1916, '', '', '', '', 0, 0, 0, 0],
[7076, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [1880, '', '', '', '', 0, 0, 7084, 0], [7096, '', '', '', '', 0, 0, 7104, 0], [7112, '', '', '', '', 0, 0, 0, 0], [7132, '', '', 7136, '', 0, 0
, 0, 0], [7148, '', '', 7152, '', 0, 0, 0, 0], [7160, '', '', '', '', 0, 0, 0, 0], [7168, '', '', '', '', 0, 0, 7176, 0], [-10000, ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 14, 1924, 0, 0, 0], [7188, '', '', 7192, '', 0, 0, 0, 0], [7200, '',
'', '', '', 0, 0, 7208, 0], [7212, '', '', '', '', 0, 0, 0, 0], [7216, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [1960, '', '', '', '', 0, 0, 0, 0], [7224, 'cmd.exe', '', '.0.0', 'C:\\Windows\\
system32\\', '/c ping -n 1 localhost', 4, 1, 9], [1916, '', '', '', '', 0, 0, 7232, 0], [7240, 'python.exe', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10, 1960], [7252, '', '', '', '', 0, 0, 7260, 0], [7264, '', '',
'', '', 0, 0, 0, 0], [7280, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 12], [1984, '', '', '', '', 0, 0, 7288, 0], [7300, '', '', 7304, '', 0, 0, 0, 0], [7312, '', '', '', '', 0, 0, 7320, 0], [7324,
'', '', '', '', 0, 0, 0, 0], [7332, '', '', '', '', 0, 0, 7340, 0], [7348, '', '', '', '', 0, 0, 7356, 0], [7368, '', '', 7372, '', 0, 0, 0, 0], [7380, '', '', 7384, '', 0, 0, 7388, 0], [7412, '', '', 7416, '', 0, 0, 0, 0], [7428, '', '', 7432, '', 0, 0, 0
, 0], [7440, '', '', '', '', 0, 0, 0, 0], [7448, '', '', 7452, '', 0, 0, 0, 0], [7472, '', '', '', '', 0, 0, 7480, 0], [7484, '', '', '', '', 0, 0, 0, 0], [7496, '', '', '', '', 0, 0, 0, 0], [7508, '', '', 7512, '', 0, 0, 0, 0], [7520, '', '', '', '', 0, 0
, 0, 0], [7536, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 12], [1964, '', '', '', '', 0, 0, 7544, 0], [7548, '', '', '', '', 0, 0, 0, 0], [7556, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Us
ers\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 7], [1912, '', '', '', '', 0, 0, 7564, 0], [7580, '', '', '', '', 0, 0, 7588, 0], [7600, '', '', '', '', 0, 0, 0, 0], [7608, '', '', 7612, '', 0, 0, 7616, 0], [-10000, '/c ping -n 1 localhost', 4, 1, 6, 2796,
0, 0, 0], [7620, '', '', '', '', 0, 0, 0, 0], [7628, '', '', 7632, '', 0, 0, 7636, 0], [7652, '', '', '', '', 0, 0, 0, 0], [7656, '', '', '', '', 0, 0, 7664, 0], [7672, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 6], [
1812, '', '', '', '', 0, 0, 7680, 0], [7684, '', '', 7688, 'python.exe', '.0.0', 'C:\\Python26\\', 0, 4], [1, 9, 1900, '', '', 0, 0, 0, 0], [7692, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 18], [192
8, '', '', '', '', 0, 0, 0, 0], [7700, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 7, 1940], [7708, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 9, 2728], [7712, '', '', '', '', 0, 0, 7720,
0], [7728, '', '', '', '', 0, 0, 0, 0], [7736, '', '', '', '', 0, 0, 7744, 0], [-10000, ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10, 1884, 0, 0, 0], [7752, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 6]
, [1976, '', '', '', '', 0, 0, 0, 0], [7760, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 15], [1952, '', '', '', '', 0, 0, 7768, 0], [7772, '', '', '', '', 0, 0, 0, 0], [7780, 'cmd.exe', '', '.0.0', '
C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 4], [1920, '', '', '', '', 0, 0, 7788, 0], [7796, 'python.exe', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 12, 1988], [7804, 'cmd.exe', '.0.0', 'C:\\Windows\\s
ystem32\\', '/c ping -n 1 localhost', 4, 1, 9, 1912], [7820, '', '', '', '', 0, 0, 0, 0], [7828, '', '', '', '', 0, 0, 0, 0], [7844, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 7], [1972, '', '', 7848, '', 0, 0, 7852,
0], [7856, '', '', '', '', 0, 0, 0, 0], [7864, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 6], [1992, '', '', 7868, '', 0, 0, 7872, 0], [7888, '', '', '', '', 0, 0, 7896, 0], [7904, '', '', '', '', 0, 0, 7912, 0], [792
0, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 9], [1980, '', '', '', '', 0, 0, 7928, 0], [7932, '', '', 7936, 'python.exe', '.0.0', 'C:\\Python26\\', 0, 4], [1, 10, 1928, '', '', 0, 0, 0, 0], [7944, '', '', '', '', 0,
0, 0, 0], [7956, '', '', '', '', 0, 0, 7964, 0], [7972, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [1872, '', '', 7976, '', 0, 0, 0, 0], [7984, '', '', '', '', 0, 0, 0, 0], [7996, '', '', '', '
', 0, 0, 8004, 0], [8008, '', '', 8012, '', 0, 0, 0, 0], [8036, '', '', '', '', 0, 0, 8044, 0], [8052, '', '', '', '', 0, 0, 0, 0], [8064, '', '', '', '', 0, 0, 0, 0], [8072, '', '', '', '', 0, 0, 0, 0], [8084, '', '', 8088, 'python.exe', 0, '.0.0', 0, 0],
[4, 1, 12, 1900, '', 0, 0, 0, 0], [8096, '', '', '', '', 0, 0, 0, 0], [8108, '', '', 8112, '', 0, 0, 0, 0], [8120, '', '', '', '', 0, 0, 8128, 0], [8132, '', '', '', '', 0, 0, 0, 0], [8136, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\
\Desktop\\PyPRec\\ping.py"', 4, 1, 12], [1952, '', '', '', '', 0, 0, 0, 0], [8144, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 7], [1984, '', '', '', '', 0, 0, 0, 0], [8156, '', '', 8160, 'cmd.exe', '
.0.0', 'C:\\Windows\\system32\\', 0, 4], [1, 6, 1872, '', '', 0, 0, 0, 0], [8168, '', '', 8172, '', 0, 0, 8176, 0], [8184, '', '', 8188, '', 0, 0, 0, 0], [8200, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 6], [1860, ''
, '', '', '', 0, 0, 0, 0], [8212, '', '', 8216, 'python.exe', '.0.0', 'C:\\Python26\\', 0, 4], [1, 9, 1884, '', '', 0, 0, 0, 0], [8224, '', '', '', '', 0, 0, 0, 0], [8236, '', '', 8240, '', 0, 0, 8244, 0], [8252, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system
32\\', '/c ping -n 1 localhost', 4, 1, 7], [1892, '', '', '', '', 0, 0, 8260, 0], [8264, '', '', '', '', 0, 0, 0, 0], [8276, '', '', 8280, '', 0, 0, 0, 0], [8288, '', '', '', '', 0, 0, 8296, 0], [8300, '', '', '', '', 0, 0, 0, 0], [8304, 'python.exe', '',
'.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [1920, '', '', '', '', 0, 0, 0, 0], [8316, '', '', '', '', 0, 0, 0, 0], [8328, '', '', 8332, '', 0, 0, 0, 0], [8340, '', '', '', '', 0, 0, 0, 0], [8344, 'cmd.exe', '', '
.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 6], [1780, '', '', '', '', 0, 0, 0, 0], [8356, '', '', '', '', 0, 0, 8364, 0], [8368, '', '', 8372, '', 0, 0, 8376, 0], [8392, '', '', '', '', 0, 0, 0, 0], [8404, '', '', 8408, '', 0, 0, 0,
0], [8416, '', '', '', '', 0, 0, 0, 0], [8432, '', '', '', '', 0, 0, 8440, 0], [8448, '', '', '', '', 0, 0, 0, 0], [8460, '', '', '', '', 0, 0, 0, 0], [8472, '', '', '', '', 0, 0, 0, 0], [8480, '', '', '', '', 0, 0, 8488, 0], [-10000, '/c ping -n 1 localho
st', 4, 1, 7, 2008, 0, 0, 0], [8492, '', '', '', '', 0, 0, 0, 0], [8512, '', '', '', '', 0, 0, 8520, 0], [8524, '', '', '', '', 0, 0, 0, 0], [8540, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 9], [189
2, '', '', '', '', 0, 0, 8548, 0], [8556, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 7, 1960], [8564, 'python.exe', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 9, 1864], [8568, '', ''
, '', '', 0, 0, 8576, 0], [8588, '', '', '', '', 0, 0, 8596, 0], [8604, '', '', '', '', 0, 0, 0, 0], [8616, '', '', '', '', 0, 0, 0, 0], [8624, '', '', 8628, '', 0, 0, 0, 0], [8640, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost'
, 4, 1, 9], [1916, '', '', '', '', 0, 0, 0, 0], [8652, '', '', 8656, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', 0, 4], [1, 7, 1884, '', '', 0, 0, 0, 0], [8672, '', '', '', '', 0, 0, 8680, 0], [8688, '', '', '', '', 0, 0, 0, 0], [8700, '', '', 8704, 'pyt
hon.exe', 0, '.0.0', 0, 0], [4, 1, 7, 1892, '', 0, 0, 0, 0], [8712, '', '', '', '', 0, 0, 0, 0], [8720, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [2724, '', '', '', '', 0, 0, 8728, 0], [8736, '
cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 6, 1868], [8752, '', '', '', '', 0, 0, 8760, 0], [8772, '', '', 8776, '', 0, 0, 0, 0], [8792, '', '', 8796, '', 0, 0, 8800, 0], [8812, '', '', 8816, '', 0, 0, 0, 0], [8820, '', ''
, '', '', 0, 0, 8828, 0], [-10000, ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 12, 1988, 0, 0, 0], [8836, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 12], [1872, '', '', '', '', 0, 0, 0, 0
], [8848, '', '', '', '', 0, 0, 8856, 0], [8864, '', '', '', '', 0, 0, 0, 0], [8876, '', '', 8880, 'python.exe', 0, '.0.0', 0, 0], [4, 1, 10, 1888, '', 0, 0, 0, 0], [8888, '', '', '', '', 0, 0, 0, 0], [8904, '', '', '', '', 0, 0, 8912, 0], [8920, '', '', '
', '', 0, 0, 8928, 0], [8940, '', '', '', '', 0, 0, 0, 0], [8952, '', '', 8956, '', 0, 0, 0, 0], [8964, '', '', '', '', 0, 0, 0, 0], [8980, '', '', '', '', 0, 0, 0, 0], [8992, '', '', 8996, '', 0, 0, 9000, 0], [9008, 'cmd.exe', '', '.0.0', 'C:\\Windows\\sy
stem32\\', '/c ping -n 1 localhost', 4, 1, 4], [1968, '', '', '', '', 0, 0, 9016, 0], [9020, '', '', 9024, 'python.exe', '.0.0', 'C:\\Python26\\', 0, 4], [1, 10, 1872, '', '', 0, 0, 0, 0], [9040, '', '', '', '', 0, 0, 0, 0], [9052, '', '', 9056, '', 0, 0,
0, 0], [9064, '', '', '', '', 0, 0, 0, 0], [9068, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [2556, '', '', '', '', 0, 0, 0, 0], [9072, '', '', '', '', 0, 0, 0, 0], [9080, 'cmd.exe', '', '.0.0',
'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 4], [1932, '', '', '', '', 0, 0, 9088, 0], [9092, '', '', 9096, 'python.exe', '.0.0', 'C:\\Python26\\', 0, 4], [1, 12, 1900, '', '', 0, 0, 0, 0], [9108, '', '', '', '', 0, 0, 9116, 0], [9120, '',
'', 9124, '', 0, 0, 0, 0], [9132, '', '', '', '', 0, 0, 0, 0], [9140, '', '', '', '', 0, 0, 0, 0], [9160, '', '', '', '', 0, 0, 0, 0], [9168, '', '', 9172, '', 0, 0, 9176, 0], [-10000, ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10, 1900, 0, 0,
0], [9184, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 4], [1968, '', '', '', '', 0, 0, 0, 0], [9200, '', '', '', '', 0, 0, 9208, 0], [9228, '', '', '', '', 0, 0, 9236, 0], [9248, '', '', 9252, '', 0, 0, 0, 0], [9260,
'', '', '', '', 0, 0, 0, 0], [9272, '', '', '', '', 0, 0, 0, 0], [9280, '', '', '', '', 0, 0, 0, 0], [9296, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 6], [1884, '', '', '', '', 0, 0, 0, 0], [9308, '', '', 9312, 'pyt
hon.exe', '.0.0', 'C:\\Python26\\', 0, 4], [1, 10, 1856, '', '', 0, 0, 0, 0], [9316, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 9], [1952, '', '', '', '', 0, 0, 0, 0], [9320, '', '', 9324, 'python.ex
e', '.0.0', 'C:\\Python26\\', 0, 4], [1, 9, 1880, '', '', 0, 0, 0, 0], [9336, '', '', '', '', 0, 0, 9344, 0], [9356, '', '', 9360, '', 0, 0, 0, 0], [9368, '', '', '', '', 0, 0, 0, 0], [9384, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\
\Desktop\\PyPRec\\ping.py"', 4, 1, 7], [1892, '', '', '', '', 0, 0, 9392, 0], [9404, '', '', 9408, '', 0, 0, 0, 0], [9416, '', '', '', '', 0, 0, 9424, 0], [9432, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 7], [2112, '
', '', '', '', 0, 0, 9440, 0], [9452, '', '', 9456, '', 0, 0, 0, 0], [9468, '', '', '', '', 0, 0, 0, 0], [9480, '', '', '', '', 0, 0, 0, 0], [9488, '', '', '', '', 0, 0, 9496, 0], [-10000, ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10, 1876, 0
, 0, 0], [9504, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 6], [1956, '', '', '', '', 0, 0, 0, 0], [9516, '', '', 9520, '', 0, 0, 0, 0], [9528, '', '', '', '', 0, 0, 9536, 0], [9544, 'python.exe', '', '.0.0', 'C:\\Pyt
hon26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [1848, '', '', '', '', 0, 0, 9552, 0], [9564, '', '', 9568, '', 0, 0, 0, 0], [9576, '', '', '', '', 0, 0, 9584, 0], [9592, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysA
dm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [1992, '', '', '', '', 0, 0, 9600, 0], [9608, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 4, 2016], [9616, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost',
4, 1, 4, 1964], [9636, '', '', 9640, '', 0, 0, 0, 0], [9648, '', '', '', '', 0, 0, 9656, 0], [9660, '', '', '', '', 0, 0, 0, 0], [9672, '', '', 9676, '', 0, 0, 0, 0], [9684, '', '', '', '', 0, 0, 9692, 0], [9696, '', '', '', '', 0, 0, 0, 0], [9700, 'python
.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [1872, '', '', '', '', 0, 0, 0, 0], [9712, '', '', '', '', 0, 0, 0, 0], [9728, '', '', '', '', 0, 0, 0, 0], [9740, '', '', '', '', 0, 0, 0, 0], [9748, '', '',
'', '', 0, 0, 9756, 0], [-10000, ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 9, 1828, 0, 0, 0], [9768, '', '', '', '', 0, 0, 9776, 0], [9784, '', '', '', '', 0, 0, 9792, 0], [9800, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysA
dm\\Desktop\\PyPRec\\ping.py"', 4, 1, 12], [1988, '', '', '', '', 0, 0, 9808, 0], [9816, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 4, 1920], [9832, '', '', '', '', 0, 0, 9840, 0], [9856, '', '', '', '', 0, 0, 0, 0], [986
8, '', '', '', '', 0, 0, 0, 0], [9876, '', '', '', '', 0, 0, 9884, 0], [-10000, ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10, 1860, 0, 0, 0], [9896, '', '', 9900, '', 0, 0, 0, 0], [9924, '', '', '', '', 0, 0, 9932, 0], [9944, '', '', '', '',
0, 0, 0, 0], [9952, '', '', '', '', 0, 0, 9960, 0], [-10000, '/c ping -n 1 localhost', 4, 1, 12, 1968, 0, 0, 0], [9968, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [1992, '', '', '', '', 0, 0, 0,
0], [9976, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 12], [1912, '', '', '', '', 0, 0, 9984, 0], [9992, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 9, 1932], [1000
0, 'python.exe', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 12, 1924], [10008, '', '', '', '', 0, 0, 0, 0], [10028, '', '', '', '', 0, 0, 10036, 0], [10040, '', '', 10044, '', 0, 0, 0, 0], [10060, '', '', 10064, '', 0
, 0, 0, 0], [10072, '', '', 10076, '', 0, 0, 0, 0], [10084, '', '', '', '', 0, 0, 0, 0], [10092, '', '', '', '', 0, 0, 0, 0], [10104, '', '', 10108, '', 0, 0, 0, 0], [10116, '', '', '', '', 0, 0, 0, 0], [10124, '', '', '', '', 0, 0, 10132, 0], [10144, '',
'', 10148, '', 0, 0, 0, 0], [10160, 'cmd.exe', '', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 4], [1900, '', '', 10164, '', 0, 0, 10168, 0], [10172, '', '', '', '', 0, 0, 0, 0], [10196, '', '', 10200, '', 0, 0, 0, 0], [10208, '', ''
, 10212, '', 0, 0, 10216, 0], [10232, '', '', '', '', 0, 0, 0, 0], [10248, '', '', '', '', 0, 0, 0, 0], [10264, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [1940, '', '', '', '', 0, 0, 10272, 0],
[10288, '', '', '', '', 0, 0, 10296, 0], [10312, '', '', '', '', 0, 0, 0, 0], [10320, '', '', '', '', 0, 0, 0, 0], [10336, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [2072, '', '', '', '', 0, 0
, 10344, 0], [10360, '', '', '', '', 0, 0, 10368, 0], [10384, '', '', '', '', 0, 0, 0, 0], [10392, '', '', '', '', 0, 0, 0, 0], [10408, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 9], [2176, '', '', '
', '', 0, 0, 10416, 0], [10432, '', '', '', '', 0, 0, 10440, 0], [10456, '', '', '', '', 0, 0, 0, 0], [10464, '', '', '', '', 0, 0, 0, 0], [10480, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [217
2, '', '', '', '', 0, 0, 10488, 0], [10504, '', '', '', '', 0, 0, 10512, 0], [10528, '', '', '', '', 0, 0, 0, 0], [10536, '', '', '', '', 0, 0, 0, 0], [10552, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4,
1, 9], [1980, '', '', '', '', 0, 0, 10560, 0], [10576, '', '', '', '', 0, 0, 10584, 0], [10600, '', '', '', '', 0, 0, 0, 0], [10608, '', '', '', '', 0, 0, 0, 0], [10624, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\pin
g.py"', 4, 1, 10], [2004, '', '', '', '', 0, 0, 10632, 0], [10648, '', '', '', '', 0, 0, 10656, 0], [10672, '', '', '', '', 0, 0, 0, 0], [10680, '', '', '', '', 0, 0, 0, 0], [10696, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\
\PyPRec\\ping.py"', 4, 1, 9], [1992, '', '', '', '', 0, 0, 10704, 0], [10720, '', '', '', '', 0, 0, 10728, 0], [10744, '', '', '', '', 0, 0, 0, 0], [10752, '', '', '', '', 0, 0, 0, 0], [10768, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAd
m\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [2032, '', '', '', '', 0, 0, 0, 0], [10780, '', '', '', '', 0, 0, 0, 0], [10796, '', '', '', '', 0, 0, 10804, 0], [10820, '', '', '', '', 0, 0, 0, 0], [10828, '', '', '', '', 0, 0, 0, 0], [10844, 'python.exe', '',
'.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 9], [2036, '', '', '', '', 0, 0, 10852, 0], [10868, '', '', '', '', 0, 0, 10876, 0], [10892, '', '', '', '', 0, 0, 0, 0], [10900, '', '', '', '', 0, 0, 0, 0], [10916, 'python
.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 14], [1928, '', '', '', '', 0, 0, 10924, 0], [10940, '', '', '', '', 0, 0, 10948, 0], [10964, '', '', '', '', 0, 0, 0, 0], [10972, '', '', '', '', 0, 0, 0, 0], [10
988, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [1900, '', '', '', '', 0, 0, 10996, 0], [11012, '', '', '', '', 0, 0, 11020, 0], [11036, '', '', '', '', 0, 0, 0, 0], [11048, '', '', '', '', 0, 0
, 0, 0], [11064, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [1952, '', '', '', '', 0, 0, 0, 0], [11080, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 6, 1956], [1
1096, '', '', '', '', 0, 0, 11104, 0], [11120, '', '', '', '', 0, 0, 0, 0], [11128, '', '', '', '', 0, 0, 0, 0], [11144, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [1984, '', '', '', '', 0, 0, 1
1152, 0], [11168, '', '', '', '', 0, 0, 11176, 0], [11192, '', '', '', '', 0, 0, 0, 0], [11200, '', '', '', '', 0, 0, 0, 0], [11216, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 9], [1972, '', '', '',
'', 0, 0, 11224, 0], [11240, '', '', '', '', 0, 0, 11248, 0], [11264, '', '', '', '', 0, 0, 0, 0], [11276, '', '', '', '', 0, 0, 0, 0], [11292, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 12], [1984,
'', '', '', '', 0, 0, 11300, 0], [11316, '', '', '', '', 0, 0, 11324, 0], [11340, '', '', '', '', 0, 0, 0, 0], [11352, '', '', '', '', 0, 0, 0, 0], [11368, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1,
10], [1980, '', '', '', '', 0, 0, 11376, 0], [11392, '', '', '', '', 0, 0, 11400, 0], [11416, '', '', '', '', 0, 0, 0, 0], [11424, '', '', '', '', 0, 0, 0, 0], [11440, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.
py"', 4, 1, 10], [1948, '', '', '', '', 0, 0, 0, 0], [11456, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 9, 1984], [11488, '', '', '', '', 0, 0, 11496, 0], [11520, '', '', '', '', 0, 0, 11528, 0], [11544, '', '', '', '', 0
, 0, 0, 0], [11552, '', '', '', '', 0, 0, 0, 0], [11568, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 10], [1936, '', '', '', '', 0, 0, 11576, 0], [11592, '', '', '', '', 0, 0, 11600, 0], [11616, '', '
', '', '', 0, 0, 0, 0], [11624, '', '', '', '', 0, 0, 0, 0], [11640, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 9], [1996, '', '', '', '', 0, 0, 11648, 0], [11664, '', '', '', '', 0, 0, 0, 0], [11680
, '', '', '', '', 0, 0, 0, 0], [11700, '', '', '', '', 0, 0, 11708, 0], [11724, '', '', '', '', 0, 0, 0, 0], [11732, '', '', '', '', 0, 0, 0, 0], [11748, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 12
], [2156, '', '', '', '', 0, 0, 0, 0], [11764, 'cmd.exe', '.0.0', 'C:\\Windows\\system32\\', '/c ping -n 1 localhost', 4, 1, 7, 2100], [11784, '', '', '', '', 0, 0, 11792, 0], [11808, '', '', '', '', 0, 0, 0, 0], [11896, '', '', '', '', 0, 0, 0, 0], [11912
, '', '', '', '', 0, 0, 11920, 0], [11936, '', '', '', '', 0, 0, 0, 0], [11948, '', '', '', '', 0, 0, 0, 0], [11964, 'python.exe', '', '.0.0', 'C:\\Python26\\', ' "C:\\Users\\SysAdm\\Desktop\\PyPRec\\ping.py"', 4, 1, 14], [2500, '', '', '', '', 0, 0, 0, 0]
, [11976, '', '', '', '', 0, 0, 0, 0]]
◆NEW PROCESS: localhost[00001] 0secs 0kbite
◆NEW PROCESS: localhost[00156] 0secs 0kbite
◆NEW PROCESS: localhost[00296] 0secs 0kbite
◆NEW PROCESS: localhost[00308] 316secs 0kbite
◆NEW PROCESS: localhost[00320] 0secs 0kbite
◆NEW PROCESS: localhost[00324]cmd.exe 1secs 9kbite C:\Windows\system32\ .0.0
SQL実行が出来ませんでした★ INSERT INTO PROCESSES (TRM_IP, PID, PNAME, REQ_DATE, TRM_DATE, TIME_LAG
,RUNID, PATH, PARAMS, TYPES, STATUS, PERF_CPU, PERF_MEM
,DELTA_CPU, DELTA_MEM ,CPU_USAGE, MEM_USAGE, INTERVAL_SECS, CPU_CORES
,ORDER_NO, PIDS, HARD_MEM)VALUES('localhost',324,'cmd.exe','2009-09-21 23:36:34.550','2009-09-21 23:36:34.800', 0.250000
,'','.0.0','C:\Windows\system32\','/c ping -n 1 localhost',4, 1,9
,0,0,0.000000,0.000431,0.000000,0
,6,1148,2086592
);
kinterbasdb.OperationalError(-802): isc_dsql_execute:
arithmetic exception, numeric overflow, or string truncation
sleeping -312.637 seconds. (2009, 9, 21, 23, 42, 9, 780000)


 詳細の解析は今後の課題だが、前稿同様に、項目データがズレが発生し16進数表示が断続的に発生した一方でコンソール上の出力順番が安定しなくなっている。
 確率的に低いかもしれないが、OS処理も含めたツール側の別課題があるのかもしれない。以前マルチスレッド対応の仕様変更がアプリに影響を与えることを経験したこともあるので、頭の隅に留置いた上で、前稿の方向で進めて試ることにする。
タグ:Python
posted by Mire at 03:12 | Comment(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年09月21日

プロセス記録ツール PyPRec.py の例外発生原因(仮説?いや多分結論だろう)

 結論から言うと、

郷に入れば郷に従え
入郷随俗
When in Roma, do as the Romans do
A dónde fueres, haz lo que vieres

と言うことだったのかと今は思う。

 Runningテストには結構時間がかかるもので、ようやく継続的な例外エラー発生を出すことに成功し、且つ、その中で偶然ではあるが、たまたま、当方が、同ツールの稼働PCを操作しようとした時に、プロセス情報取得途中で例外発生がによる障害が発生した為、その時のデータ状況が画面出力がされその状況を見ることが出来た。

 この障害状況が全ての場合と迄は言えない。しかし、この様なことが、何らかの原因で発生する可能性があるとこは確かである。尚、問題のrsリストは、そのデータ列を判り易くする為にスペースと改行を加え桁揃えをさせて頂いた。
sleeping  185.734 seconds. (2009, 9, 21, 18, 28, 35, 310000) I wake up and look watch before 60seconds (18, 31, 41, 50000) sleep again 9.993 seconds.
next_tm= (2009, 9, 21, 18, 36, 51, 44000) doing main job (18, 31, 51, 46000)
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS 192.168.0.25 PID:785
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS 192.168.0.25 PID:793
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS 192.168.0.25 PID:829
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS 192.168.0.25 PID:853
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS 192.168.0.25 PID:889
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS 192.168.0.25 PID:945
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS 192.168.0.25 PID:961
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS 192.168.0.25 PID:977
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS 192.168.0.25 PID:1001
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS 192.168.0.25 PID:1017
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS 192.168.0.25 PID:1049
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS 192.168.0.25 PID:1137
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS 192.168.0.25 PID:1181
SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
■NOT EXISTS 192.168.0.25 PID:1189
【2009-08-23 23:45:16.891にTypeError例外発生】この時はツール停止に至る重大な障害でした。
再現待ちの不具合が再度発生しました。list rsの内容を確認して対処方法を検討して下さい
出力を確認したところプロセス情報のrsに本来数値である筈のPID等が''になる等本来取得出来る筈のデータ取得が出来なくなる事がある様だ。発生原因を断つ上流での改善か、その様な場合に処理をスキップさせ連続動作を確保する必要がある。
rs= [
[ 1, 'System Idle Process', '.0.0', '', '', 2, 1, 763993779, 16],
[ 8, 'System', '.0.0', '', '', 2, 1, 10038701, 236],
[ 136, 'smss.exe', '.0.0', '', '', 4, 1, 60, 684],
[ 168, 'csrss.exe', '.0.0', '', '', 4, 1, 395709, 14068],
[ 188, 'winlogon.exe', '.0.0', '', '', 4, 1, 3531082, 7196],
[ 212, 'fbserver.exe', '.0.0', '', '', 4, 1, 1990, 7840],
[ 216, 'services.exe', '.0.0', '', '', 4, 1, 1943215, 9280],
[ 228, 'lsass.exe', '.0.0', '', '', 4, 1, 287989, 1704],
[ 284, 'imejpmgr.exe', '.0.0', '', '', 4, 1, 5415, 1676],
[ 408, 'svchost.exe', '.0.0', '', '', 4, 1, 5985, 2124],
[ 436, 'spoolsv.exe', '.0.0', '', '', 4, 1, 6948, 5556],
[ 464, 'Apache.exe', '.0.0', '', '', 4, 1, 40, 1276],
[ 488, 'Apache.exe', '.0.0', '', '', 4, 1, 1985, 3096],
[ 728, 'httpd.exe', '.0.0', '', '', 4, 1, 70, 4524],
[ 768, 'AppToService.ex', '.0.0', '', '', 4, 1, 743, 1316],
[ 784, 784, 'svchost.exe', '.0.0', '', 0, 4, 1, 11950],
[8672, '', '', '', '', 0, 0, 0, 0],
[ 792, '', '', '', '', 0, 0, 0, 0],
[ 828, '', '', '', '', 0, 0, 0, 0],
[ 852, '', '', '', '', 0, 0, 0, 0],
[ 888, '', '', '', '', 0, 0, 0, 0],
[ 944, '', '', '', '', 0, 0, 0, 0],
[ 960, '', '', '', '', 0, 0, 0, 0],
[ 976, '', '', '', '', 0, 0, 0, 0],
[1000, '', '', '', '', 0, 0, 0, 0],
[1016, '', '', '', '', 0, 0, 0, 0],
[1048, '', '', '', '', 0, 0, 0, 0],
[1136, '', '', '', '', 0, 0, 0, 0],
[1180, '', '', '', '', 0, 0, 0, 0],
[1188, '', '', '', '', 0, 0, 0, 0]]
SQL実行が出来ませんでした★ INSERT INTO PROCESSES (TRM_IP, PID, PNAME, REQ_DATE, TRM_DATE, TIME_LAG
,RUNID, PATH, PARAMS, TYPES, STATUS, PERF_CPU, PERF_MEM
,DELTA_CPU, DELTA_MEM ,CPU_USAGE, MEM_USAGE, INTERVAL_SECS, CPU_CORES
,ORDER_NO, PIDS, HARD_MEM)VALUES('192.168.0.25',784,'784','2009-09-21 18:31:51.055','2009-09-21 18:31:51.000', -0.055000
,'svchost.exe','.0.0','','0',4, 1,11950
,0,68,0.000000,1.140215,41999.900000,0
,16,74,1048048);
kinterbasdb.OperationalError(-802): isc_dsql_execute:
arithmetic exception, numeric overflow, or string truncation
sleeping 189.931 seconds. (2009, 9, 21, 18, 33, 31, 113000)
 プロセスIDが784のときに何とプロセスIDが重複記録され、その後のデータ型もズレが発生しているのがご覧頂けるかと思う。また、このrsリストのプロセスIDとツールの例外発生時のものが異なってしまっている。ちょいと、ソースコードの見直しも必要とは思うが、SNMPエージェント側の不具合か受取るツール側の問題かは不明ながら、データがズレる現象が発生し、その後は全て思惑通りのレスポンスを得ることが出来なくなってしまっている。

 まだ仮説段階ではあるが、「プロセス記録ツール PyPRec.py」の特殊な取得手順がSNMPエージェント側とのズレに追随出来ないことが、この原因でないかとの疑いを強く抱くに至っている。
 通常のSNMPマネージャでは、プロセス等の一連の情報取得では「GETREQUEST」で一つ上のOIDにアクセス後は「GETNEXTREQUEST」を使い NET-SNMPのsnmpwalkの様に数珠繋ぎに全てのデータを連続取得し、その後でそのデータのツリー構造を照合し活用しているものと思うが、「プロセス記録ツール PyPRec.py」では、このツリー構造が、複数の情報取得アクセス間で変化しないことを前提にOIDが同一の位置にデータがあるものとして処理をしている。一連のPIDをOIDを一つずつ増やして取得した後で、プロセス数に変化が起き、結果として、PIDの位置とOIDの位置に整合性がなくなったことがことの真相ではないだろうか。ことは当然有り得るものとして、システム作りをすべきであったととうことかと思う。

 また、「SNMPによるPNAME取得失敗。」がほぼ毎回発生しているのは、複数の「プロセス記録ツール PyPRec.py」を僅かな時間差で起動した場合だ。決めつけは良くないが「プロセス記録ツール PyPRec.py」では、全体のメモリ使用量情報の取得が、自作関数で取得出来ないとこから、popen()でsnmpwalkを実行しているので、その実行時にプロセス数とOID位置に変化が正確に発生していることが充分に考えられる。

 問題の関数mono_request()は元々、@当方の勉強不足で「GETNEXTREQUEST」の必要性を正確に理解していなかった為、A余計なデータ取得でトラフィックを増やしたくないと考え、B同じOIDの情報を変化前に捕捉したいという思いから、即同じサブOIDで横断的情報取得をする仕組みがいいだろうと発想し作ったものであることにあったのかと思う。まあ、考えてみれば、発生原因として納得性もある。
郷に入れば郷に従え。他のmanagerツールの作法と異なる処理をしたら、そこで現れる不具合は唯の仕様であり、規格上のbugとして救われることはないと言うことかと思う。

 これで、気持ちの上ではちょいとすっきりした。後は、pysnmpを良く調べ理解して、 mono_request() に代わる trace_request() を早く完成させ一連のプロセス情報取得をそちらに置換えることかと思う。結果として最終、mono_request() は不要になるかと思う。さて、いつ頃完成か...


 ただ、一言、最後の足掻きで言いたい。

「この結論は当り前過ぎで嫌いだ!!」従いますが...
posted by Mire at 22:37 | Comment(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年09月13日

プロセス記録ツール PyPRec.py の例外発生のその後と負荷について

 その後も連続運用試験で、多少の障害対策と切分け用のコード変更を追加しているが、なかなか再現されずにいる。障害が起きるときは結構集中して起きるものなのか、結構斑があるのでこの手のツールのテストは大変だ。
 その中で、ほぼ傾向が掴めたものは、timeoutになるもので、ツール側の過負荷時に発生した。通常はこの手のツールはサーバ上に負荷を考慮して設置するのが当り前なので、あまり起きることではないと思うが、とりあえず、try:except:で8回程retryする様にして再現待ちとしている。また、再現しないので原因はつかめていないが、mono_snmp()が返す文字列のはずの値の型が意味不明の16進文字となる件は、再現したら画面にその16進コードが表示される様にしている。

usage_of_PyPRec.png 現在の連続運用テストでは、PyPRecを7つ起動しているが、そのうち5つは、起動タイミングを重ね、処理が被った場合の障害発生を想定した運用とた結果、CPU負荷は100%となることが発生していたので、この短期的なCPU負荷を低減する為、snmp通信の間隔を0.008秒に変更して試みた。100%のすぐ後のなだらか平たい山がそれで、これ迄の0.001秒単独分は50%程度の山を作っている。タスクマネージャは通常1秒単位でのCPU使用率なのでこの様な表示になるが、今のPyPRecの設定では300秒単位なので、殆ど負荷がない様に見えることになる。
usage_of_PyPRec_by_PyPRec.png この落差が頭にないと管理にならない。今回、PyPRecでした様にループ処理内で適切にCPUを解放するとこで、真に処理の同時性が必要なプロセスの実行に影響をなくすことも出来るし、定時処理であれば起動タイミングをずらして平準化を図る等の工夫をすれば、より安定した運用が可能になる。

 PyPRecの場合現在は開発中の為、今後は暫定として0.008秒のtime.sleep()を採用するが、今後予定しているthread起動への切替や
測定項目により測定間隔を複数設けた場合には見直しが当然必要になるし、実際の活用では、設置するサーバのスペックに合わせる必要もある。

 今回、予告済みなので、追記の領域に、現時点のソースコードを掲載しておくので、気になる方は、コピー&ペーストで使ってみることは可能かと思う。良かったらどうぞ。

 尚、このツールを運用するには、次のものを予めインストールして頂く必要があります。
1. Python2.6系 多分2.3以上ぐらいなら動きますが、PythonはWindowsでもLinuxでも複数のバージョンを共存させ使い分けるとこが可能ですので、最新の2.6系をインストールすることをお勧めします。
3. Firebird2.1系 現時点では多少の変更をすれば他のDBでも代用可能ですが、今後はサーバサイドのプログラムが入って来ますのでインストールして置きましょう。
2. kinterbasdb-3.3.0 pythonからfirebirdにアクセスする為のモジュール。
4. net-snmp メモリ情報取得での暫定活用と障害発生時の確認用で使用中。いずれは外します。関連投稿「WindowsPCでネットワークリソース管理 NET-SNMP編
以上の全てのインストールが完了すれば、以下のソースをPyPRec_pre_rerease.pyとして保存し、pathを適切に付けて「python PyPRec_pre_rerease.py」とすれば、初回に必要となるデータベースやテーブルを自動生成します。また、そのデータを確認したい場合には、これも作成途上のソースを続けて掲載して置きます。続きを読む
posted by Mire at 15:36 | Comment(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年09月08日

PROCESS管理の基礎 tasklist & タスクマネージャ

task_manager0.png 当方で今開発中のPyPRecは、ネット内にあるPC端末のプロセスを1台のPCのDBに定期的に集約記録するとこで統計的に、障害の予知や対応に役立てようというものだ。従って、稼働時間が5分にも満たないプロセスは記録されないこともあるし、ほんの数秒間の異常なリソース消費については管理対象にはなっていない。
 それらはどちらかというと、個別ので閾値に基づきOSのログ吐出しで対応しないと厳しいだろう。ただ、PyPRecでも、5分刻みを若干縮めることが可能な上、例え5分であっても長く記録していれば、たまたま出会い頭に記録されることもある。また、過負荷の度合によっては、5分刻みでも特定時間帯で起きる現象であれば、その統計データに何らかの影響が現れるだろうし、怪しいことが判ればPyPRecの複数起動で間を埋めて無人で監視させることも可能だ。
task_manager_select_page_cols.png ただ、いよいよ、となると管理者画面張付きで監視して見つけるしかない。そんなときに便利なツールが、タスクマネージャとtasklistだ。(LinuxではpsとそれをGUIにしたものがGNOME系KDE系のそれぞれにもある。)
 先ずはタスクマネージャは、@Windows下部のスタートメニューバーの余白にマウスカーソルを置き、右クリックで開くショートカットメニューから選択することで開くことは出来る。ただ、PC上の起動プロセス全部を表示させる為には、さらに、Aタスクマネージャ窓左下の全ユーザのプロセス表示を選択する必要がある。これで、System Idle Proscess
とSystem の2つが現れたら、後は必要な表示項目を追加する為に、「表示(V)」メニューの「列の選択(S)...」で「プロセス ページの列の選択」で設定を変えることが出来る。
task_manager_select_intervals.png当方の現設定では、上から「PID」「ユーザー名」「CPU使用率」「CPU時間」「メモリ - プライベートョーキングセット」「コマンドライン」「説明」を選択している。また、更新タイミングは同じ「表示(V)」メニューより「更新の頻度(U)」から、3段階と停止が選べる。
 以上、これだけ設定すれば、PyPRecなしでも瞬きせずにかぶりつきで対処する場合には何とかなるかもだ。当方では、適宜パフォーマンスタブでCPUメモリの全体使用率の推移を見ながら、他に結構重い並行作業もしながら対応している。

 さて、もうひとつの「tasklist」は、コマンドプロンプトで利用するコマンドだ。残念ながら出力内容にPATHや引数が入らないので単独での活用には限界を感じるが、

表示内容の変更(択一)
なし: 「プロセス名」「PID」「セッション名」「セッション#」「メモリ使用量」を表示。
/V : 「状態」「ユーザー名」「CPU 時間」「ウィンドウ タイトル」の4つの表示が加わる。
/SVC: 各プロセスをホストしているサービスを表示。
/M : 何も指定しなければ、依存するDLL等を全て表示。

遠隔端末のプロセスを取得する(ローカルマシンには使えない)

C:\Users\MyID>tasklist /V /S 192.168.0.25 /U administrator /P パスワード

イメージ名 PID セッション名 セッション# メモリ使用量 ユーザー名 CPU 時間
==================== ======== ============= =========== ============ ===================== ============
System Idle Process 0 0 16 K N/A 1817:20:18
System 8 0 236 K N/A 25:25:23
smss.exe 136 0 684 K NT AUTHORITY\SYSTEM 0:00:00
csrss.exe 168 0 14,260 K NT AUTHORITY\SYSTEM 0:58:56
winlogon.exe 188 0 6,768 K NT AUTHORITY\SYSTEM 9:42:46
services.exe 216 0 9,212 K NT AUTHORITY\SYSTEM 4:16:32
lsass.exe 228 0 1,720 K NT AUTHORITY\SYSTEM 0:41:38
svchost.exe 408 0 3,280 K NT AUTHORITY\SYSTEM 0:00:54
spoolsv.exe 436 0 5,556 K NT AUTHORITY\SYSTEM 0:00:57
Apache.exe 464 0 1,276 K NT AUTHORITY\SYSTEM 0:00:00
Apache.exe 488 0 3,096 K NT AUTHORITY\SYSTEM 0:00:16
httpd.exe 728 0 4,524 K NT AUTHORITY\SYSTEM 0:00:00
AppToService.ex 768 0 1,316 K NT AUTHORITY\SYSTEM 0:00:05
svchost.exe 784 0 8,672 K NT AUTHORITY\SYSTEM 0:01:42
cmd.exe 792 0 1,416 K NT AUTHORITY\SYSTEM 0:00:00
fbguard.exe 828 0 1,460 K NT AUTHORITY\SYSTEM 0:00:00
hidserv.exe 852 0 1,872 K NT AUTHORITY\SYSTEM 0:00:01
mysqld-nt.exe 888 0 11,668 K NT AUTHORITY\SYSTEM 0:00:21
regsvc.exe 944 0 1,712 K NT AUTHORITY\SYSTEM 0:00:00
RichVideo.exe 960 0 2,996 K NT AUTHORITY\SYSTEM 0:00:00
MSTask.exe 976 0 7,804 K NT AUTHORITY\SYSTEM 0:00:07
snmp.exe 1000 0 4,024 K NT AUTHORITY\SYSTEM 2:23:52
snmptrap.exe 1016 0 3,252 K NT AUTHORITY\SYSTEM 0:00:01
stisvc.exe 1048 0 1,960 K NT AUTHORITY\SYSTEM 0:00:00
WinMgmt.exe 1136 0 4,620 K NT AUTHORITY\SYSTEM 0:03:45
httpd.exe 1180 0 6,132 K NT AUTHORITY\SYSTEM 0:00:10
mspmspsv.exe 2272 0 1,320 K NT AUTHORITY\SYSTEM 0:00:00
svchost.exe 2300 0 22,544 K NT AUTHORITY\SYSTEM 0:50:00
SHSVS13N.EXE 2336 0 3,160 K NT AUTHORITY\SYSTEM 0:00:01
PythonService.e 2372 0 4,044 K NT AUTHORITY\SYSTEM 0:00:01
perl.exe 2380 0 3,348 K NT AUTHORITY\SYSTEM 12:42:43
PythonService.e 2244 0 6,136 K NT AUTHORITY\SYSTEM 0:00:03
python.exe 2436 0 16,288 K NT AUTHORITY\SYSTEM 0:00:14
inetinfo.exe 2456 0 10,324 K NT AUTHORITY\SYSTEM 2:05:58
ntpd.exe 2476 0 3,524 K NT AUTHORITY\SYSTEM 0:00:17
python.exe 2564 0 74,220 K NT AUTHORITY\SYSTEM 0:01:31
fbserver.exe 212 0 7,840 K NT AUTHORITY\SYSTEM 0:00:17
Explorer.EXE 1188 0 8,676 K PC_NAME\Administrator 8:26:36
imejpmgr.exe 284 0 2,636 K PC_NAME\Administrator 0:00:51
TSVNCache.exe 2320 0 6,716 K PC_NAME\Administrator 0:00:04
EPRINTZS.EXE 2756 0 4,324 K PC_NAME\Administrator 0:00:01
PDVDServ.exe 2648 0 2,820 K PC_NAME\Administrator 0:00:00
IBurn.exe 2644 0 3,900 K PC_NAME\Administrator 1:30:46
RunDll32.exe 2600 0 9,100 K PC_NAME\Administrator 0:00:32
iTunesHelper.ex 2548 0 4,756 K PC_NAME\Administrator 0:00:01
Winpooch.exe 2944 0 8,012 K PC_NAME\Administrator 0:09:57
internat.exe 2956 0 3,588 K PC_NAME\Administrator 0:00:27
SAUTOL~1.EXE 2980 0 2,388 K PC_NAME\Administrator 4:48:46
Skype.exe 2884 0 28,408 K PC_NAME\Administrator 0:51:40
wcescomm.exe 2992 0 5,380 K PC_NAME\Administrator 0:00:03
iPodService.exe 3024 0 4,260 K NT AUTHORITY\SYSTEM 5:20:49
rapimgr.exe 3000 0 5,716 K PC_NAME\Administrator 0:00:02
ttpmenu.exe 3172 0 3,176 K PC_NAME\Administrator 0:00:01
Collector.exe 3204 0 3,124 K PC_NAME\Administrator 0:06:39
conime.exe 3140 0 2,964 K PC_NAME\Administrator 0:00:21
SkypePM.exe 3324 0 16,796 K PC_NAME\Administrator 0:17:37
svchost.exe 3212 0 10,284 K NT AUTHORITY\SYSTEM 0:01:12
seamonkey.exe 3220 0 526,704 K PC_NAME\Administrator 1:41:07
mshta.exe 4384 0 14,308 K PC_NAME\Administrator 0:04:17
ERANGE.EXE 4508 0 5,580 K PC_NAME\Administrator 0:00:05
MKEditor.exe 4332 0 6,636 K PC_NAME\Administrator 0:00:53
mmc.exe 2264 0 7,512 K PC_NAME\Administrator 0:01:07
mmc.exe 4228 0 8,552 K PC_NAME\Administrator 0:01:08
winvnc4.exe 4492 0 2,000 K NT AUTHORITY\SYSTEM 0:01:22
cmd.exe 4416 0 1,396 K PC_NAME\Administrator 0:00:02
mmc.exe 6012 0 6,844 K PC_NAME\Administrator 0:00:40
mmc.exe 5428 0 5,416 K PC_NAME\Administrator 0:00:11
mmc.exe 2736 0 4,876 K PC_NAME\Administrator 0:00:11
PythonService.e 5968 0 2,424 K NT AUTHORITY\SYSTEM 0:00:03
python.exe 5852 0 11,296 K NT AUTHORITY\SYSTEM 0:00:59
PythonService.e 5952 0 2,420 K NT AUTHORITY\SYSTEM 0:00:03
python.exe 5764 0 15,748 K NT AUTHORITY\SYSTEM 0:01:14
wuauclt.exe 5088 0 4,068 K PC_NAME\Administrator 0:00:04
realsched.exe 5992 0 248 K PC_NAME\Administrator 0:00:02



出力方法
/FO TABLE 表形式 (既定)
/FO CSV カンマ区切表示。
/FO LIST 項目と値の対で、一行ずつに分けて表示
※ ファイル化したい場合は「tasklist /FO CSV > data.txt」等とする。pythonならざっと次の通り。

#!c:/Python26/python.exe
# -*- coding: Shift_JIS -*-
# ※ Windows の場合1行目はdummyです。


def tasklist(cmd):
from os import popen
from csv import reader #,list_dialects
#print list_dialects() #既定はlist_dialects=['excel-tab', 'excel']
lines=list(reader(popen(cmd,'r'),dialect='excel')) # dialectはlist_dialectsのいずれかを指定

datas=[]
for ln in lines:
datas.append(list(ln))
i=0
for items in datas[1:]:
#print items
items[1]=int(items[1])
items[3]=int(items[3])
items[4]=int(''.join(items[4].split(' ')[0].split(','))) #' K'取り、カンマ抜き、整数化
datas[i]=items
i=i+1
return datas

#cmd='tasklist /V /S 192.168.0.25 /U administrator /P パスワード'
cmd='tasklist /V /FO CSV'
datas=tasklist(cmd)
for dl in datas:
print '%-32s %5d %-8s %3d %6d %-14s %-20s %11s %-20s' % tuple(dl)
標準のcsvモジュールを使えば比較的楽。ただ、tasklistのメモリ使用量の数字化はいやらしい。

C:\Users\MyID>tasklist /FO LIST /M /S 192.168.0.25 /U administrator /P パスワード
固まって動かず。負荷が大きいのかも

 尚、PyPRec のテストは、同時に6個稼働させて実施中だが、今のところ良好だ。後1日の間停止しなければ、プレリリース位はしようと思う。
タグ:PyPRec SNMP
posted by Mire at 06:35 | Comment(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2009年09月06日

プロセス記録ツール PyPRec.py の例外発生停止対策2

 「プロセス記録ツール PyPRec.py の例外発生停止対策」のその後だが、相変わらず不定期の停止にいたぶられていることに変化はない。ただ、修正分のPyPRecでは、前投稿の「SQL RDBMS FIREBIRDとデート 下駄履き編」で紹介した方法を用いて新DBとテーブルを起動時に自動作成しそちらにデータを書込むので、継続テスト中の他のPyPRecとの並行テストが出来る様になった。同じPC上で新旧ソースコードが複数同時にテストが出来る様になったことで、修正サイクルもかなり加速出来る様になっている。

 さて、例外発生停止対策の状況は、それが起きる度に、停止時の変数のチェックを行なえる様に例外処理を挿入して絞込みをかけつつ、対処不能と判断したものは暫定値(例えば0とか)を挿入する様にしているが、ほぼ次の2つに絞れそうなところだ。

  1. 自作mono_request()関数で、プロセスIDを取得しようとして、想定外の意味不明の16進数バイトデータを返してくるので例外停止
    • 時間差を設けて起動させた複数のPyPRecがその測定タイミングでいずれも落ちるので、この現象発生はSNMP送信側の長期の不具合状態で起きている可能性が高い。
    • 対策として、5秒程度のmono_request()の再実行はかけて試るが望みは薄い。結局は障害発生記録を残す意味で暫定値のプロセスIDをセットし、動作継続を選択する方が賢い様に思う。
    sleeping  268.359 seconds. (2009, 9, 3, 10, 49, 10, 410000) I wake up and look watch before 60seconds (10, 53, 38, 762000) sleep again 9.995 seconds.
    next_tm= (2009, 9, 3, 10, 58, 48, 764000) doing main job (10, 53, 48, 767000)

    不明な文字化け文字

    SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
    ■NOT EXISTS 192.168.0.25 PID:0
    SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
    ■NOT EXISTS 192.168.0.25 PID:2
    SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
    ■NOT EXISTS 192.168.0.25 PID:9
    SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
    (中略)
    ■NOT EXISTS 192.168.0.25 PID:1137
    SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
    ■NOT EXISTS 192.168.0.25 PID:1181
    SNMPによるPNAME取得失敗。0.1秒待って再実行します 再実行にも失敗しました。プロセスがなくなったか、SNMP通信が不能です。
    ■NOT EXISTS 192.168.0.25 PID:1189
    【2009-08-23 23:45:16.891にTypeError例外発生】この時はツール停止に至る重大な障害でした。
    再現待ちの不具合が再度発生しました。list rsの内容を確認して対処方法を検討して下さい
    出力を確認したところプロセス情報のrsに本来数値である筈のPID等が''になる等
    本来取得出来る筈のデータ取得が出来なくなる事がある様だ。発生原因を断つ上流での改善か、
    その様な場合に処理をスキップさせ連続動作を確保する必要がある。
    rs= [['\x07\xd9\t\x03\n52\x02', '', '', '', '', 0, 0, 0, 0], [1, '', '', '', '', 0, 0, 0, 0], [8, '', '', '', '', 0, 0, 0, 0], [136, '', '', '', '', 0, 0, 0, 0], [168, '', '', '', '', 0, 0, 0, 0], [188, '', '', '', '', 0, 0, 0, 0], [212, '', '', '', '', 0,
    0, 0, 0], [216, '', '', '', '', 0, 0, 0, 0], [228, '', '', '', '', 0, 0, 0, 0], [284, '', '', '', '', 0, 0, 0, 0], [408, '', '', '', '', 0, 0, 0, 0], [436, '', '', '', '', 0, 0, 0, 0], [464, '', '', '', '', 0, 0, 0, 0], [488, '', '', '', '', 0, 0, 0, 0],
    [728, '', '', '', '', 0, 0, 0, 0], [768, '', '', '', '', 0, 0, 0, 0], [784, '', '', '', '', 0, 0, 0, 0], [792, '', '', '', '', 0, 0, 0, 0], [828, '', '', '', '', 0, 0, 0, 0], [852, '', '', '', '', 0, 0, 0, 0], [888, '', '', '', '', 0, 0, 0, 0], [944, '', '
    ', '', '', 0, 0, 0, 0], [960, '', '', '', '', 0, 0, 0, 0], [976, '', '', '', '', 0, 0, 0, 0], [1000, '', '', '', '', 0, 0, 0, 0], [1016, '', '', '', '', 0, 0, 0, 0], [1048, '', '', '', '', 0, 0, 0, 0], [1136, '', '', '', '', 0, 0, 0, 0], [1180, '', '', '',
    '', 0, 0, 0, 0], [1188, '', '', '', '', 0, 0, 0, 0]]
    Traceback (most recent call last):
    File "C:\Users\SysAdm\Desktop\PyPRec\PyPRec_sjis03.py", line 864, in
    debug=2
    File "C:\Users\SysAdm\Desktop\PyPRec\PyPRec_sjis03.py", line 774, in repeater
    main(ips=ips,debug=debug,display=display,conn=conn,cur=cur
    File "C:\Users\SysAdm\Desktop\PyPRec\PyPRec_sjis03.py", line 738, in main
    print_rsps(rsps=rsps) # D.PROCESS情報を画面表示
    File "C:\Users\SysAdm\Desktop\PyPRec\PyPRec_sjis03.py", line 444, in db_insert
    try:
    TypeError: %d format: a number is required, not str

    C:\Users\SysAdm>Desktop\PyPRec\PyPRec_sjis03.py

  2. 自作mono_request()関数内で使っているpysnmpが出すリクエストがタイムアウトになり例外停止
    • これは、時間差を設けず起動させた複数のPyPRecの片方で一度だけ発生した。
    • 単純なタイムアウトであれば再度リクエストすることで回復出来るので、先ずはそれを組込む予定だ。別解にタイムアウト時間を長くする手もある。
    ◆NEW PROCESS: localhost[04892]taskeng.exe                                 6secs         3976kbite {0FFB72D9-FAF9-4CCE-A934-3D7F9A4FCFFE}
    sleeping 254.581 seconds. (2009, 9, 6, 1, 32, 2, 683000) I wake up and look watch before 60seconds (1, 36, 17, 263000) sleep again 10.001 seconds.
    next_tm= (2009, 9, 6, 1, 41, 27, 264000) doing main job (1, 36, 27, 267000)
    Traceback (most recent call last):
    File "C:\Users\SysAdm\Desktop\PyPRec\PyPRec_sjis03.py", line 875, in
    repeater(secs=300,debug=debug,display=display,dsn=dsn,user=user,password=password
    ,dialect=dialect,pre_precs=pre_precs,version=version) # A. 繰返実行へ
    File "C:\Users\SysAdm\Desktop\PyPRec\PyPRec_sjis03.py", line 785, in repeater
    ,pre_precs=pre_precs,ip=ip,port=port,community=community,version=version) # 定時JOBをこなす。 ※thread実行化が必要
    File "C:\Users\SysAdm\Desktop\PyPRec\PyPRec_sjis03.py", line 745, in main
    rsps=get_snmp_processes(ip=ip,port=port,community=community,version=version,debug=debug) # C.IP端末のSNMP情報を取得
    File "C:\Users\SysAdm\Desktop\PyPRec\PyPRec_sjis03.py", line 614, in get_snmp_processes
    v= mono_request(oid='%s.%s' % (oid+'.1',ii.strip()),req=req,rsp=rsp,tr=tr) #### c1.SNMP単一問合せによる情報取得 ####
    File "C:\Users\SysAdm\Desktop\PyPRec\PyPRec_sjis03.py", line 374, in mono_request
    (rawrsp, src) = tr.send_and_receive(req.encode())
    File "C:\Python26\lib\site-packages\pysnmp\role.py", line 194, in send_and_receive
    raise NoResponse('No response arrived before timeout')
    pysnmp.role.NoResponse: No response arrived before timeout


    C:\Users\SysAdm>Desktop\PyPRec\PyPRec_sjis03.py


 さて、この2つへの対策だが、プロセスIDとして意味不明のものを返す場合にはtime.sleep(5.0)で5秒のWAITを取って再実行しても改善出来ない場合には暫定値のプロセスIDを入れツールの運転継続を図ることにする。また、タイムアウトになる分は、自作関数上にtry:〜except:で、即再実行させ、それでも駄目な場合にtime.sleep(n)で少しずつWAITを増やす形で数回ま再実行を図る様な改善するつもりだ。

 尚、これらの障害が解消出来れば、PyPRec のプロセス自動記録の基本機能はほぼ実用レベルになるのでリリースに向けての対応に移ることになる。
posted by Mire at 17:39 | Comment(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする
月額見放題1,000円開始キャンペーンバナー(画像ありver)
紺碧の艦隊 ルパン三世 GREAT CHASE クリックプロモーション
<< 2013年01月 >>
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
カテゴリ
タグクラウド
ファン
利用中のオープンソース
最近のコメント
最近の記事
過去ログ
QRコード
レガシーなアプリはいかが?
Dell 法人のお客様ページ
  • 【法人様向け】デル、お得なキャンペーン情報
  • 法人のお客様向け ストレージソリューション
  • 法人のお客様向け ネットワークソリューション
  • 【SOHO法人様向け】デル・オンライン広告限定ページ
  • デル-個人のお客様ページ
  • 【個人のお客様向け】デル・オンライン広告限定ページ
  • オンライン広告限定キャンペーンページ
  • ソフトウェア&周辺機器 パソコン工房
    ツートップインターネットショップ(twotop.co.jp) マウスコンピューター/G-Tune
  • ×

    この広告は1年以上新しい記事の投稿がないブログに表示されております。