2012/11/04

ログをメーターとして表示させるPowerShellスクリプト


ってことで、下のようなsample.txtがあったとして・・

こんな感じで出力させます。

というわけで以下、ソース



<# 
.SYNOPSIS 
    ログを視覚化
.DESCRIPTION 
    Loginを時間ごとにデータから取得し、#でグラフを作る
.LINK 
    
.NOTES 
        
    グラフを作るおともに。
.EXAMPLE 
    
#> 
function get-logmater {
    param ($logdata)

    $result=0..23 | % {
        $tlogin=$null
        $tlogout=$null
        $tLogin= $logdata | Select-String -Pattern "^.* $_\:.*Login$"
        $tLogout= $logdata | Select-String -Pattern "^.* $_\:.*Logout$"
        
        if (($tlogin -ne $null) -or ($tlogout -ne $null)){
            $output = New-Object psobject
            $output | Add-Member noteproperty time $_
            $output | Add-Member noteproperty login $tLogin
            $output | Add-Member noteproperty logout $tLogout
            $output
        }
    }

    function get-count {
        param($source)
        if($source.count -eq $null) {
                write-output 0
        }else{
            $source.count
        }
    }

    $logincount=0..$($result.count-1) | % { 
        get-count @($result[$_].login)
    }
    $logoutcount=0..$($result.count-1) | % { 
        get-count @($result[$_].logout)
    }

    $a=$logincount | Measure-Object -Maximum -Average
    $b=$logoutcount | Measure-Object -Maximum -Average

    0..$($logincount.count-1) | % {
        "{0:00}時 In  {1:00}回 {2}" -F $($result[$_].time),$($logincount[$_]),$("#"*$($logincount[$_]/2))
        
        "{0:00}時 Out {1:00}回 {2}" -F $($result[$_].time),$($logoutcount[$_]),$("*"*$($logoutcount[$_]/2))
    }
    write-output "【 Login MAX $($a.maximum) 回/時 】【Logoff MAX $($b.maximum) 回/時】"
}


function get-check {
    param($ckdata)
    if(-not $ckdata) {
        Write-Output "データはありません"
    }else {
        get-logmater $ckdata
    }
}

Write-Output "ログ結果"
#$tday=$(Get-Date).adddays(-1).tostring("yyyy/MM/dd")
#$data=gc C:\Users\buso\Desktop\wdirary\aa\sample.csv | ? { $_ -like "$tday*" }
$data=gc C:\Users\buso\Desktop\wdirary\aa\sample.txt
get-check $data

そのまま数をメーターに反映させると、メーターが長くなりすぎるので、1/2の長さとなるよう調整。
今回は、sample.txtだけを読み込みましたが、使い方によっては複数のファイルを読み込んでアクセスログの合算をメーター化させることも可能です。




スポンサーリンク

スポンサーリンク