Monday, November 9, 2009

Disk Space Checking using VB Script

0 comments
'File Name : DriveSpace.vbs


'Description : Collects the Space information of hard drives from different servers

'Date Created : 04-29-2008

'Author : Arumugam
'

'Dependencies:

'strServerFile - This script depends on a txt file which contains the server names.

'strOutFile - output file location has to be modified as per your requirement

'========================================================================================



t1=time

On error Resume Next



'Get the Script Name

strScript = wscript.ScriptName



'Get the Folder where the script is being executed

strScriptFolder = Replace(wscript.scriptFullName,strScript,"")



'location of the servers.txt file - contains server names

strServersFile = strScriptFolder & "servers.txt"





'Location of the output file to be created.

strOutFile = strScriptFolder & "\Disk_Space_Monitor_Results.txt"



wscript.echo

wscript.echo "Disk Space Monitor"

wscript.echo "******************"

wscript.echo



'Get the login credentials of the user

Wscript.StdOut.Write "Enter your NBD ID :"

strUserID = Wscript.StdIn.ReadLine

Set objPassword = CreateObject("ScriptPW.Password")

Wscript.StdOut.Write "Enter your password (corp domain):"

strPassword = objPassword.GetPassword()

Wscript.Echo

wscript.echo



'Create the outfile on which the Drive space to be written

set objFSO=createobject("scripting.filesystemobject")

set objFSOFile=objFSO.createTextFile(strOutFile)



'Append the domain name with the login id of the user

strUser="CORP\"&strUserID



'Open the text file which contains the server names

set fso = createobject("scripting.filesystemobject")



'Check if servers file is present int he script location

if fso.fileexists(strServersFile) = FALSE then

wscript.echo "Error:servers File not Found"&vbcrlf&strServersFile

set fso = nothing

wscript.echo "Press any key to exit"

Wscript.StdIn.ReadLine

wscript.quit

end if



set objfile= fso.opentextfile(strServersFile)

wscript.echo "Collecting Drive Space details from 62 servers. please wait for 2 mins.."



ALL_SERVERS_FLAG = TRUE



'Read each line (server name) till the End of the file

do until objfile.atendofstream



strserver=objfile.readline



'Call the method getdriveinfo by passing the server name as argument

strResult = getdriveinfo(strserver)



if strResult = "Error" or strResult=""then



objFSOFile.writeline "An error has occurred"

objFSOFile.close

set objFSOFile = Nothing

objFile.close

set objFile = Nothing

set fso = nothing

wscript.quit



elseif instr(1,strResult,"Fine") = 0 then



ALL_SERVERS_FLAG = FALSE

strMessage = strMessage & strResult



end if





loop



if ALL_SERVERS_FLAG = TRUE then

wscript.echo "All servers are Fine"

objFSOFile.writeline "All CS [C: > 1 GB] [D:> 1 GB] [L: > 5 GB]"

objFSOFile.writeline "All DS [C: > 1 GB] [D:> 1 GB] [F: > 5 GB] [L: > 5 GB]"

objFSOFile.writeline "All DAP [D: > 1 GB]"

else



objFSOFile.writeline vbcrlf &" The following servers were identified"

objFSOFile.writeline strMessage

wscript.echo

wscript.echo "Attention!!. Below are less than the threshold"

wscript.echo "**********************************************"

wscript.echo

wscript.echo " Server " & vbtab& "Drive"& vbtab& "Free Space (GB)"

wscript.echo "============" & vbtab& "====="& vbtab& "==============="

wscript.echo strMessage

wscript.echo "Press any key to exit."

wscript.stdin.readline

end if



objFSOFile.close

set objFSOFile = Nothing

objFile.close

set objFile = Nothing

set fso = nothing



wscript.echo "Disk info written in to "&strOutFile





'----------------------------------------------------------------------------------------

'Function : getDriveInfo

'Input : Server Name

'Output : None - (it simply writes the space info of the server in to the outFile

'

'Dependencies:

