簡単な死活監視をして、エラーの時だけメール通知する Office365メール利用

いつも使っているメールサーバーがOffice365の場合、以下のスクリプトを使って、超簡単な死活監視をしています。
本来であればZABBIXやNagiosなどを使って死活監視などをするべきですが、
対象が2つとか、しかも専用のLinuxサーバー立てるまでも無い場合に使ってます。
(客先のファイルサーバーに仕込んだり。。。)

参考にしたサイトは以下のサイト

◆Pingでサーバーの死活確認(Test-Connection):PowerShell

powerShellでpingを打ってみた:社内SEの徒然なる日記

【PowerShell】Windows PowerShell を使用して GMail や Office 365 からメールを送信する:フィールドSEあがりの安納です

作成したスクリプト

# 対象機器のIPアドレスを格納した配列
[String[]]$addressAp = @('IPアドレス1','IPアドレス2')

# メールあて先等情報
$EmailFrom = "送信元アドレス"
$EmailTo ="宛先アドレス"
$Subject = "件名" 
$Body = "本文" 

# 実行結果を確認します。
for($i = 0; $i -lt $addressAp.Count; $i++) {

   # Pingを実行します。
   $pingAlive = @(Test-Connection -ComputerName $addressAp[$i] -Quiet)

   # Ping成功の場合のみ、処理を実行します。
   if ($pingAlive -eq $True) {
       Write-Host ($addressAp[$i] + '=Ping成功')
   } else {
       Write-Host ($addressAp[$i] + '=Ping失敗')

        $Body += "`r`n"
        $Body += "エラーアドレス:" + $addressAp[$i] 
        $Body += "`r`n"
        $SMTPServer = "ほげほげ.outlook.com" 
        $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
        $SMTPClient.EnableSsl = $true 
        $SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“Office365メールアドレス”, "Office365パスワード”); 
        $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)       
   }
}

うん…そのままコピペしました。先人たちの知恵に感謝ですm(_ _)m

コードを見ると分かるのですが、IDとパスワードを直接指定しています。なので、、、

  • パスワード漏洩の問題
  • パスワード有効期限が切れたらこのパスワードも変更しなきゃいけない

という、問題もありますが、まぁその辺は有効期限延長とか、運用でカバーとかしてください。
この程度の超簡単スクリプトを動かすのは自分で完全にコントロール出来る環境でやりましょう♪

スクリプトファイルとして Kanshi.ps1 とかのファイルにして、監視マシンの適切な場所に保存して
これをWindowsのタスクスケジューラに登録して定期的に実行すればOKです。

欲を出すと、実行結果を月に1度ぐらいの頻度で確認したいですねぇ^^;

ちなみに、SMTPサーバーアドレスの確認方法はコチラのblogにも記事を書いています。

Comments are Disabled