カテゴリ: 仕事, PCサポート

ページ: << 1 2 3 4 5 6 7 8 9 10 11 ... 27 >>

電子入札とJavaで苦戦

パーマリンク 2009/05/22 21:33:06 著者: kumaold メール
カテゴリ: 仕事, PCサポート

取引先の地元の土木屋さんから、この前まで普通に使えていた電子入札システムが急に使えなくなったとのことで、調査に伺ってきました。

PC関係でよくある、「先日までは大丈夫だった」というのは、一番原因究明に手間暇がお決まりのパターンです。


問題のページは、こちらの電子入札システムポータルから入ったところで、IEがいきなり落ちる(正確には問題が発生したため~のエラー)という現象でした。

この手の定番、Windows Updateの更新とか、Javaのバージョンアップを疑ってみて試行錯誤してみてもさっぱり解決せず、もう迷宮入りかと思いました。


仕方ないので一旦会社に戻り、改めて伺うことに。

すると、会社のテストマシンでも同様の症状が再現したので、これは何か問題がありそうだと確信が持てました。


色々調べてみると、このあたりの記事からアドオンのツールバー類が原因のひとつのようです。(テストマシンにもGoogleツールバーが入れてある)


再度伺ってみると、先週あたりにウイルスバスター2008を無料バージョンアップでウイルスバスター2009にアップグレードしたとのこと。
確かに、2009にすると鬱陶しいIEのツールバーがデフォルトで入った記憶が。

早速管理画面からアドオン類を削除してみると、あっさり問題解決でした!


しかしこのJavaで作られた電子入札システムがまた使いづらい。

初回起動時にプログラムをロードするためにWeb画面で3分弱も待たされる。
その上レスポンスも非常に悪いとかもう最悪。

お役所が公共性を維持するためJavaで作ったはいいが、そのせいでソフトが使いづらくなるというのは本末転倒のような気がするなぁ。

まんが CALS/EC電子入札・電子納品の落し穴まんが CALS/EC電子入札・電子納品の落し穴

CALS EC研究会
経済調査会 2005-10

Windows Serverでログオンログを見やすく表示

パーマリンク 2009/04/14 22:16:55 著者: kumaold メール
カテゴリ: 仕事, サーバ関係, PHP, WSH/VBScript

Windows Serverでは、システムのログ管理はすべてイベントビューアによる閲覧のみとなっており、保存もバイナリファイルであるため扱いが面倒です。

テキストデータで吐き出させるためのツール類もそれなりにはあるのですが、ログオン/オフのログは1つのフィールドの中に改行交じりのデータで入っているため、1つ1つのレコードを開いて確認しないといけません。


要はログオン/オフ日時、ユーザ名、ログオンID、リモートホストさえ一覧できればいいのに、無駄な情報が多すぎてわかりにくいわけです。

そこで、VBScriptとPHPを使用してログ閲覧ツールを作ってみました。

まず、VBScriptまわりのリファレンスガイドはこちら。

またまたリファレンスがわかりにくいのはいつものことw

[logon.vbs]

'*********************************************
'* Get logon log by Windows EventLog Script  *
'*********************************************
'Usage:
' logon.vbs start_date > output.file
'Command:
' start_date ログ取得開始日(~1週間分)
'            例: 2009/04/01(~2009/04/07)

'コンピュータ名指定(デフォルト.)
strComputer = "." 

'取得期間の指定(デフォルト2009年4月1日)
If WScript.Arguments.Count < 1 Then
    StartDate = "2009/04/01"
Else
    '開始日を引数から取得
    StartDate = WScript.Arguments(0)
End If

Const CONVERT_TO_LOCAL_TIME = True 
Set dtmStartDate = CreateObject("WbemScripting.SWbemDateTime") 
Set dtmEndDate = CreateObject("WbemScripting.SWbemDateTime") 
DateToCheck = CDate(StartDate) 
dtmStartDate.SetVarDate DateToCheck, CONVERT_TO_LOCAL_TIME 
dtmEndDate.SetVarDate DateToCheck + 7, CONVERT_TO_LOCAL_TIME

'ログオン(ID.4624)、ログオフ(ID.4634)のみに絞り込み
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colLoggedEvents = objWMIService.ExecQuery _ 
    ("Select * from Win32_NTLogEvent Where Logfile = 'Security' and (EventCode = '4624' or EventCode = '4634') " _ 
        & "and TimeWritten >= '" & dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "'")
