' ftp-sys-chk-schedule.vbsi copyright 2004,2005 orii0 ' check server environment and process for WindowsNT/2000/2003 ' report to text file and send via FTP ' 05/17/04 orii0 ' 05/21/04 orii0 update schedule time ' 07/25/04 orii0 update task list ' 12/08/04 orii0 add schedule and cancel old schedule for ftp-sys* '----------------------- ' CONSTANTS for exection '----------------------- Const PGM_NAME = "ftp-sys-chk-schedule" 'Program name myPGM = PGM_NAME & ".vbs" Const SCHEDULE_PGM = "ftp-sys-chk.vbs" Const PGM_VER = "1.03" 'Varsion Const WORK_DIR = "\InetPub\scripts" 'WORK Directory TXT_NAME = PGM_NAME & ".txt" 'Report file name FTPPARM = PGM_NAME & "-ftpcommand.txt" 'FTP command file name 'FTPCOM = "ftp -n -i -v -s:"& FTPPARM 'FTP command Const FTPSRVR = "192.168.0.20" 'FTP server ' Check current folder strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery _ ("Select * from Win32_OperatingSystem") For Each objOperatingSystem in colOperatingSystems myOS = objOperatingSystem.Caption Next myOSF = "w2k" myDIRP = "C:\" If myOS = "Microsoft Windows" Then myOSF = "w98" myDIRP = "C:\WINDOWS\TEMP" End If Set objFS = CreateObject("Scripting.FileSystemObject") Set objFile = objFS.GetFile(myPGM) myDIR = objFile.ParentFolder mySCHEDULE_PGM = myDIR & "\"& SCHEDULE_PGM FTPCOM = "ftp -n -i -v -s:"& myDIR & "\"& FTPPARM 'FTP command ' TCP/IP strComputer = "." Set objWMIService = GetObject _ ("winmgmts:" & "!\\" & strComputer & "\root\cimv2") Set colAdapters = objWMIService.ExecQuery _ ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True") ' REPORT FILE Set objFS1 = CreateObject("Scripting.FileSystemObject") Set objFolder = objFS1.GetFolder(myDIR) Set objFile = objFolder.CreateTextFile(TXT_NAME) ' FTP command file Set objFS2 = CreateObject("Scripting.FileSystemObject") Set objFolder2 = objFS2.GetFolder(myDIR) Set objFile2 = objFolder2.CreateTextFile(FTPPARM) '--------------------- ' START main process '--------------------- myHOSTNAME = "" ' Hedline of report file objFile.WriteLine(myPGM &" VER:" & PGM_VER &" Server monitor report date: "& Now ) objFile.WriteLine("Current folder:"& myDIR ) ' TCP/IP myIPADDRESS = "" For Each objAdapter in colAdapters objFile.WriteLine("Host name: " & objAdapter.DNSHostName) if Not IsNull(objAdapter.DNSHostName) Then myHOSTNAME = objAdapter.DNSHostName End If If Not IsNull(objAdapter.IPAddress) Then For i = LBound(objAdapter.IPAddress) To UBound(objAdapter.IPAddress) objFile.WriteLine("IP address: " & objAdapter.IPAddress(i) ) myIPADDRESS = objAdapter.IPAddress(i) Next End If Next ' ' TASK SCHEDULE ' 'mySCHD = "********081000.000000+540" mySCHD_TD = "********" mySCHD_LD = "00.000000+540" mySCHD_HH = "00" mySCHD_MM = "00" 'mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD If Not IsNull( myIPADDRESS ) Then mySCHD_MM = Right( myIPADDRESS , 2 ) If ( Left( mySCHD_MM , 1 ) = "." ) Then mySCHD_MM = "0" & Right( myIPADDRESS,1 ) End If End If ' 月曜日から土曜日の1時間毎にプログラムが実行されるようにスケジュールします。 ' また、FTPの集中を避けるために、起動時間の分はIPアドレスの末尾2桁を使用 ' しています。 objFile.WriteLine( "--------------" ) objFile.WriteLine( "TASK Schedule " ) objFile.WriteLine( "--------------" ) strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set objNewJob = objWMIService.Get("Win32_ScheduledJob") mySCHD_HH = "00" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "01" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "02" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "03" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "04" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "05" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "06" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "07" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "08" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "09" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "10" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "11" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "12" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "13" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "14" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "15" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "16" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "17" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "18" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "19" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "20" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "21" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "22" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) mySCHD_HH = "23" mySCHD = mySCHD_TD & mySCHD_HH & mySCHD_MM & mySCHD_LD errJobCreated = objNewJob.Create _ ( mySCHEDULE_PGM, mySCHD, True , 1 OR 2 OR 4 OR 8 OR 16 OR 32, , , JobID) objFile.WriteLine( "Schedule program name = " & mySCHEDULE_PGM ) objFile.WriteLine( "TASK scheduled : " & errJobCreated ) ' ' TASK SCHEDULE LIST ' objFile.WriteLine( "--------------------" ) objFile.WriteLine( "TASK Scheduled list " ) objFile.WriteLine( "--------------------" ) strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colScheduledJobs = objWMIService.ExecQuery _ ("Select * from Win32_ScheduledJob") For Each objJob in colScheduledJobs objFile.WriteLine( " " ) objFile.WriteLine( "Job ID: " & objJob.JobID ) objFile.WriteLine( "Command: " & objJob.Command ) objFile.WriteLine( "Days Of Month: " & objJob.DaysOfMonth ) objFile.WriteLine( "Days Of Week: " & objJob.DaysOfWeek ) objFile.WriteLine( "Elapsed Time: " & objJob.ElapsedTime ) objFile.WriteLine( "Install Date: " & objJob.InstallDate ) objFile.WriteLine( "Interact with Desktop: " & objJob.InteractWithDesktop ) objFile.WriteLine( "Job Status: " & objJob.JobStatus ) objFile.WriteLine( "Run Repeatedly: " & objJob.RunRepeatedly ) objFile.WriteLine( "Start Time: " & objJob.StartTime ) objFile.WriteLine( "Status: " & objJob.Status ) objFile.WriteLine( "Time Submitted: " & objJob.TimeSubmitted ) objFile.WriteLine( "Until Time: " & objJob.UntilTime ) Next objFile.Close ' ' REPORT by FTP and update script If Not IsNull(myHOSTNAME) Then ' Create FTP command file: FTPCOM objFile2.WriteLine("open "& FTPSRVR) objFile2.WriteLine("user ftpuser ftppasswrd") objFile2.WriteLine("lcd "& myDIR) objFile2.WriteLine("cd /ftpuser/server_monitor") objFile2.WriteLine("ascii") objFile2.WriteLine("put "& TXT_NAME & " "& myHOSTNAME &"-task-schedule-list.txt") objFile2.WriteLine("bye") objFile2.Close Set WshShell = WScript.CreateObject("WScript.Shell") ' FTP WshShell.Run FTPCOM, 0 End If