• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:バッチファイル(テキスト読み込み)について)

バッチファイルでサーバーログから最大同時アクセス数を集計する方法

このQ&Aのポイント
  • サーバーから取得したライセンスログを使用して、最大同時アクセス数を集計するバッチファイルの作成方法を教えてください。
  • ログを一行ずつ読み込み、'OUT'の文字があれば変数を+1、'IN'があれば-1していき、最大の値を別の変数に格納する方法を教えてください。
  • ログの例に基づいて、最大同時アクセス数を3という値として求める方法を具体的に教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4851/10265)
回答No.4

バッチで出来ます。 最初の 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%

WAKABA_PAPA
質問者

お礼

回答ありがとうございました。 さっそく、試したところ、 正常に集計されました。 どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.5

WindowsならWSHを使用して作成するのが簡単だと思われます。 JScriptかVBScriptになるのでVBAやJavaScriptの経験があれば比較的簡単に作ることができるとおもいます。 WSHはバッチに比べ機能が豊富でとても便利ですので覚えて損はないと思います。

WAKABA_PAPA
質問者

お礼

アドバイスありがとうございます。 VBはよく使うので、WSHを覚えてみようと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

#2です。 2)OUTの両端は空白が1桁1以上必ず存在しますか。 3)INの両端は空白が1桁1以上必ず存在しますか。 は、 2)"OUT"の文字の両端は空白が1桁以上必ず存在しますか。 3)"IN"の文字の両端は空白が1桁以上必ず存在しますか。 の誤りです。訂正致します。

全文を見る
すると、全ての回答が全文表示されます。
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

これをバッチファイル(.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で間違いないでしょうか?

WAKABA_PAPA
質問者

お礼

ご回答ありがとうございます。 バッチでは難しいようですね. 1.について 私自身がPerlを分かっておらず,せっかくのご好意で ソースを書いて頂いても無駄になってしまうかもしれないので、ご遠慮させて頂きます。 2.について   1)はい   2)はい   3)はい 3.について   間違いなしです.   サーバでライセンスを牛耳っているので、   ユーザーが使うとサーバから出す(OUT)と   なっているようです。 どうも、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

OSが提示されると良い回答が得られると思います。 (但し、私が回答できる訳ではありません)OSは何でしょうか?

WAKABA_PAPA
質問者

補足

