忍者ブログ

ぷーちんの点

ぷーちんの備忘録です。 今やっている事や知識とかを書いていきます。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

WindowsServerログ収集④

★VBSで添付ファイル付きメール送信★

【VBSの作成】
・[mail.vbs][abort.vbs]という名前で作成
・正常時と異常時のメール文章を変更するだけなので、中身はほぼ同じ

ソース↓
------------------------------------------------------------------------------

Dim file_now
Dim file_name
Dim PC_name
Dim oMsg
Dim objNetWork

Set oMsg = CreateObject("CDO.Message")
Set objNetWork = WScript.CreateObject("WScript.Network")

PC_name= objNetWork.ComputerName
file_now = NOW()
file_name = "C:\auto_log\log\" & PC_name & "_" & Year(file_now) & Right("00" &Month(file_now),2)

oMsg.To = "pu-chin@test.com"
oMsg.From = "pu-chin@test.co.jp"
oMsg.Subject ="イベントログのお知らせ [" & Date & "][" & PC_name & "]"
oMsg.TextBody = "月次イベントログ通知" & vbCrLf & file_name & vbCrLf &"PC名:" & PC_name

oMsg.AddAttachment file_name & "_system.csv"
oMsg.AddAttachment file_name & "_security.csv"

oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
"mail.server.co.jp"
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
oMsg.Configuration.Fields.Update
oMsg.Send

------------------------------------------------------------------------------

変数宣言:[Dim]

---変数---
file_now:今日の日付
file_name:ファイル名
PC_name:ホスト名
oMsg:オブジェクト名
objNetWork:オブジェクト名

---オブジェクト作成---
Set oMsg = CreateObject("CDO.Message"):CDO.Messageオブジェクト
Set objNetWork = WScript.CreateObject("WScript.Network"):WScript.Networkオブジェクト

---メール中身---
宛先:oMsg.To = "宛先アドレス"
送信者:oMsg.From = "送信者のアドレス"
件名:oMsg.Subject = "件名"
本文:oMsg.TextBody = "本文"
添付ファイル:oMsg.AddAttachment "ファイル名"

---定形文かな???---
oMsg.Configuration.Fields.Item _
  ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
oMsg.Configuration.Fields.Item _
  ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
    "★★メールサーバ名★★"
oMsg.Configuration.Fields.Item _
  ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
oMsg.Configuration.Fields.Update
oMsg.Send