'It works perfectly for the correct login credentials

'If either of the login credential fails, displays a msg as "Access Denied"

'----------------------------------------------------------------------------------------



public function getDriveInfo(strserver)



on error resume next



strOutput =""



'Assign the input argument to a local variable

strComputer = strserver



'Create required objects which connects to remote server

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")

Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer,"root\cimv2",strUser,strPassword)



if err.number <> 0 then

wscript.echo

wscript.echo "########################################################"

wscript.echo "Error:"&err.description&vbcrlf&"Error Number:"&err.number

wscript.echo "Check if you have given correct login credentials"

wscript.echo "########################################################"

wscript.echo

wscript.echo "Press any key to exit"

wscript.stdin.Readline

getDriveInfo="Error"

exit function

end if



'wscript.echo

'wscript.echo strComputer

'wscript.echo "=========="

Set colDisks = objSWbemServices.ExecQuery("Select * from Win32_LogicalDisk")



ALERT_FLAG = FALSE



'Loop through the collection retrived by colDisks object

For Each objDisk in colDisks

Select Case objDisk.DriveType



'3 represents a Hard Drive

Case 3



'Rounding of to 2 decimal places. Dividing by 1024^3 to have in GB as unit of disk size.

strFreeSpace = Round((objDisk.FreeSpace/(1024*1024*1024)),2)

strTotalSpace = Round((objDisk.Size/(1024*1024*1024)),2)



'Check CS and DS - C drive should be > 1 GB

if instr(1,strComputer,"imr")<> 0 or instr(1,strComputer,"imc") <> 0 then

if objDisk.DeviceID="C:" and cint(strFreeSpace) < 1 then

ALERT_FLAG = TRUE

strOutValue = strOutValue & vbcrlf & strComputer& vbtab& objDisk.DeviceID&vbtab& strFreeSpace

end if

end if



'Check CS G drive should be > 5 GB

if instr(1,strComputer,"imc")<> 0 then

if objDisk.DeviceID="G:" and cint(strFreeSpace) < 5 then

ALERT_FLAG= TRUE

strOutValue = strOutValue & vbcrlf & strComputer& vbtab& objDisk.DeviceID&vbtab& strFreeSpace

end if



if objDisk.DeviceID="I:" and cint(strFreeSpace) < 5 then

ALERT_FLAG= TRUE

strOutValue = strOutValue & vbcrlf & strComputer& vbtab& objDisk.DeviceID&vbtab& strFreeSpace

end if

end if



'Check CS,DS and DAP - F drive should be > 1 GB

if instr(1,strComputer,"imr")<> 0 or instr(1,strComputer,"imc") or instr(1,strComputer,"imd") <> 0 then

if objDisk.DeviceID="D:" and cint(strFreeSpace) < 1 then

ALERT_FLAG= TRUE

strOutValue = strOutValue & vbcrlf & strComputer& vbtab& objDisk.DeviceID&vbtab& strFreeSpace

end if

end if



if instr(1,strComputer,"imr")<> 0 or instr(1,strComputer,"imb") <> 0 then

if objDisk.DeviceID="F:" and cint(strFreeSpace) <= 5 then

ALERT_FLAG= TRUE

strOutValue = strOutValue & vbcrlf & strComputer& vbtab& objDisk.DeviceID&vbtab& strFreeSpace

end if

end if



if instr(1,strComputer,"imc")<> 0 then

if objDisk.DeviceID="L:" and cint(strFreeSpace) < 5 then

ALERT_FLAG= TRUE

strOutValue = strOutValue & vbcrlf & strComputer& vbtab& objDisk.DeviceID&vbtab& strFreeSpace

end if

end if







End Select

Next



if ALERT_FLAG = TRUE then

getDriveInfo=strOutValue

else

getDriveInfo="Fine"

end if



set objSWbemLocator=Nothing

set objSWbemServices=Nothing





End function

Server Status Checking - VB Script

0 comments
'==========================================================================


'NAME : System-UPTIME.vbs *