For Each objEvent in colLoggedEvents
    Wscript.Echo "Record Number: " & objEvent.RecordNumber
    dtmEventDate = objEvent.TimeWritten
    strTimeWritten = WMIDateStringToDate(dtmEventDate)
    Wscript.Echo "Time Written: " & strTimeWritten
    Wscript.Echo "Message: " & objEvent.Message
Next 

'ログ標準の時刻表記を「y/m/d h:i:s」形式で表示
Function WMIDateStringToDate(dtmEventDate)
    WMIDateStringToDate = CDate(Mid(dtmEventDate, 5, 2) & "/" & _
        Mid(dtmEventDate, 7, 2) & "/" & Left(dtmEventDate, 4) _
            & " " & Mid (dtmEventDate, 9, 2) & ":" & _
                Mid(dtmEventDate, 11, 2) & ":" & Mid(dtmEventDate, _
                    13, 2))
End Function


[logon.php]

<?php
if (!isset($argv[1]) || empty($argv[1])) {
    die("引数にログファイル名が指定されていません\n");
} else {
    $path = $argv[1];
}
if (!file_exists($path)) {
    die("ログファイルが存在しません\n");
}

if (isset($argv[2])) {
    $filter = $argv[2];
}

$logfile = file($path, FILE_IGNORE_NEW_LINES);
// 各ログの開始行を取得
foreach ($logfile as $key => $row) {
    // ログを整形
    $logfile[$key] = str_replace("\t", "", trim($row));
    if (preg_match("/Record Number/", $row)) {
        $logs[] = $key;
    }
}
unset($key, $row);
// 最終行の位置を配列の最後に登録
$logs[] = count($logfile);

// 各ログの先頭~次のログの先頭前までループ
for ($i = 0; $i < count($logs) - 1; $i++) {
    // UTC→JSTの時刻変換を行う
    preg_match("/Time Written: ([0-9\/: ]+)/", $logfile[$logs[$i] + 1], $match);
    $datetime = date("Y/m/d H:i:s", strtotime($match[1]) + 3600 * 9);
    preg_match("/Message: (.+)/", $logfile[$logs[$i] + 2], $match);
    $type = $match[1];
    $ipaddr = '';
    $username = '';
    $logon_id = '';
    for ($r = $logs[$i]; $r < $logs[$i + 1]; $r++) {
        $row = $logfile[$r];
        if (preg_match('/ログオ[ンフ]/', $type)) {
            if (preg_match("/アドレス:([0-9.-]+)/", $row, $match)) {
                $ipaddr = $match[1];
            }
            if (preg_match("/アカウント名:([a-zA-Z0-9_\-_]+)/", $row, $match)) {
                $username = $match[1];
            }
            if (preg_match("/ログオン ID:(0x[0-9a-f]{4,})/", $row, $match)) {
                $logon_id = $match[1];
            }
        }
    }
    // フィルタリングユーザ名に合致した行のみ表示
    if (!isset($filter) || isset($filter) && $username == $filter) {
        echo sprintf("%s %10s %-15s %-15s %s\n", $datetime, $logon_id, $username, $ipaddr, $type);
    }
}
?>


使い方は、まず日付を指定して1週間分のログをテキストに書き出します。

CScript //NoLogo logon.vbs 2009/04/06 > logon.log

それをphp側の整形表示スクリプトに渡します。
phpのパスはあらかじめ通しておき、各ファイルは同一階層に置いときます。

(本来はパイプで渡すべきですが、Windowsだと色々面倒なので)

php logon.php logon.log

これで、あれだけ見づらかったログがこんなに分かりやすく表示できます。