---添付ファイル---
・添付ファイルを複数付ける際は、2行で記述します。
*後ろにつけようとしましたが、出来なかったです(・・;

---内容の違い---
[mail.vbs]の方はこの文章のまま
[abort.vbs]が、本文を[エラー発生]とし、添付ファイルを付けない。

+++++++++++++++++++++++++++++++++++++
ぷーちんです。
VBS説明全く出来ない事が発覚しました。。
お恥ずかしい・・・。
理解までできてない様です。

とりあえず、送信は587で送信しております。
私が構築した環境だと、送信も受信も同じサーバ宛なのでメールサーバが送信サーバなのか受信サーバなのか・・・。
多分SMTPだと思いま、多分!!!

添付ファイルを複数付ける際、カンマとかで区切れないかやったのですが・・・
失敗してしまいました。
ので、2行で記述しております。
これが正しいのか、それとも1行で記述出来たのか・・・
もし、ご存知の方いらっしゃいましたらコメント頂けたら喜びます!!!

これでザッと完成になります。
ふぅ。
あとは、月1で送信するようにタスクに入れるだけです。
後日タスクへの追加方法記載させて頂きます。

今回数日にかけて記載した、これがWin2008R2/Win2012R2に導入済です。
AD入っているためなのか不明ですが、AD機に導入した時謎エラーがありました。
・・・が、それは次回のお話で。

では、次回は、そのエラー(PowerShell)とタスクへの追加方法についてです(*´艸`*)

拍手[2回]

PR

WindowsServerログ収集③

★PowerShellでイベントログの取得★

【PowerShellの作成】
・収集イベント:システムとセキュリティの2つ
・警告・エラーのログを取得する
・取得したログを[CSV]ファイルに出力する
・1日から翌月1日の1ヶ月分を取得(例:7/1-8/1のログ)

------------------------------------------------------------------------------

#当月の1日を取得
$this_month = Get-Date -Day 1 -Hour 0 -Minute 0 -Second 0
#先月の1日を取得
$last_month = Get-date ($this_month).AddMonths(-1)
#ホスト名の取得
$host_name = hostname
#ファイル名
$file_name = "c:\auto_log\log\"+$host_name+"_"+(get-date -f yyyyMM) + "_"
#セキュリティのログ・ファイル作成
get-eventlog -logname security -entrytype Error,FailureAudit,warning -after $last_month -before $this_month |select entrytype,TimeGenerated,Source,EventID,MachineName,Message |export-csv $file_name"security.csv" -encoding utf8
#システムのログ・ファイル作成
get-eventlog -Logname system -entrytype Error,FailureAudit,warning -after $last_month -before $this_month |select entrytype,TimeGenerated,Source,EventID,MachineName,Message |export-csv $file_name"system.csv" -encoding utf8
#ファイルの有無確認し、なければ-1でエラーを返す
IF( (Test-Path -path $file_name"security.csv" ) -and (Test-Path -path $file_name"system.csv") ){
exit 0
}Else{
exit -1
}

------------------------------------------------------------------------------
---PSの基本---
・PowerShellのScriptの拡張子[.ps1]
・コメント:[#]
・変数:[$]

---変数---
[this_month]
  →当月の日付を格納(時刻は0:00:00にする)
[last_month]
  前月の日付を格納する
[host_name]
  →コンピュータ名を格納して、どのホストかをわかるようにする
[file_name]
  →絶対パスでディレクトリとファイル名を格納する

---内容---
・セキュリティのログをCSVで取得する
・システムのログをCSVで取得する
・セキュリティログとシステムログが[log]フォルダにあるかを確認
  exit=0:正常終了。それ以外は異常終了。

---操作方法---
○スクリプト作成○
1.上記ソースをメモ帳に貼り付け[eventlog.ps1]という名前で保存をする。
  保存先:c:\auto_log\
2.PSの権限を変更する
  [アクセサリ]→[WindowsPowerShell]→[WindowsPowerShell]
  右クリックをして[管理者で実行]を選択する。
  [Set-ExecutionPolicy remotesigned]コマンドを打つ。
  確認のため、[Get-ExecutionPolicy]コマンドでremotesignedと結果が出るか確認する。
  remotesignedなら問題なし。
3.保存したスクリプトを実行し、エラー等でないか確認する。
 (権限がないと弾かれる場合は、右クリックで[管理者として実行]する必要がある)

---PSの権限---
RestrictedPowerShellのソフトだけで実行する場合。スクリプト実行不可。(デフォ設定)
AllSigned信頼できる発行元が署名したスクリプトのみを実行できます。
RemoteSignedDLしたスクリプトは信頼できる発行元が署名した場合にのみ実行できます。
Unrestricted制限なし。すべての Windows PowerShell スクリプトを実行できます。
記述したScriptをPSのソフト上で1つずつ実行する事が出来る。
デフォの権限[Restricted]では、その操作のみを許可している。
そのため、一度権限をScript実行許可のある[RemoteSigned]に変更する必要があるわけです。
今回はローカル作業のみなので[remotesigned]にしております。

ぷーちんが、PSのスキなところは
PSのソフト上で実行するときに[Tab補完]が使える事。
例えば
[get-exec]まで入力して[Tab]キーを押すと[Get-ExecutionPolicy]と出てきます。
[get-]だけでも、取得できるコマンドが出てきますし、パラメータも出てきてくれます。
忘れても出てくるので、楽です(・ω<)
なので、ド素人のぷーちんでも出来るわけです。

---Get-Eventlogの説明---
get-eventlog -logname security -entrytype Error,FailureAudit,warning -after $last_month -before $this_month |select entrytype,TimeGenerated,Source,EventID,MachineName,Message |export-csv $file_name"security.csv" -encoding utf8

[get-eventlog]:イベントログを取得
[-logname]:何のログかを記載(今回はセキュリティとシステムですね)
[-entrytype]:ログのフィルターです(今回はエラーと重大と渓谷です)
[-after]:いつからのログか(変数で値を入れてます)
[-before]:いつまでのログか(変数で値を入れてます)
[|select]:取得ログの項目を選択してます。ここの記載順番でCSVに書き込まれます。
[export-csv]:csvファイルに出力します。その後にくる値は絶対パスでのファイル名になります。念の為、エンコードしてます。

PSはパイプ[|]で左の値を右へ渡しています。
[get-○○○]や[set-○○○]や[export-]等動詞をパイプで繋がずに1文で記述することは出来ません。
値を右へ渡すためにパイプを使って動詞を書いていきます。
今回ので言えば
get-eventlogで取得したデータをselectでソートし、export-csvが値を受け取りCSVへ出力する。
左から右へ左から右へと値を渡す形になってます(*´艸`*)

+++++++++++++++++++++++++++++++++++++++++++
ぷーちんです。
今日はPSの記述でした。
PSが一番説明長いかなーと思ってます。
PS初めての人でも、多分なんとなくわかるかと・・・。
PSでコマンド打てばすぐ掴めると思うンですけどね(*´艸`*)
きっとSEとかNW管理者が利用するのでしょうね。

PSといえば、office365でもPSが利用出来ます。
ただ、PSのソフト自体が違うようでDLが必要みたいですね。
PS色々あってよくわかりませんw

わからなければ、
[get-help]とか、[get-command]で調べるのが早そうですね。
[get-help get-executionpolicy]でexecutionpolicyのヘルプが出てきます。
ワイルドカード[*]も使えます。
PSぷーちんでも使える感が素敵ですww
もっとスキル向上に努めます・・・!

では、次回はメール送信のVBSのでお会いしましょう(╹◡╹)

拍手[0回]

WindowsServerログ収集②

★batファイルでScriptの起動★

【作業ディレクトリ】

・[auto_log]フォルダをCドライブ直下に作成
・[C:\auto_log\]にて作業を行う
・[C:\auto_log\]に[log]フォルダを作成(取得ログの格納先)

【ファイル名】

スクリプトを動かすバッチ:[start.bat]
イベントログ収集のPowerShell:[eventlog.ps1]
正常時のメール:[mail.vbs]
エラー時のメール:[abort.vbs]

【batの作成】

------------------------------------------------------------------------------
  1. @powershell.exe c:\auto_log\eventlog.ps1
  2. @if "%ERRORLEVEL%" == "0" (
  3. cscript c:\auto_log\mail.vbs
  4. ) else (
  5. cscript c:\auto_log\abort.vbs
  6. )
------------------------------------------------------------------------------
1.PowerShellのスクリプトを呼ぶ
2.[ERRORLEVEL]は0が正常値なので、PSが正常終了なら
3.正常時のメール送信VBSを起動
4.異常なら、異常時のVBSを起動

メモ帳に記述して[start.bat]という名前で保存する。
保存先:C:\auto_log\

バッチでは、PSとVBSを起動するよう記述する。
エラーが出てるかの判定をして、エラーでどのVBSを起動するかを書いてます。

++++++++++++++++++++++++++++++++++++++
ぷーちんです(*´艸`*)
まず、DOSの方からアップしました。
また後日PSを書きます。

PSってAD(ActiveDirectory)でも使いますよね。
いろんな事が出来るのですが、よく英語で話しかけられちゃいますw
vista以降ならデフォでインストールされてるらしいですね。
サーバ機で使う事の方が多いンでしょうかね?
となると、SEが使うものですかね?

ぷーちんは、Script初めて書いてるので、難しいです・・・。
あたふたして、今回いろんな人に教えを乞いながら完成した感じです。
これくらいのなら1人で出来るようになりたいなー・・・。

保守してる時って、基本的にWindowsログって、
取得したらログ削除ってみなさんしてるンですか??

色々お勉強中です。
では、次はPSでお会いしましょう。
ちょっと、PSが一番面倒でしたがw


拍手[1回]

プロフィール

HN:
ぷーちん
性別:
非公開
職業:
インフラエンジニアになりたい
自己紹介:



P R





ムームードメイン
ムームードメイン
ムームードメイン
ムームードメイン
 


Download Vivaldi Web Browser Today!


ブログ内検索