서버 상태 스크립트 정시 확인

스크립트를 써서 매일 출근하기 전에 실행하고 검사 결과를 E-mail로 보고하여 문자 알림의 외부 메일박스에 전송하면 출근하기 전에 고장과 서버가 있는지 알 수 있습니다.
검사 내용이 끊임없이 완벽해져서 현재 출근 체크기, 프린터, 모니터링, UPS, 공유기, 교환기 등 모든 IP 장치가 연결되어 있는지 알 수 있다.파일 공유 서버, 웹 사이트 등이 정상적으로 접근할 수 있는지 여부.Windows 서버의 부팅 시간, 메모리 사용, 하드 드라이브 사용 가능 공간 등 상황입니다.
메일을 보면 모든 설비와 서버의 상황을 한눈에 볼 수 있고 일일이 검사할 필요가 없으며 사용자가 출근하기 전에 상황을 먼저 알 수 있다.
일반적인 Ping에서 결과를 반환하는지 확인하고, 파일 접근은 FileExists, 사이트 클래스는 InetRead에서 결과를 반환하고, Windows 서버 클래스는 WMI로 조회합니다.
도메인 내 Windows 서버 부분 코드 조회:
; Windows 
Local $QueryServerIP = StringSplit($WinServerIPlist, ",")
For $i = 1 To UBound($QueryServerIP) -1
    Local $QueryServer = Ping($QueryServerIP[$i], 1000)

    If $QueryServer Then ; If a value greater than 0 was returned then display the following message.
	  Dim $BodyTable, $partSpaceInfo
	  $objWMIService = ObjGet("winmgmts:\\" & $QueryServerIP[$i] & "\root\cimv2")
	  $colItems = $objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
		 For $colItem in $colItems
			$osVersion = $colItem.Version
			   If $colItem.FreePhysicalMemory < $AlarmFreePhysicalMemory Then
				  $FreePhysicalMemory = '<font size="3" color="#FE642E">' & Round($colItem.FreePhysicalMemory/1048576, 2) & "G</font>"
			   Else
				  $FreePhysicalMemory = Round($colItem.FreePhysicalMemory/1048576, 2) & "G"
			   EndIf
			$TotalVisibleMemorySize = Round($colItem.TotalVisibleMemorySize/1048576, 2) & "G"
			$LastBootTime = StringTrimRight($colItem.LastBootUpTime, 11)
			$LastBootTime = StringRegExpReplace($LastBootTime, '(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)', '$1-$2-$3 $4:$5:$6')

			   If _DateDiff( 'd', $LastBootTime, _NowCalc()) < 1 Then   ; 1, 1 
				  $LastBootTime = '<font size="3" color="#FE642E">' & $LastBootTime & '</font>'
			   EndIf
		 Next
			   If $osVersion < 5.1 Then	; Windows 2000
				  $colItems = $objWMIService.ExecQuery("Select * from Win32_PerfRawData_PerfOS_System")
						For $colItem in $colItems
						   $intPerfTimeStamp = $colItem.Timestamp_Object
						   $intPerfTimeFreq = $colItem.Frequency_Object
						   $intCounter = $colItem.SystemUpTime
						   $osversion = $colItem.Version
						Next
						; Win2000 
						$iUptimeInSec = ($intPerfTimeStamp - $intCounter)/$intPerfTimeFreq
						$bootUpDays = $iUptimeInSec/60/60/24
						$seconds = ChangeToSeconds($bootUpDays)
						$LastBootTime =  _DateAdd( 's', -$seconds, _NowCalc())
						   If _DateDiff( 'd', $LastBootTime, _NowCalc()) < 1 Then   ; 1, 1 
							  $LastBootTime = '<font size="3" color="#FE642E">' & $LastBootTime & '</font>'
						   EndIf
			   EndIf
	  $colItems = $objWMIService.ExecQuery ("Select * from Win32_LogicalDiskToPartition")
	  Local $partSpaceInfo = ""		; $partSpaceInfo, 
        For $objItem In $colItems
                $DiskFH = StringLeft(StringRight($objItem.Dependent, 3), 2)
			    $colDiskItems = $objWMIService.ExecQuery ("Select * from Win32_LogicalDisk Where DeviceID='" & $DiskFH & "'")
				  For $colDiskItem In $colDiskItems
;					 $DiskFHSpaceInfo =  StringReplace($DiskFH, ":", " ") & CalcKMG($colDiskItem.FreeSpace) & "/ " & CalcKMG($colDiskItem.Size) & @CR
					 $DiskFHFreeSpace = CalcKMG($colDiskItem.FreeSpace)
						If $colDiskItem.FreeSpace < $AlarmFreeSpace Then
						   $DiskFHFreeSpace = '<font size="3" color="#FE642E">' & CalcKMG($colDiskItem.FreeSpace) & '</font>'
						Else
						   $DiskFHFreeSpace = CalcKMG($colDiskItem.FreeSpace)
						EndIf

					 $DiskFHSpaceInfo =  $DiskFH & $DiskFHFreeSpace & "/" & CalcKMG($colDiskItem.Size) & @CR
				  Next
			   $partSpaceInfo = $partSpaceInfo & $DiskFHSpaceInfo
        Next
						$BodyTable = $BodyTable & '<TR><TD>' & ServerName($QueryServerIP[$i]) & '</TD><TD>' & $QueryServerIP[$i] & '</TD><TD>' & $QueryServer & ' </TD><TD>' & $LastBootTime& '</TD><TD>' & $FreePhysicalMemory & "/" & $TotalVisibleMemorySize & '</TD><TD>' & $partSpaceInfo & '</TD></TR>'
    Else
        $BodyTable = $BodyTable & & '<TR><TD>' & ServerName($QueryServerIP[$i]) & '</TD><TD>' & $QueryServerIP[$i] & '</TD><TD><font size="3" color="red"> </font></TD><TD>' & $LastBootTime & '</TD><TD>' & $FreePhysicalMemory & "/" & $TotalVisibleMemorySize & '</TD><TD>' & $partSpaceInfo & '</TD></TR>'
		$Subject = '  - ' & StringReplace($Subject, '  - ', "")
    EndIf
Next
$Body = $Body & $BodyTable & "</Table><BR><BR><BR>"

좋은 웹페이지 즐겨찾기