自動的にネットワークの疎通結果をメールで飛ばして楽々確認したい!
用途と目的
こんにちは しま です。
社内SEなどされている方は、ネットワーク管理も行う必要があったりなかったり。
今回は、ネットワークが正常に動作(疎通)しているのかをチェックする方法をアプリなどを用いることなく確認し、結果をメールで送信する方法をお伝えいたします。
スペックの高いネットワーク機器があればGUIでネットワークの状態確認やメール通報できたりしますが、中規模大の企業しか導入していないが現実なんですよね。
それでもいち早く把握し対応が求められるので、仕方なく作ってみました。
それでは、早速メリットやデメリットから紹介します。
メリット・デメリット
メリット
・いつでも何処でも結果を自動メール配信で確認可能
・予め設定した時間に確認できる
・作り方によってエラー発生時のみの通報が可能
デメリット
・設定したパソコンやサーバーがダウンした場合は動作しない
・UIがないので、無知な素人では追録加除ができない
利用条件・流れ
利用条件
・設定(動作)するパソコンはWindows
・送信元のe-mailはmicrosoft365とする
流れ
・コマンドで任意のIPアドレスへpingを実行
・結果をメールで配信
誰もが思いつくようなことを並べましたが、次に実際のコーディングをどうするかについて、サンプルを書いてみます。
サンプルに倣って必要箇所をコピペしたり修正して使ってみてください。
役に立った場合は、フォローいただけると励みになりますので、よろしくお願いします。
バッチファイルを作成する
1.はじめに
今回作成するファイルの保存先をCドライブのpingフォルダとします。
Cドライブにpingフォルダがない場合は作成してください。
また、作成したファイルは全てpingフォルダへ保存ください。
1.NWhardware_Ping.bat(仮名)←pingを実行するファイル
以下をメモ帳へコピペしてc:\pingへ上のファイル名で保存
サンプルでは3つIPアドレスをチェックしているが、必要に応じてコピーのうえ、適宜修正のうえ利用ください。
@echo off
rem ---------------------------------------------------------------------
rem ネットワーク定期監視及び通知
rem
rem 【使い方】
rem 初期設定として、c:\へpingフォルダを作成し、次の2つのファイルを保存する。
rem ・NWhardware_Ping.bat(このファイル)
rem ・SendMail.vbs
rem タスクスケジューラーへチェックを行いたい間隔でbatファイルを設定
rem ---------------------------------------------------------------------
rem chcp 65001 'UTF-8
chcp 932
rem [ネットワーク機器調査開始]
set toki=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%
set output=c:\ping\NWhardware-ping%toki%.txt
set output2=c:\ping\NWhardware-ping.txt
rem [前処理]
del %output2%
timeout /t 2 > nul
echo %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2% Nisikyu-u Network machine check Start >%output%
echo %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2% Nisikyu-u Network machine check Start >%output2%
rem [--- 1件目 ---]
set machine=192.168.0.253
set machine-name="SS33F03(1号館)--->>"
ping -n 3 %machine%
@if errorlevel 1 GOTO TUGI001_NG
@if errorlevel 0 GOTO TUGI001_OK
:TUGI001_OK
echo %machine% %machine-name% OK >>%output%
echo.
GOTO TUGI002
:TUGI001_NG
echo %machine% %machine-name% ERROR >>%output%
echo %machine% %machine-name% ERROR >>%output2%
echo.
GOTO TUGI002
rem [--- 2件目 ---]
:TUGI002
set machine=192.168.11.253
set machine-name="FS5B1F01(2号館)--->>"
ping -n 3 %machine%
@if errorlevel 1 GOTO TUGI002_NG
@if errorlevel 0 GOTO TUGI002_OK
:TUGI002_OK
echo %machine% %machine-name% OK >>%output%
echo.
GOTO TUGI003
:TUGI002_NG
echo %machine% %machine-name% ERROR >>%output%
echo %machine% %machine-name% ERROR >>%output2%
echo.
GOTO TUGI003
rem [--- 3件目 ---]
:TUGI003
set machine=192.168.12.253
set machine-name="FS51F01(3号館)--->>"
ping -n 3 %machine%
@if errorlevel 1 GOTO TUGI003_NG
@if errorlevel 0 GOTO TUGI003_OK
:TUGI003_OK
echo %machine% %machine-name% OK >>%output%
echo.
GOTO TUGI004
:TUGI003_NG
echo %machine% %machine-name% ERROR >>%output%
echo %machine% %machine-name% ERROR >>%output2%
echo.
GOTO TUGI004
rem [--- owari ---]
:TUGI004
echo %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2% Nisikyu-u Network machine check End >>%output%
echo %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2% Nisikyu-u Network machine check End >>%output2%
cscript C:\ping\SendMail.vbs
以上がバッチファイルとなりますが、エラーがあったときにカウントして、メールを発信するスクリプトを実行する前にカウントが0より大きい時だけにスクリプトを実行することで、エラー時のみメール配信が可能となります。このあたりのコーディングは考えてみてください。
--------------------------------------------------------------------------------------
2.SendMail.vbs(仮名)←mailを送信するファイル
以下をメモ帳へコピペしてc:\pingへ上のファイル名で保存
修正箇所は、送信元アドレスと送信先アドレスとなります。
'------------------------------------
'変数
'------------------------------------
Dim filePath
Dim text
Dim log
'------------------------------------
'添付するファイル名とパスの指定
'------------------------------------
filePath = "C:\ping\NWhardware-ping.txt"
'------------------------------------
'mail本文の見出し作成
'------------------------------------
text = Date & " " & time & " のPing結果は以下の通りです。(Errがないときは正常終了)" 'Dateは日付の関数
'------------------------------------
'メール本文にログファイルの内容を出力する場合(不要なときは削除)
'------------------------------------
Set fileRead = CreateObject("Scripting.FileSystemObject") 'ファイルの読み込みのオブジェクト設定
Set fileText = fileRead.GetFile(filePath).OpenAsTextStream 'ファイルの中身をテキスト化する設定
log = fileText.ReadAll 'ファイルの読み込み
fileText.close 'テキストの終了
Set fileRead = Nothing '読み込み設定の終了
'------------------------------------
'オブジェクトの定義
'------------------------------------
Set oMsg = CreateObject("CDO.Message")
'------------------------------------
'送信元と送信先を指定
'------------------------------------
oMsg.From = "nettest@xxxxxx.xx.jp" '送信元アドレス
oMsg.To = "xxxxxxx@xxxxxxx.xx.jp" '送信先アドレス
'送信先を複数にするときは、"xxxx@xxx.jp , yyyy@yyy.jp" とカンマ区切り
'------------------------------------
'件名・本文(本文はどちらかを指定)
'------------------------------------
oMsg.Subject = "Ping 定期ログ通知"
oMsg.TextBody = text & vbCrLf & vbCrLf & log 'mail本文の見出しとログファイルを本文にする場合(vbCrLfは改行)
rem oMsg.TextBody = text & vbCrLf 'mail本文の見出しを本文にする場合(vbCrLfは改行)
'------------------------------------
'メールサーバ設定
'------------------------------------
strConfigurationField ="http://schemas.microsoft.com/cdo/configuration/"
With oMsg.Configuration.Fields
.Item(strConfigurationField & "sendusing") = 2 '設定値の説明は以下に記載
.Item(strConfigurationField & "smtpserver") = "outlook.office365.com"
.Item(strConfigurationField & "smtpserverport") = "25"
.Item(strConfigurationField & "smtpusessl") = true 'use sslの設定
rem .Item(strConfigurationField & "smtpusessl") = true/false 'use sslの設定
'------------------- smtp認証を設定する場合以下を設定 ------------
.Item(strConfigurationField & "smtpauthenticate") = 1 '1(Basic認証)/2(NTLM認証)
.Item(strConfigurationField & "sendusername") = "nettest@nisikyu-u.ac.jp" 'smtp-authを利用する場合必要
.Item(strConfigurationField & "sendpassword") = "jNKunW:ip" 'smtp-authを利用する場合必要
.Item(strConfigurationField & "smtpconnectiontimeout") = 60
'--------------------------------------------------------------
.Update
end With
'------------------------------------
'添付ファイルの設定 (ファイルを添付しない場合は設定しない)
'------------------------------------
oMsg.AddAttachment(filePath) '添付ファイルの設定
'------------------------------------
'送信
'------------------------------------
on error resume next
oMsg.Send 'メール送信設定(この設定のみでも問題ない)
--------------------------------------------------------------------------------------
3.完成した2つのファイルがc:\ping に保存したことを確認後に
windowsの管理にあるタスクマネージャーにて NWhardware_Ping.bat を指定する日時に動作するよう設定を行う。
この記事が気に入ったらサポートをしてみませんか?