2009/04/06 00:18:53            SYSTEM          -               アカウントが正常にログオンしました。
2009/04/06 18:39:08            SYSTEM          -               アカウントが正常にログオンしました。
2009/04/07 11:59:03   0x3fb874 IIS_USER        -               アカウントが正常にログオンしました。
2009/04/07 12:25:07   0x3fb874 IIS_USER                        アカウントがログオフしました。
2009/04/07 15:26:49            SYSTEM          -               アカウントが正常にログオンしました。
2009/04/08 10:30:08   0x455ce6 IIS_USER        -               アカウントが正常にログオンしました。
2009/04/08 10:30:08   0x455ed9 IIS_USER        -               アカウントが正常にログオンしました。
2009/04/08 10:51:08   0x455ed9 IIS_USER                        アカウントがログオフしました。
2009/04/08 10:51:12   0x455ce6 IIS_USER                        アカウントがログオフしました。
2009/04/08 13:07:35            SYSTEM          -               アカウントが正常にログオンしました。
2009/04/09 08:07:10            SYSTEM          -               アカウントが正常にログオンしました。
2009/04/09 11:25:11   0x4b9ed4 IIS_USER        -               アカウントが正常にログオンしました。
2009/04/09 11:25:11   0x4ba0b8 IIS_USER        -               アカウントが正常にログオンしました。
2009/04/09 11:41:32   0x4bc4b2 Administrator   123.45.67.89    アカウントが正常にログオンしました。
2009/04/09 11:43:02   0x4bc4b2 Administrator                   アカウントがログオフしました。
2009/04/09 11:52:38   0x4e0a01 Administrator   111.222.333.44  アカウントが正常にログオンしました。
2009/04/09 11:54:09   0x4e0a01 Administrator                   アカウントがログオフしました。

さらにユーザ名によるフィルタリング機能も実装。

logon.phpの第2引数に表示したいユーザ名を指定すると絞り込みできます。

そのままでは表示されてしまう匿名ユーザ認証(IIS, WMSなど)によるログオンもこれで排除でき、アクセスログ管理に役立ちます。

2009/04/09 11:41:32   0x4bc4b2 Administrator   123.45.67.89    アカウントが正常にログオンしました。
2009/04/09 11:43:02   0x4bc4b2 Administrator                   アカウントがログオフしました。
2009/04/09 11:52:38   0x4e0a01 Administrator   111.222.333.44  アカウントが正常にログオンしました。
2009/04/09 11:54:09   0x4e0a01 Administrator                   アカウントがログオフしました。
2009/04/10 15:59:30   0x61e4c3 Administrator   55.66.77.88     アカウントが正常にログオンしました。
2009/04/10 16:01:00   0x61e4c3 Administrator                   アカウントがログオフしました。

これらのファイルをまとめときましたので、使いたい方はどうぞ。
おそらくWindows Server 2008環境でしかうまく動かないと思われます。

Windows_logon_log.zip


ひと目でわかるMicrosoft Windows Server 2008 (マイクロソフト公式解説書) (マイクロソフト公式解説書)ひと目でわかるMicrosoft Windows Server 2008 (マイクロソフト公式解説書) (マイクロソフト公式解説書)
天野 司

type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

入社して丸1年。

パーマリンク 2009/04/01 23:40:54 著者: kumaold メール
カテゴリ: 仕事

@疲労で眠くて仕方なかったので、3日に投稿


今日でちょうどかしもソフトウェアに入社して丸1年になります。

で、今日一六社にて目の前で今年の新入社員を迎えているわけですよ。

思ってみれば1年もかなりあっという間で、毎日忙しい日々を送っていると去年までの学生時代と比べ1週間がかなり短く感じられました。


まだ一人前ではないにしても、やっと自分で何をどうすべきかという業務の方向性を自主的に見つけられるまでにはなってきたと思います。

ただ、まだ作業スピードの面であまり効率がいいとはいえないような状態なので、今年度はもう少し迅速に仕事を片付けていきたいです。


あと、色々やろうとして結局先延ばしにしてしまったことがあるので、今年こそはこの辺を一通り片付けたいです。

  • 応用情報技術者試験合格(旧ソフトウェア開発技術者, 情報1種)
     平成21年度春季試験申し込みし忘れたorz
  • ブログのデザインリニューアル
  • 自宅鯖をWindows Server 2003からWindows Server 2008へ移行
  • 手元の同人誌管理システムの構築(夏コミまでに)
  • 駅情報・入場券管理システムの構築(今年中?)


まあ詳細についてはそのうち紹介します。

入社3年目までに勝負がつく77の法則 (PHP文庫)入社3年目までに勝負がつく77の法則 (PHP文庫)
中谷 彰宏
PHP研究所 1998-03

おすすめ平均

type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

<< 1 2 3 4 5 6 7 8 9 10 11 ... 27 >>

一六社で働くITエンジニアのブログ。

普段はWeb系システム開発と地元のPCサポートをやってます。いつの間にやら会社に8年目。
技術ネタ中心に日々の仕事と生活と趣味やらを気が向いたら書いてます。

2017年3月
 << <   > >>
      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  

検索

XMLフィード

16ブログ     powered by b2evolution free blog software