- ベストアンサー
vbscriptによる条件分岐とファイル出力
- ネットワーク監視ログをVBscriptで自動化する方法について教えてください。
- VBscriptを使用して、ネットワーク監視ログの中の特定の文字列を検索し、条件に応じて結果ログを出力する方法を教えてください。
- VBscript初心者ですが、ネットワーク監視ログの処理を自動化したいと思っています。正常時のログには必ず「1,2」という文字列が出力され、異常時のログには異常を知らせるコメントが3行記述されています。VBscriptを使用して、正常時のログを確認し、「1,2」の記述があれば「ネットワークは正常です」というコメントを結果ログに出力し、見つからなかった場合は異常時のログの3行目を結果ログに出力する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
1.変数の誤用を避けるため、最初にOption Explicit文を置きます。 この文があると、変数を事前定義せずに使うとエラーになります。 この文が無いと変数名を間違えてもエラーにならないので、誤動作 する可能性が高くなります。 2.Set WshShell = WScript.CreateObject("WScript.Shell") ? 使わないオブジェクトは作らないようにします。 3.ファイルアクセスオブジェクト Dim objFs Set objFs = CreateObject("Scripting.FileSystemObject") 4.入力ファイルオブジェクト Dim inFle Set inFile = objFs.OpenTextFile("C:\~", 1) '1は入力モード 5.出力ファイルオブジェクト Dim outFile Set outFile = objFs.CreateTextFile("C:\~", True) 'Trueは上書き可 6.テキストの読み込み Dim text text = inFile.ReadLine() '1行分の読み込み 7.テキスト内に"1,2"があるかを調べる 掲題のようにInStrでも良いし、RegExpを使っても良いでしょう。 http://msdn.microsoft.com/ja-jp/library/cc392403.aspx 8.条件分岐 If InStr(text, "1,2") > 0 Then WScript.Echo "ネットワークは正常です" Else '3行目をtextに読み込む outFile.WriteLine text '改行付きで書き込む End If '終了
その他の回答 (1)
- kiki_s
- ベストアンサー率59% (147/248)
小生もvbscript初心者ですので、 答えられるかどうかは分かりませんが。 補足要求です。 >ネットワーク監視ログが毎朝出力され、そのログの中身を、各サーバにログインし手作業で確認を行っています。 ログインもVBscriptで行う? >正常時のログには必ず「1,2」と文字列が出力されます。 正常時のログファイルと異常時のログファイルは同じもの? また特定の文字列(1,2)は何行目? 正常、異常に関わらず、データは3行固定なのでしょうか? 作成したコード全体の開示はできますか? vbscriptは開発環境初が貧弱ですので、読み込みや書き込み、比較などを分解して、 それぞれコーディングする方が理解しやすいと思います。 それぞれ上手く動作したら組み合わせる訳です。 二度手間かも知れませんが、まとめてコーディングすると、 どこで間違えているか分かりません。
補足
kiki_sさん ご返信遅くなりすみません。情報が不足でした。。 ログインは、VBscriptでは行いません。 ログファイルが対象SVからFTPで転送されてきます。 正常時と異常時のログの中身は別になります。 【正常時のログ】 WLBS クラスタ制御ユーティリティ クラスタ 192.168.100.10 ホスト 1 はクラスタに参加してから 1 回、収束状態に入りました。 前回の収束が完了したのは大体次のとおりです: 2009/05/21 14:21:12 ホスト 1 はクラスタの一部として次のホストを既定値で収束しました: 1, 2 【異常時のログ】 WLBS クラスタ制御ユーティリティ クラスタ 192.168.100.10 ホスト 1 は停止していてクラスタの収束状態を取得できません 以上がログの中身です。異常時のログは、ほぼ全て固定で出力されます。
お礼
nda23さん ご連絡遅くなりすみませんでした。 無事、解決できました。 今後ともよろしくお願いいたします。
補足
nda23さん ご返信遅くなりすみません。 ご回答頂いた情報を元に作成してみます。 結果ご連絡させて頂きます。