ネットワーク切断を検知するスクリプト

ケーブルの断線や直接繋がっているスイッチのダウンなどを検知することが出来るスクリプトです。切断を検知出来たからといってそれを直す事が出来るわけではありませんのであしからず。

////////////////////////////////////////////////////////////////////////////////////////////
// ネットワーク切断チェックツール
//
// 作成日:2007.09.11
//
// [参考URL]
//  http://blog.livedoor.jp/takaaki_bb/archives/50500014.html
//  時間取得のロジックはこちらから拝借しました
//
//   http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/mar05/hey0321.mspx
//   大元のロジックはここから拝借しました
////////////////////////////////////////////////////////////////////////////////////////////

var strLatestEvent , strFilePath;

var FileObj       = WScript.CreateObject("Scripting.FileSystemObject");
var WshShell      = WScript.CreateObject("WScript.Shell");
var strComputer   = ".";
var objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\" +
                              strComputer + "\\root\\wmi");

// ファイルの保存先(%TEMP%)
strFilePath = WshShell.ExpandEnvironmentStrings("%TEMP%") + "\\";
// strFilePath = "C:\\";

var colMonitoredEvents = objWMIService.ExecNotificationQuery("Select * from MSNdis_StatusMediaDisconnect");
var LogFile ;

// 
WriteLogInfo("★ネットワーク切断確認ツール\r\n\r\n[起動時間] " + getStrNowDateTime() + "\r\n\r\n");

while ( true )
{
	strLatestEvent = colMonitoredEvents.NextEvent();
	WriteLogInfo(getStrNowDateTime() + "\t" + "Network is Disconnected.");
}


/****************************************************************
 * ログをファイルに書き込み
 ****************************************************************/
function WriteLogInfo( sData )
{
	WScript.Echo(strFilePath + "\\disconnect.log");
	LogFile = FileObj.OpenTextFile(strFilePath + "disconnect.log", 8, true);
	LogFile.WriteLine(sData);
	LogFile.Close();

	return 0;
}

/****************************************************************
 * Dateオブジェクトを "yyyy/mm/dd hh:mi:ss" で表現する
 ****************************************************************/
function getStrNowDateTime() {
    var dt = new Date();
    return (
	dt.getYear() + "/" + format2d(dt.getMonth() + 1) + "/" + format2d(dt.getDate()) + " " +
	format2d(dt.getHours()) + ":" + format2d(dt.getMinutes()) + ":" + format2d(dt.getSeconds())
    );
}

/********************************************
 * 1桁の数字の頭に 0 をつける
 ********************************************/
function format2d(strInt) {
    if (strInt < 10) {
        return ("0" + strInt);
    } else {
        return strInt;
    }
}