- ベストアンサー
バッチファイルでサーバーログから最大同時アクセス数を集計する方法
- サーバーから取得したライセンスログを使用して、最大同時アクセス数を集計するバッチファイルの作成方法を教えてください。
- ログを一行ずつ読み込み、'OUT'の文字があれば変数を+1、'IN'があれば-1していき、最大の値を別の変数に格納する方法を教えてください。
- ログの例に基づいて、最大同時アクセス数を3という値として求める方法を具体的に教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
バッチで出来ます。 最初の xxx の部分には空白が含まれないとして、ファイル各行の第3語を取り出してそれを使います。第3語がIN,OUTならいいので、その右のxxxxには空白があってもいいです。 setlocal enabledelayedexpansion set N=0 set MAX=0 for /f "tokens=3" %%A in (logfilename) do ( if %%A==IN set /a N-=1 if %%A==OUT set /a N+=1 if !N! gtr !MAX! set MAX=!N! ) echo MAX=%MAX%
その他の回答 (4)
- Bonjin
- ベストアンサー率43% (418/971)
WindowsならWSHを使用して作成するのが簡単だと思われます。 JScriptかVBScriptになるのでVBAやJavaScriptの経験があれば比較的簡単に作ることができるとおもいます。 WSHはバッチに比べ機能が豊富でとても便利ですので覚えて損はないと思います。
お礼
アドバイスありがとうございます。 VBはよく使うので、WSHを覚えてみようと思います。
- tatsu99
- ベストアンサー率52% (391/751)
#2です。 2)OUTの両端は空白が1桁1以上必ず存在しますか。 3)INの両端は空白が1桁1以上必ず存在しますか。 は、 2)"OUT"の文字の両端は空白が1桁以上必ず存在しますか。 3)"IN"の文字の両端は空白が1桁以上必ず存在しますか。 の誤りです。訂正致します。
- tatsu99
- ベストアンサー率52% (391/751)
これをバッチファイル(.bat)で行うのは、無理なように思われます。 1.perlでなら、簡単に実現出来ますが、perlでの回答を希望されますか?(希望されるなら、perlでスクリプトを書きます) 2.ログファイルのフォーマットの確認です。 1)ログのパターンは、OUT,IN,以外の3つですか。 2)OUTの両端は空白が1桁1以上必ず存在しますか。 3)INの両端は空白が1桁1以上必ず存在しますか。 3.素直に考えるとログインでIN、ログアウトでOUTとなり、最大同時ログイン数はINで+1,OUTで-1かと思うのですが、OUTで+1,INで-1で間違いないでしょうか?
お礼
ご回答ありがとうございます。 バッチでは難しいようですね. 1.について 私自身がPerlを分かっておらず,せっかくのご好意で ソースを書いて頂いても無駄になってしまうかもしれないので、ご遠慮させて頂きます。 2.について 1)はい 2)はい 3)はい 3.について 間違いなしです. サーバでライセンスを牛耳っているので、 ユーザーが使うとサーバから出す(OUT)と なっているようです。 どうも、ありがとうございました。
- tatsu99
- ベストアンサー率52% (391/751)
OSが提示されると良い回答が得られると思います。 (但し、私が回答できる訳ではありません)OSは何でしょうか?
補足
OSはWindows2000になります. 宜しくお願い致します.
お礼
回答ありがとうございました。 さっそく、試したところ、 正常に集計されました。 どうもありがとうございました。