見出し画像

サーバ稼働確認結果をLINEで受けれるようにした

まだまだオンプレのサーバが多い会社で従事してるんだけど、サーバ稼働確認結果(Pingによる死活監視のみだけど)LINEで受けたいなと思って調べてやってみた。

これまでは会社メールで受けてたんだけど、LINEの方がいいかなーと。

LINE Notifyを使うので、会社のルールで個人のLINEでそういう通知を受けるの禁止しているかどうかはご注意くださいね。大体禁止だとは思いますけど。。

コーディングは学生の時にやってたとか、仕事で必要なスクリプトをチャチャっと書くくらいなので汚いところや「もっとこうしたら?」というところがあるかもです、ごめんなさーい。

まずはLINE Notify。下記を参考にトークンを取得しました。

https://www.yukibnb.com/entry/2018/08/11/155402

続いてPowerShellです。

 #テキストからサーバリスト取込み 
$addressAp = (Get-Content C:\PG\serverlist.txt) -as [string[]]

# Line Notify エンドポイント,トークン、トークンをリクエストヘッダ内Authorizationに指定
$uri    =  "https://notify-api.line.me/api/notify"
$token  = "Bearer [取得したトークンを記載]"
$header = @{Authorization=$token}

# 実行結果を確認します。
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成功')
      $Body += "アドレス:" + $addressAp[$i] + '=成功'
      $Body += "`r`n"
  } else {
      Write-Host ($addressAp[$i] + '=Ping失敗')
       $Body += "アドレス:" + $addressAp[$i] + '=失敗'
       $Body += "`r`n"
  }
}

$body2   = @{message=$Body}

# ★リクエスト実行
$res = Invoke-RestMethod -Uri $uri -Method Post -Headers $header -Body $body2 

# デバッグ用結果表示
echo $res

serverlist.txtにはpingを飛ばしたいサーバのipやホスト名を記載。1行に1台で。

これでサーバのタスクスケジューラ等で定期的に実行されるようにセットすれば便利。と思うよ。

この記事が気に入ったらサポートをしてみませんか?