'AUTHOR: Arumugam
'Date : 12/21/2008 *



'Description: *

'============ *

' Reads a text file of computer names and gathers speicfied *

' performance data on each one at the interval defined And *

' repeats until it reaches the user-defined variable limit *



'Requirements: *

'============= *

' A text file that has 1 computername per line must be saved in *

' the path defined by the sPath variable *

' *

'PLS CHANGE THE FOLLOWING AS PER YOUR NEEDS *

'========================================== *

'Domain = Domain on which servers are present *

'flog = Location of output file *

'strPath = Location of servers.txt file *

'==========================================================================





t1=time





On error resume next



'Constant declarations for File I/O

'===================================

Const ForReading = 1

Const ForWriting = 2

Const ForAppending = 8



' File Path Defintion "Pls change this as per your requirements"

'===================================================================



'Path of output file

flog = "D:\Temp\Scripts\Server-Stat- check\UpTime-Results.txt"



'Path of servers.txt file

strPath = "D:\Temp\Scripts\Server-Stat- check\Servers.txt"



'Domain of the servers

Domain="domain1"



'Get Login Credentials

'=====================

Wscript.StdOut.Write "Please enter your user ID:"

strID = Wscript.StdIn.ReadLine



'Append domainname (eg: domain) infront of userid

strUser =Domain&"\"&strID



Set objPassword = CreateObject("ScriptPW.Password")

Wscript.StdOut.Write "Please enter your domain password:"

strPassword = objPassword.GetPassword()

Wscript.Echo

wscript.echo



'Instantiate File System Object

'==============================

set fs = CreateObject("Scripting.FileSystemObject")

set objlog = fs.createtextfile(flog)





'Check if input file exists

if fs.FileExists(strPath) then



'open the servers.txt file for reading server names

set fsInput = fs.OpenTextFile(strPath,ForReading)

objlog.writeline " Server " & vbtab & vbtab & " Last Boot Time " & vbtab & " Active since ?"

objlog.writeline "==========" & vbtab & vbtab & " =================" & vbtab & " =============="



do until fsInput.AtEndOfStream

strComputer=fsInput.readline

'Instantiate the SWbemLocator if remote server s pingable

if PingTest(strComputer,1,1000)="Pass" then

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")



'Connect to server

Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer,"root\cimv2",strUser,strPassword)





if err.number = -2147024891 then

wscript.echo err.description

wscript.echo "Invalid login. Please check ur login credentials"

wscript.echo

wscript.echo

wscript.echo "Press any key to exit..!"



wscript.stdin.readline

wscript.quit

end if



'Execute

Set colOperatingSystems = objSWbemServices.ExecQuery("Select * from Win32_OperatingSystem")



For Each objOS in colOperatingSystems



dtmBootup = objOS.LastBootUpTime

dtmLastBootupTime =WMIDateStringToDate(dtmBootup)

dtmSystemUptime = DateDiff("h",dtmLastBootUpTime, Now)

objlog.writeline strComputer & vbtab &vbtab & dtmLastBootupTime & vbtab & vbtab & dtmSystemUptime & "Hours"

Next



set colOperatingSystems=nothing

set objSWbemServices = nothing

set objSWbemLocator = nothing



Else



objlog.writeline strComputer & vbtab &vbtab & " Not Pingable "

End if





loop

else

msgbox "No Input file found"



End if



msgbox "Completed. Results at " &flog&vbtab&datediff("s",t1,time)





'==========================================================================

'FUNCTION NAME:WMIDateStringToDate(dtmBootup)

'Description: converts the systemdate string to Date format string

'

'==========================================================================



Function WMIDateStringToDate(dtmBootup)



WMIDateStringToDate = CDate(Mid(dtmBootup, 5, 2) & "/" & _

Mid(dtmBootup, 7, 2) & "/" & Left(dtmBootup, 4) _

& " " & Mid (dtmBootup, 9, 2) & ":" & _

Mid(dtmBootup, 11, 2) & ":" & Mid(dtmBootup, _

13, 2))



