Search the Community
Showing results for tags 'fileserver'.
-
Hello, I'm new here and new to AutoIT. This is an amazing tool and inspiring contributions from the members. I would appreciate some help since I have little experience. We are looking for a script to run through a large file servers and build an HTML report detailing files, their age (more than a year), last access, and the person having full permission access... Thank you....
-
Hello, fellows. I recently gave fingerbirth to a script that reports out the current files, and users opening those files currently. Also provides a filter for strings/extensions. Suggestions and improvements are welcome. #cs ---------------------------Script Start------------------------------------- | Author: DavidLago (Hellfrost) | Script Function: Reports out a logfile containing openfiles within a (file)server, configured under an ini file #ce ---------------------------------------------------------------------------- ;---------------------------------------------------------------INCLUDES-------------------------------------------------------------------------------- #include <Process.au3> #include <GuiConstantsEx.au3> #include <WindowsConstants.au3> #include <array.au3> #include <Date.au3> ;------------------------------------------------------------EXPORT-FOLDER-------------------------------------------------------------------------------- If Not FileExists(@ScriptDir & "\Export") Then DirCreate(@ScriptDir & "\Export") EndIf ;------------------------------------------------------------ WHILE LOOP -------------------------------------------------------------------------------- Global $iNow = _NowCalc() Global $TimeOut = False While $TimeOut = False ;---------------------------------------------------------VARIABLES----------------------------------------------------------------------------------- Global $Date = @MON & "-" & @MDAY & "-" & @YEAR Global $Hour = @HOUR & "'" & @MIN & "''" Global $FullDate = $Date & "_" & $Hour Global $ReportDir = @ScriptDir & "\Export\" ;----------------------------------------------------------INI_READ----------------------------------------------------------------------------------- Global $MailFrom = IniRead("Config.ini", "Mail", "MailFrom", "Script_OpenFiles@AutoITScripting.net") Global $Mailto = IniRead("Config.ini", "Mail", "Mailto", "") Global $MailSubj = IniRead("Config.ini", "Mail", "MailSubj", "") Global $MailBody = IniRead("Config.ini", "Mail", "MailBody", "") Global $TimeFreq = IniRead("Config.ini", "Time", "Frequency", "60") Global $TimeDur = IniRead("Config.ini", "Time", "Duration", "24") Global $ReportOut = $FullDate & "_" & IniRead("Config.ini", "ReportOut", "ReportOut", "Report") Global $FilterExt = IniRead("Config.ini", "FilterExt", "FilterExt", "N") Global $FileExt = '"' & IniRead("Config.ini", "FileExt", "FileExt", "exe") & '"' Global $FormatOut = IniRead("Config.ini", "FormatOut", "FormatOut", "Table") ;-------------------------------------------------------MATH VARIABLES---------------------------------------------------------------------------------- Global $CommandCombo, $CommandFinal, $iDiff, $FreqDurMath $iTimeFreq = $TimeFreq * 60000 ; Turn to miliseconds $iTimeDur = $TimeDur ; Turn to minutes $FreqDurMath = ($TimeDur * 60) / $TimeFreq ;-------------------------------------------------------ERROR-TREATMENT--------------------------------------------------------------------------------- If $iTimeFreq < 900000 Then MsgBox(4112, "Error", 'The parameter "FREQUENCY" at the config.ini file is set to a number below 15. 15 minutes is the minumum threshold', 5) $MailBody = 'The Script "' & @ScriptName & '" is reporting the following error: The parameter "FREQUENCY" at the config.ini file is set to a number below 15. ' & @CRLF & '15 minutes is the minumum threshold' SendMail($MailBody) Exit EndIf If $FreqDurMath < 1 Then $MailBody = 'The Script "' & @ScriptName & '" The parameters "FREQUENCY" and "DURATION" at the config.ini file is set to a number which prevents it to loop more than once. Do you want to continue?' SendMail($MailBody) If MsgBox(4116, "Error", 'The parameters "FREQUENCY" and "DURATION" at the config.ini file is set to a number which prevents it to loop more than once. Do you want to continue?', 10) = 7 Then Exit EndIf ;----------------------------------------------------------COMMAND BREED I------------------------------------------------------------------------------- Global $QueryCommand = "/query " & "/FO " & $FormatOut & " /V " & "/nh " Global $FindCommand = "| find /I " & $FileExt Global $ExportCommand = " > " & '"' & $ReportDir & $ReportOut & ".log" & '"' If $FilterExt = "Y" Then $CommandCombo = $QueryCommand & $FindCommand & $ExportCommand Else $CommandCombo = $QueryCommand & $ExportCommand EndIf $CommandFinal = "openfiles " & $CommandCombo ;-------------------------------------------------------------OPTIONS----------------------------------------------------------------------------------- If $FilterExt = "Y" Then If $FileExt <> "" Then TrayTip("Message from the " & @ScriptName & " Script: ", 'The command "' & $CommandFinal & '" is running in this server. Options enabled are the following:' & @CRLF & @CRLF & "Filter: " & '"' & $FilterExt & '"' & @CRLF & "Ext/String: " & $FileExt & @CRLF, 1, 1) Else TrayTip("Message from the " & @ScriptName & " Script: ", 'The command "' & $CommandFinal & '" is running in this server.', 1, 1) EndIf EndIf ;--------MAIN COMMAND-----------------------------------################## _RunDOS($CommandFinal) ;--------MAIN COMMAND-----------------------------------################## $iDiff = _DateDiff('h', $iNow, _NowCalc()) Sleep($iTimeFreq) ; <-Frequency If $iDiff > $iTimeDur Then ; <-- Is time through? $TimeOut = True $MailBody = 'The script "' & @ScriptName & '", which was running at the server "' & @ComputerName & '", generated the requested logs successfully. Please, contact your Domain administrator to claim them' SendMail($MailBody) EndIf WEnd ;==> While from line 18 ;------------------------Function to send e-mail-------------------------------------------------------------------------------------------------------------- Func SendMail($MailBody) $objEmail = ObjCreate("CDO.Message") $objEmail.From = $MailFrom $objEmail.To = $Mailto $objEmail.Subject = $MailSubj $objEmail.Textbody = $MailBody $objEmail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 $objEmail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _ "mail.domain.net" ; <----------------------------------------- Insert your mailserver here $objEmail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 $objEmail.Configuration.Fields.Update $objEmail.Send EndFunc ;==>SendMail Contents of the config.ini file: #--------------------------------------------------------------------# # Config. ini # #--------------------------------------------------------------------# #--------------------------------------------------------------------# # OPENFILES REPORT: # Reports out a logfile containing openfiles within a server #--------------------------------------------------------------------# [Time] # What frequency? (Minutes [minimum: 15 min) / How long? (Hours [Minimum: 1H) Frequency = 15 Duration = 1 [FilterExt] # GREP Extension/String? ( Y, N) FilterExt = Y [FileExt] # What's the extension or string combo to be matched? (.exe; .doc; .csv; Solidworks; Report, etc. (default: line commented by #) FileExt = doc [ReportOut] # LogFile Sufix ReportOut = Report [FormatOut] # LogFile Format: CSV or Table. (default: table) FormatOut = CSV [Mail] MailFrom = Script_OpenFiles@AutoITScripts.com Mailto = hellfrost@hellfrost.info MailSubj = OpenFiles Alert Example MailBody = This message is an alert. It might be useful for a Domain admin someday.