Что нового

Мониторинг размера файла с отправкой на почту

TOSTER

Новичок
Сообщения
4
Репутация
0
AutoIt: 3.
Версия: 1.0

Категория: Администрирование, Автоматизация

Просьба сильно не пинать.
Создавал для мониторинга файла базы.
Приветствуются предложения по оптимизации.

Описание:
Мониторинг размера файла с отправкой на почту

Код/Пример Конфигуратора:
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Restart.au3>
#include <File.au3>
$File=@ScriptDir &'\'&'config.ini'
$r1 = FileReadline($File,1)
$r2 = FileReadline($File,2)
$r3 = FileReadline($File,3)
$r4 = FileReadline($File,4)
$r5 = FileReadline($File,5)
$r6 = FileReadline($File,6)
$r7 = FileReadline($File,7)


$Configurator = GUICreate("Configurator", 408, 433, 192, 124)
$Input1 = GUICtrlCreateInput($r1, 24, 40, 289, 21)
$Button1 = GUICtrlCreateButton("...", 312, 38, 33, 25)
$Label1 = GUICtrlCreateLabel("Путь к файлу", 24, 16, 117, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Предупреждение если размер файла больше", 24, 72, 301, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput($r2, 24, 96, 49, 28)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("МБ", 72, 98, 30, 24)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("Адрес почты с которого будет отправляться предупреждение", 24, 128, 374, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Input3 = GUICtrlCreateInput($r3, 24, 152, 217, 21)
$Label5 = GUICtrlCreateLabel("SMTP сервер", 24, 184, 84, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Input4 = GUICtrlCreateInput($r4, 24, 208, 217, 21)
$Label6 = GUICtrlCreateLabel("Адрес почты куда будет отправляться предупреждение", 24, 328, 336, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Input5 = GUICtrlCreateInput($r5, 24, 344, 217, 21)
$Label7 = GUICtrlCreateLabel("Имя пользователя", 24, 232, 116, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Input6 = GUICtrlCreateInput($r6, 24, 256, 217, 21)
$Label8 = GUICtrlCreateLabel("Пароль", 24, 280, 56, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Input7 = GUICtrlCreateInput($r7, 24, 304, 217, 21)
$Button2 = GUICtrlCreateButton("Сохранить", 48, 376, 145, 41)
$Button3 = GUICtrlCreateButton("Закрыть", 208, 376, 129, 41)
GUISetState(@SW_SHOW)


While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
	$var = FileOpenDialog('Открыть', "c:\", "File (*.*)", 1 + 4)

If @error Then
    MsgBox(4096, "", "Не выбрано ни одного файла")
Else
    $var = StringReplace($var, "|", @CRLF)
    MsgBox(4096, "", "Вы выбрали " & $var)
GUICtrlSetData($Input1,$var)

EndIf
		Case $Button2
 FileClose($File)
 FileDelete(@ScriptDir &'\'&'config.ini')
		$rc=GUICtrlRead($Input1)
		$rc1=GUICtrlRead($Input2)
        $rc2=GUICtrlRead($Input3)
        $rc3=GUICtrlRead($Input4)
        $rc4=GUICtrlRead($Input5)
        $rc5=GUICtrlRead($Input6)
        $rc6=GUICtrlRead($Input7)
		FileWrite($File,$rc& @CRLF)
		FileWrite($File,$rc1& @CRLF)
		FileWrite($File,$rc2& @CRLF)
		FileWrite($File,$rc3& @CRLF)
		FileWrite($File,$rc4& @CRLF)
		FileWrite($File,$rc5& @CRLF)
		FileWrite($File,$rc6& @CRLF)
		_ScriptRestart()
		Case $Button3
			Exit
 EndSwitch
WEnd

Код/Пример Мониторинга:
Код:
#include <File.au3>
$vFile=@ScriptDir &'\'&'config.ini'
$vr1 = FileReadline($vFile,1)
$vr2 = FileReadline($vFile,2)
$vr3 = FileReadline($vFile,3)
$vr4 = FileReadline($vFile,4)
$vr5 = FileReadline($vFile,5)
$vr6 = FileReadline($vFile,6)
$vr7 = FileReadline($vFile,7)
$SmtpServer = ""&$vr4&""            ; Адрес СМТП сервера
$FromName = "Мониторинг размера базы"                      ; Имя Отправителя
$FromAddress = ""&$vr3&""  ; От кого отправляем
$ToAddress = ""&$vr5&""    ; Кому отправляем
$Subject = "Размер базы увеличен"&" "&@ComputerName                   ; Тема письма
$AttachFiles = ""                       ; Прикрепить вложение
$CcAddress = ""       ; address for cc - leave blank if not needed
$BccAddress = ""     ; address for bcc - leave blank if not needed
$Importance = "Normal"                  ; Send message priority: "High", "Normal", "Low"
$Username = ""&$vr6&""                   ; Логин
$Password = ""&$vr7&""                 ; Пароль
$IPPort = 25                            ; Порт
;~ $ssl = 1
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25);, $ssl = 0)
    Local $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    Local $i_Error = 0
    Local $i_Error_desciption = ""
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject
    If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
        $objEmail.HTMLBody = $as_Body
    Else
        $objEmail.Textbody = $as_Body & @CRLF
    EndIf
    If $s_AttachFiles <> "" Then
        Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
        For $x = 1 To $S_Files2Attach[0]
            $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
            If FileExists($S_Files2Attach[$x]) Then
                ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF)
                $objEmail.AddAttachment($S_Files2Attach[$x])
            Else
                ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
                SetError(1)
                Return 0
            EndIf
        Next
    EndIf
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
    If Number($IPPort) = 0 then $IPPort = 25
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
    If $s_Username <> "" Then
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
    $objEmail.Configuration.Fields.Update
    Switch $s_Importance
        Case "High"
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
        Case "Normal"
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"
        Case "Low"
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"
    EndSwitch
    $objEmail.Fields.Update
    $objEmail.Send
    If @error Then
        SetError(2)
        Return $oMyRet[1]
    EndIf
    $objEmail=""
EndFunc
Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    $oMyRet[0] = $HexNumber
    $oMyRet[1] = StringStripWS($oMyError.description, 3)
    ConsoleWrite("### COM Error !  Number: " & $HexNumber & "   ScriptLine: " & $oMyError.scriptline & "   Description:" & $oMyRet[1] & @LF)
    SetError(1)
    Return
EndFunc

HotKeySet("{F1}", "Terminate")  ;Горячая клавиша выхода
_FileCreate("C:\UCS\MonitB\Size.txt") ;Создает файл в котором храниться нормальный размер базы
$file='C:\UCS\MonitB\Size.txt'
$iSize = FileGetSize($vr1) ; Получения размера файла базы
$SizeMb=$iSize/'1048576' ; Размер в мегабайтах
FileWrite($File,$SizeMb& @CRLF) ; Запись размера в файл
Func Terminate() ; по нажатию клавиши F1
    MsgBox(0, 'Внимание!', 'Программа будет закрыта')
	Exit 0 ; завершение работы
FileDelete($file) ;Удаление файла с размером
EndFunc
While 1
$r1 = FileReadline($File,1)
$Size = FileGetSize($vr1)
$SizeMb1=$Size/'1048576'
If $SizeMb1 > $r1+$vr2 Then ; Если файл на * мегабайт увеличен от нормального размера, то
_INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, "Database size increased"&" "&@ComputerName&"  "&"Normal size:"&" "&$r1&" "&"Size presently:"&" "&$SizeMb1, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort);, $ssl)
FileDelete($file)
 Exit
EndIf
WEnd



Файл: Файл


Источник: autoit-script.ru
Автор(ы):
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Приветствуются предложения по оптимизации.
Ваш конфигуратор пишет настройки в ini файл ,хотя файл таковым не является. Для таких целей ini файлы и созданы и работать с ними очень удобно и наглядно, посмотрите функции
Код:
Iniread()
IniWrite()
 
Автор
T

TOSTER

Новичок
Сообщения
4
Репутация
0
ra4o сказал(а):
Приветствуются предложения по оптимизации.
Ваш конфигуратор пишет настройки в ini файл ,хотя файл таковым не является. Для таких целей ini файлы и созданы и работать с ними очень удобно и наглядно, посмотрите функции
Код:
Iniread()
IniWrite()
Спасибо!
Я просто хотел выделить сам файл таким способом
 
Верх