End Function







'==========================================================================

'FUNCTION NAME:IsReachable(sComputer, #Pings,TimeOut)

'Description: Attempts to ping each computer name. If successful, Function

' equals true; if ping fails, function equals false.

'==========================================================================

Function PingTest(sComputer, iPings, iTimeOut)

Dim sCommand

Dim oShell

Dim oResult



sCommand="ping -n " & iPings & " -w " & iTimeOut & " " & sComputer



Set oShell = CreateObject("Wscript.Shell")

If iPings = "" Then iPings = 2

If iTimeOut = "" Then iTimeOut = 500

Set oResult = oShell.Exec(sCommand)

Select Case InStr(oResult.StdOut.Readall, "TTL=")

Case 0

PingTest="Fail"

Case Else

PingTest="Pass"



End Select

End Function

Connecting to Database using VB Script

0 comments
Query = "Select count(*) as ab from item"



ConnectionString = "DRIVER={SQL SERVER};SERVER=servername;Database=dbname;User Id=user123;Password=pass123;"



Set DBConnection = CreateObject("ADODB.Connection")

Set DBRows = CreateObject("ADODB.Recordset")





'* Open connection

DBConnection.Open connectionString



if err.number <> 0 then

msgbox "Connection Failed"& vbcrlf & err.description

end if





'* Execute SQL

Set DBRows = DBconnection.Execute(Query)



if err.number<> 0 then

msgbox "Querying Failed"& vbcrlf & err.description

end if



msgbox DBRows("ab")



'While Not DBRows.EOF



'Msgbox DBRows.Fields.Value



'DBrows.MoveNext

'Wend



DBconnection.Close

Set DBRows = Nothing

Set DBconnection = Nothing

Get the Drivers List in a PC - VBS

0 comments
strLog = Replace(Wscript.ScriptFullname,Wscript.Scriptname,"")&"GetDrivers.log"



set FSO = CreateObject("Scripting.Filesystemobject")



set Logs = FSO.createTextFile(strLog)



Const HKEY_LOCAL_MACHINE = &H80000002



strComputer = "."



Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")



strKeyPath = "SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers"

objRegistry.EnumValues HKEY_LOCAL_MACHINE, strKeyPath, arrValueNames, arrValueTypes



For i = 0 to UBound(arrValueNames)

strValueName = arrValueNames(i)

objRegistry.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue

Logs.writeline arrValueNames(i) & " -- " & strValue

Next



Logs.close

set Logs = Nothing

set FSO = Nothing

set objRegistry = Nothing

Monitor the services of a remote server - VBS

0 comments
'************************************************************************************************


'File Name : Services_Checker.vbs

'Description : Connects to a Server and checks if the XXX services are running

'Author : Arumugam
'Date : 09/07/2008

'Version : 1.0

'************************************************************************************************

on error resume next

wscript.echo

wscript.echo vbcrlf & " Services Checker"

wscript.echo "***********************"



logFile=replace(wscript.scriptfullname,wscript.scriptname,"")&"\Services.log"



set FSO = createobject("scripting.filesystemobject")

set objLog = FSO.createtextfile(logfile)



'Get the User ID

Wscript.StdOut.Write "Please enter your user name ( eg: user123):"

strUser = Wscript.StdIn.ReadLine

strUser = "DOMAIN\"&strUser



'Get the Password

Set objPassword = CreateObject("ScriptPW.Password")

Wscript.StdOut.Write "Please enter your password(corp domain) :"

strPassword = objPassword.GetPassword()

Wscript.Echo



if len(struser)<>12 or len(strPassword)<>8 then

msgbox"Check your Login Credentials"

wscript.quit

end if



objLog.writeline "################################################################################"

objLog.writeline "EXECUTION STARTED AT : " & now & " BY : " & strUser & vbcrlf



wscript.echo "Checking  Services on the Servers.Please wait..."&vbclrf



MonitorGAPBEE ("servername")