OSはWindows2000になります. 宜しくお願い致します.

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【FLASH】テキストファイルを一行ずつ表示させたい

    まだまだFLASH初心者のものです。 不可能な質問かもしれませんが、もしご存知の方がいらっしゃいましたら教えてください。 まず、私が実行したいことをいかに記載いたします。 ------------------------------------ 入力フォームより50文字程度のお知らせを投稿 ↓ ログファイル(log.txt)に一行ずつ投稿されたデータが記録される(最大10記録されます。) ↓ ログファイルのデータを一行ずつフラッシュで表示 (横に流れるニュースのようなかんじで) ------------------------------------ ログファイルの各行の最初に news1=書き込んだデータ1 &news2=書き込んだデータ2 というように変数を入れてあげれば、フラッシュで同じ変数を設定したテキストフィールドに反映させることはできるのですが、フォームから投稿したデータの場合、 書き込んだデータ1 書き込んだデータ2 と変数を頭につけることができません。 (フォームのスクリプト(php)で変数をつけて出力する方法も考えてみましたが常に最新の記事をnews1、ひとつ前の記事をnews2に変更して出力する方法がわからなかったので・・) もし、変数なしで一行ずつを表示させる方法をご存知の方がいらっしゃいましたら教えていただけますでしょうか。 また、ほかに良い方法がございましたらそちらも教えて頂ければと思います。

    • ベストアンサー
    • Flash
  • ファイルの読み込みについて

    いつも大変お世話になっています。 例えば以下のような関数があったとします。 function out_file($file_path) { $_handle = @fopen($file_path, "r"); $_dat = @fread($_handle, @filesize($file_path)); @fclose($_handle); return $_dat; } 【質問1】 $file_path の示すファイルが 10M のファイルだとして、10人のクライアントがアクセスしてきたとしたら、サーバーのメモリは 100M 食われてしまうのでしょうか?それとも10M?(まさか、0M?) 【質問2】 ファイルは読み取り専用で開いていますが、大量のクライアントが同時アクセスしてくるとしても flock など無くて正常に動くのでしょうか? それとも、やはり排他制御する必要はあるでしょうか? 10人同時アクセス時のこの関数の挙動がイマイチイメージできません。 以上です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • バッチファイル フォルダ存在 確認

    いつも大変御世話になっております。 WindowsXP SP2に【D:\test\bat】フォルダに【test.bat】があります。 上記バッチファイルは以下のようになっています。 コード------------------------------------------------ rem --- 時間変数 --- set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set YMD=%date:~-8,10% set HHMMSS=%time:~0,8% set FILE_DATE=%date:~-10,4%%date:~-5,2%%date:~-2,2%%TIME:~0,2%%TIME:~3,2% set FILE_DATE=%FILE_DATE: =0% rem --- フォルダ変数 --- set log=D:\test\drive_xcopy\log set INP_DIR=D:\test\drive_xcopy\in set OUT_DIR=D:\test\drive_xcopy\out\ rem --- ファイル変数 --- set logName=log.txt echo "%YMD%","%HHMMSS%","FOLDER.bat","処理開始" >> %log%\%logName% REM フォルダコピー XCOPY "%INP_DIR%" "%OUT_DIR%" /e /Y >> %log%\%logName% echo "%YMD%","%HHMMSS%","FOLDER.bat","処理終了" >> %log%\%logName% コード------------------------------------------------ 単純に【D:\test\drive_xcopy\in\】内のすべてのフォルダを 【D:\test\drive_xcopy\out\】内にコピーしています。 ちなみに、、【D:\test\drive_xcopy\in\】フォルダには100個フォルダがあります。 実現したい事は、コピー対象となる100個フォルダがちゃんとコピーされ、 コピー先にすべて確実存在しているかを【コピー元⇔コピー先】とで 1つ1つマッチング処理したいのです。 すべて存在していれば、上記ログファイルに 100フォルダすべてが存在しています。 と書き込み、 1つでも存在していなければ、上記ログファイルに ○○○フォルダがコピー先に存在していません。 それ以外は存在しています。 と書き込むような処理を実現したいのです。 コピー先に存在していないのが複数であれば 下記のようなログメッセージを書き込みたいです。 ログメッセージ例----------------------- ○○○フォルダがコピー先に存在していません。 ×××フォルダがコピー先に存在していません。 それ以外は存在しています。 ログメッセージ例----------------------- For文とIF文をうまく使い、フォルダを変数で順に格納してマッチングするような 作成になると思いますが、難しくて苦戦しています。 方法をご存知の方がいれば、ご教授願いますでしょうか? ※サンプルがあれば、光栄です。 宜しくお願い致します。

  • データ変換について

    UNIXのコマンドの組み合わせでデータの変換をしたいのですが、キーとなる値が"@"の前後の文字列(前後最大8文字づつ)が対象となります。データの変更内容は以下のとおりです。宜しくお願いします。 <変更前データ> 1 IN: Solaris aaa@sld01 tmp/0002 2 IN: Solaris2 bbbbb@vb012 home/0123 3 OUT: Solaris aaa@sld01 tmp/0002 4 IN: Solaris3 xbgll@gho002 tmp/041 <変更後データ> 1 IN: Solaris xxxxxxxx@xxxxxxxx tmp/0002 2 IN: Solaris2 xxxxxxxx@xxxxxxxx home/0123 3 OUT: Solaris xxxxxxxx@xxxxxxxx tmp/0002 4 IN: Solaris3 xxxxxxxx@xxxxxxxx tmp/041

  • ファイルサーバのセキュリティに関して

    Windows2000のファイルサーバを会社で使用しています。 以下の点で、困っています。 教えてください。 (1) ファイルサーバのセキュリティホールや脆弱性を検査(監査)するための、フリーソフト(又は低価格の)を教えてください。 (2) このファイルサーバにて、サーバへアクセスした人のログを取得することはできるのですが、そのアクセスした方が、どのフォルダのどのファイルまでアクセスしたかログ取得は可能でしょうか? 以上、2点

  • Apacheでユーザの環境変数をログに残したい

    Apacheでサーバを構築しています。アクセスログを取得したいのですが、リバースプロキシを介してアクセスされるので、すべてのクライアントが同じIPアドレスになってしまいます。ブラウザ(?)の環境変数みたいなものを使用して、クライアントのローカルアドレスをログに残すことは可能でしょうか?

  • バッチファイル 時間変数 短縮化

    バッチファイル 時間変数 短縮化 お世話になっております。 WindowsXP環境にて下記のバッチファイルがあります。 コード-------------------------------------------------------------------------------- set BAT_FILE=TIME.bat set LOG_DIR=D:\test set LOG_FILE=LOG.txt set LOG_FILENAME=%LOG_DIR%\%LOG_FILE% set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第一処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% 処理A(プログラムは省略) set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第一処理終了時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第二処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% 処理B(プログラムは省略) set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第二処理終了時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% コード-------------------------------------------------------------------------------- 上記プログラム内の処理A及び、処理Bは比較的長い処理である為、その前後の処理時間帯を上記のように時間変数で取ってログに出力されています。 しかし、上記のように最新の処理時間帯をわざわざ何行もある各時間変数を宣言して取得するのはプログラム的に長くなってしまい、かつ醜いです。 上記方法以外に時間変数のスッキリとした取得方法は無いのでしょうか? ご存知の方がいれば、ご教授願いますでしょうか? 何卒宜しくお願い致します。

  • perlでファイルへの書き込みができません!

    perlでファイルへの書き込みができません! 教えてください. webプログラミング初心者なのですが, フォームから送信されたデータをshift-jisに変換させてからbbs1.txtへの内容の書き出しを行いたいのですが, #!/Applications/XAMPP/xamppfiles/bin/perl print "Content-type: text/html; charset=utf-8\n\n"; # フォーム部分を表示する print <<EOL; <html> <body> <h2>一行掲示板</h2> <form method="post" action="bbs1.cgi"> メッセージ:<input type="text" name="message" size="60"> <input type="submit" value="送信"> </form> <hr> EOL &ReadParse(*form); # フォームの値を取得 $message = $form{"message"}; use Encode; use Encode::Guess qw(euc-jp shiftjis 7bit-jis); encode("shiftjis",decode('Guess',$message)); # ログファイル読み込み open(IN, "bbs1.txt"); @log = <IN>; close(IN); # メッセージが入力されているときは書き込み処理を行なう if ($message ne "") { # ログ先頭にメッセージを格納 unshift @log, "$message\n"; # ログファイルに書き込み open(OUT, "> bbs1.txt"); print OUT @log; close(OUT); } # ログ表示 foreach $data (@log) { chop $data; print "$data<br>\n"; } print "</body>\n</html>\n"; このような感じにし実行して後でtxtファイルを見ると何も書かれていません>< なぜでしょうか...? 教えて下さい>< 今気づいたのですがそれに関連してなのかログも表示されていませんでした...>< txtファイルのアクセス権は読み書き可になっています encodeはあえてつかっています.

    • ベストアンサー
    • Perl
  • バッチファイルにおける環境変数分の繰り返し処理

    こんにちは。 現在、CSVから読み込んだ値(ファイル名)を環境変数に格納し、その環境変数に合致したファイルの移動を行う。というバッチファイルを作成しています。 作成にあたってCSVからのファイル名の読み込み及び、環境変数に全てのファイル名を1個ずつ格納する事(a1=AAやa2=BBなど)には成功したのですが、その後のファイルを移動するコマンドが上手く書けません。 ちなみに move "*%a1%*.txt" "C:\" move "*%a2%*.txt" "C:\" 上記のように1個ずつ手動で環境変数を指定しての移動は出来るのですが、その日によって 取得するファイル名(環境変数の数)が異なってくる為、可能であれば自動で環境変数の数を取得し環境変数分、1個ずつ環境変数からファイル名を読み込み、そのファイルを移動させる。と言ったバッチを組みたいのです。 よろしくお願い致します。 ------------------------------------------------------------------ set count=1 for /f %%i in (test.csv) do @call :add %%i goto PROCESS1 :add set a%count%=%1 set /A count+=1 goto :EOF :PROCESS1 ※移動するコマンド ------------------------------------------------------------------

  • メール

    Thunderbirdを使っています。メールを送信しようとすると、メールの送信中にエラーが発生しました。メールサーバーからの応答<XXXXXXXX@XXXXXX.ne.jp>Relay access denied メッセージの受信者を確認してください。という表示がでます。このような表示がでないようにして、メールを送信するのには、どのようにしたら、よいのでしょうか。回答お願いします。