objLog.writeline "EXECUTION COMPLETED AT : " & now

objLog.writeline "################################################################################"

objLog.close

set objLog = Nothing

set FSO = Nothing



Public Function MonitorGAPBEE(strServer)



on error resume next



objLog.writeline "SERVER NAME:"& strServer

objLog.writeline "========================="



'Server to be checked

strComputer =strServer



'Connect to WMI of the Remote server

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")

Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer,"root\cimv2",strUser,strPassword)



'Check if connection is successful

if err.number <> 0 then

objLog.writeline "Not connected"

objLog.writeline "********************************************"

objLog.writeline "Error occurred" &vbcrlf& err.description

objLog.writeline "********************************************"

objLog.writeline "SCRIPT IS ENDING NOW"

objLog.writeline "################################################################################"

wscript.echo "Error occurred" &vbcrlf& err.description

wscript.quit

else

objLog.writeline "connected"

end if



wscript.echo "*****************************************************"

wscript.echo strComputer & " Connected"

wscript.echo "============="



'Query the WMI for services

Set colDisks = objSWbemServices.ExecQuery("Select * from Win32_Service")



if err.number <> 0 then

objLog.writeline "WMI Query Failed" & vbcrlf& err.description&vbcrlf

else

objLog.writeline "WMI Query - Success"&vbcrlf

end if





'Set the Flag

Service_Flag = TRUE





objLog.writeline "Checking for abc services"

objLog.writeline "========================="&vbcrlf





'Check each of the services

For Each objDisk in colDisks



Service_Name = objDisk.displayname

Service_Status = objDisk.state





'Check the status of abc services

if instr(Service_Name,"abc") <> 0 and Service_Status<>"Running"then



strService = strService&vbcrlf&Service_Name

Service_Flag = FALSE



do until len(Service_Name) = 45

Service_Name = Service_Name&" "



loop



wscript.echo Service_Name & vbtab & Service_Status

objLog.writeline Service_Name & vbtab & Service_Status



elseif instr(Service_Name,"ULZ") <> 0 and Service_Status="Running"then



do until len(Service_Name) = 45

Service_Name = Service_Name&" "



loop

wscript.echo Service_Name & vbtab & Service_Status

objLog.writeline Service_Name & vbtab & Service_Status



end if





Next



'Check the Flag and display the msg



if Service_Flag = TRUE then



objLog.writeline "All the ULZ services are running fine"



else

WSCRIPT.ECHO

WSCRIPT.ECHO "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"

wscript.echo "Please check the following services"& strService

WSCRIPT.ECHO "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"

WSCRIPT.ECHO



objLog.writeline "Following abc services are not running"

objLog.writeline "======================================"&strService



end if







'Destruct the used objects

Set colDisks=nothing

Set objSWbemServices = nothing

Set objSWbemLocator = nothing



objLog.writeline "**************************************************************"



end function



wscript.echo "Completed. Press any key to exit"

strUser = Wscript.StdIn.ReadLine

Checking the Local Groups& Users - VBS

0 comments
set objShell = createobject("wscript.shell")

set objNetwork = createobject("Wscript.network")



ComputerName = objNetwork.computername



set objNetwork = Nothing

set objShell = Nothing



strOutputFile = replace(wscript.scriptfullname,wscript.scriptname,"")&"Logs.txt"





strComputer = "."



'create output file

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objTextFile = objFSO.CreateTextFile(strOutputFile)



objTextFile.writeline "##########################################################"&vbcrlf

objTextFile.writeline "COMPUTER NAME :"& ComputerName&vbcrlf&"Local Group Details "&vbcrlf

objTextFile.writeline "##########################################################"



objTextFile.writeline

'objTextFile.writeline "Group_Name" & vbtab& vbtab & "Configured Users"



Set colGroups = GetObject("WinNT://" & strComputer & "")





if err.number <> 0 then

wscript.echo "Connection Failed"&vbcrlf&err.description

wscript.quit

end if

colGroups.Filter = Array("group")

big=0

For Each objGroup In colGroups



objTextFile.WriteLine "*****************************************************"

objTextFile.WriteLine

Users_Flag = FALSE



do until i=17

tmp=tmp&" "

i=i+1



loop



User_Count=0

For Each objUser in objGroup.Members

GroupUsers = GroupUsers&vbcrlf&tmp&objUser.Name

User_Count = User_Count + 1

Users_Flag = TRUE



Next



GroupName = objGroup.Name



do until len(GroupName) = 65

GroupName=GroupName&" "

Loop







if Users_Flag = TRUE then

objTextFile.WriteLine "GROUP NAME :"& GroupName &vbcrlf&vbcrlf &_

"TOTAL USERS :" & User_Count & vbcrlf&vbcrlf &"USERS CONFIGURED:" & GroupUsers

else



objTextFile.WriteLine "GROUP NAME :"& GroupName &vbcrlf&vbcrlf &_

"TOTAL USERS :"& User_Count &vbcrlf&vbcrlf &"USERS CONFIGURED:" &"NONE"

end if



objTextFile.WriteLine





Next



objTextFile.WriteLine "*****************************************************"



objTextFile.Close

msgbox "done"

send mail using vbs

0 comments
'************************************************************************************************

'Function Name : SendMail(strFile)

'Purpose : To send a mail with an attachment which is passed as input value to this fn

'Input : File to be attached in the mail

'************************************************************************************************



Public Function SendMail(strFile)



On error Resume Next



'Get the Email ID from the user

strEmailID = InputBox ("Please enter your Email ID:")



'Confirm if the Email id is correct

strOption = msgbox ("Your ID :"&strEmailID,3,"Confirm Mail ID")



'Send mail If it is a correct email ID

if strOption = 6 then



Set objMessage = CreateObject("CDO.Message")



objMessage.Subject = "Report"

objMessage.TextBody = "Attached the Report generated on " & date





'Sender & receiver Email IDs

'===========================

objMessage.From = strEmailID

objMessage.To = strEmailID



'Set the Mail configurations

objMessage.Configuration.Fields.Item _

("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

objMessage.Configuration.Fields.Item _

("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.example.com"
objMessage.Configuration.Fields.Item _

("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1



' Note : Change XXXXXX with your userid
'======================================



objMessage.Configuration.Fields.Item _

("http://schemas.microsoft.com/cdo/configuration/sendusername") = strUser



'Note: Give the corp password - used for SMTP server authentication

'===================================================================

objMessage.Configuration.Fields.Item _

("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPassword

objMessage.Configuration.Fields.Item _

("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

objMessage.Configuration.Fields.Item _

("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False



objMessage.Configuration.Fields.Item _

("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60

objMessage.Configuration.Fields.Update

objMessage.Send



if err.number = 0 then

Msgbox "Pulls report is successfully Sent"

else

msgbox "Report is Failed" & vbcrlf& err.description

end if

else

SendMail

end if



End Function



'################## END OF THE SCRIPT ####################################################################################

Wednesday, November 4, 2009

About Me

0 comments
Hi,

Thanks for visiting my page. I feel happy to let you know about myself who is called by the name "Arumugam" @ "Aru"(Call out Name) , a software professional living in Chennai - tamilnadu-India.

I was born in KovilPatti near tuticorin district and i am amazed to see this world since 26 years. I was grown up (am not tallest anyway) in coimbatore where i was groomed,matured and learnt to live with any challenges. Graduated from GCE Tirunelveli from Majestic Mechanical Engg and worked for a compressor Manufacturing company at coimbatore for an year. Since then, i changed the gear to turn up in IT Sector and got relocated to Infosys as Software Engineer.
Have been working at infy for 3.5 years (till date - Nov 4 2009) and looking out for sharing information and knowledge with others which brought me up here to write up this.

Eagerly looking forward to have more buddies to spread up my wings on this blogspot there by making this globe better place to live in.

Happy blogging..

Regards,
Aru