Уважаемые гуру и продвинутые пользователи, прошу помочь в поиске ошибке при выполнении скрипта. Ошибка следующая: error array variable has incorrect number of subscripts or subscript dimension range exceeded, Line 18024 (File "F:\icmp_mash_2.0"): Прошу простить за грубое написание скрипта.. я начинающий
Заранне благодорю вас за помощь!
Заранне благодорю вас за помощь!
Код:
;#RequireAdmin
#include <GUIConstantsEx.au3>
#include <GUIConstants.au3>
#include <Date.au3>
#include <TreeViewConstants.au3>
#NoTrayIcon
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <INet.au3>
#include <Word.au3>
#include <GUIConstants.au3>
#include <File.au3>
;#Include <Log.au3>
if(1+1=2) Then; variable++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Переменные
$name = @ComputerName
$DT = @MDAY&'-'&@MON&'-'&@YEAR& ' ' &@HOUR& ':'&@MIN& ':'&@SEC& ' :'
$sys_time = @HOUR&@MIN
$POFF = ' POWER OFF | '
$PON = ' POWER ON'
$DOWN = ' LINK DOWN | '
$UP = ' LINK UP'
$ip_res = "10.1.1.1"; Server1
$ip_res2 = "10.1.1.2"; Server2
$hour = "00"
$min = "05"
$timeset = '0010'
EndIf
if(1+1=2) Then; dir+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Каталоги
$D00 = (@ScriptDir & '\SYS\')
$D01 = (@ScriptDir & '\Log ICMP\')
$D02 = (@ScriptDir & '\')
$D03 = '\\10.11.13.12\Logs'
DirCreate($D00)
DirCreate($D01)
EndIf
if(1+1=2) Then; file+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Файлы
$mash = $D00&'mash.txt'
$mash_report = $D00&'mash_report.txt'
$next = $D00&'next.txt'
$startup = $D00&'startup.txt'
$log = $D01&$name& '_log_icmp_mash.txt'
$log1 = $D01&'log1_mash.txt'
$log2 = $D01&'log2_next.txt'
$IP = $D02&'IP.txt'
$move = $D00&'move.txt'
EndIf
if(1+1=2) Then; read+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Чтение и запись
$read_next = FileReadLine($next,1)
$read_mash = FileReadLine($mash,1)
$read_mash_report = FileReadLine($mash_report,1)
$IP_read_host_A = FileReadLine($IP,1)
$IP_read_host_B = FileReadLine($IP,2)
EndIf
if(1+1=2) Then; time+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Ожидание времени начала
$sec = '30'
$i = 0
Do
if @SEC <> $sec then Sleep(500)
$i = $i + 1
Until @SEC = $sec
EndIf
if(1+1=2) Then; time control+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Файлы контроля времени
;---------------------------------Записываем ситемное время в mash для тригера--------
$file_a = FileOpen($mash, 2)
FileWriteLine($file_a,$sys_time)
FileClose($file_a)
;---------------------------------Записываем ситемное время в mash_report для отчета--------
$file_r = FileOpen($mash_report, 2)
FileWriteLine($file_r,$DT)
FileClose($file_r)
FileClose($log)
EndIf
if(1+1=2) Then; power check triger 5min+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Проверка на отключение по питанию
if $read_mash = $sys_time or $read_mash = $sys_time-1 or $read_mash = $sys_time-2 or $read_mash = $sys_time-3 or $read_mash = $sys_time-4 or $read_mash = $sys_time-5 or $read_mash = 0059 or $read_mash = 0159 or $read_mash = 0259 or $read_mash = 0359 or $read_mash = 0459 or $read_mash = 0559 or $read_mash = 0659 or $read_mash = 0759 or $read_mash = 0859 or $read_mash = 0959 or $read_mash = 1059 or $read_mash = 1159 or $read_mash = 1259 or $read_mash = 1359 or $read_mash = 1459 or $read_mash = 1559 or $read_mash = 1659 or $read_mash = 1759 or $read_mash = 1859 or $read_mash = 1959 or $read_mash = 2059 or $read_mash = 2159 or $read_mash = 2259 or $read_mash = 2359 Then; Тригер- Системное время равно времени в mash? если да то
;MsgBox(6,'','ok ' & $DT); msg
Else ; Если нет то---------------------------
If FileExists($startup) Then;----------------------------- Есть стартовый файл? если есть то произвести расчеты
FileWriteLine($log1,$read_mash_report&$POFF&$DT&$PON); ----------------Запись во временный файл время отключения из файла mash_report, системное время и событие
$RER = FileReadLine($log1,1); -----------------------------читаем из временного файла строку для обработки тримером и последущего вычесления общего времени простоя
; -----------------------Тримирование и вычисление
$str = $RER
$str = StringReplace($str, " : POWER OFF | ", ";")
$str = StringReplace($str, " : POWER ON | ", ";")
$str = StringSplit($str, ";")
$date_start = StringSplit($str[1], " ")
$time_start = $date_start[2]
$date_start = StringSplit($date_start[1], "-")
$date_start = $date_start[3] & "/" & $date_start[2] & "/" & $date_start[1]
$date_stop = StringSplit($str[2], " ")
$time_stop = $date_stop[2]
$date_stop = StringSplit($date_stop[1], "-")
$date_stop = $date_stop[3] & "/" & $date_stop[2] & "/" & $date_stop[1]
$diff = _DateDiff('n', $date_start & " " & $time_start, $date_stop & " " & $time_stop)
;-------------------------------------------------
FileWriteLine($log,$name&' | '&$RER&' | Disconnected by power = '&$diff&" min"); -------------------------Запись информации в лог файл
FileWriteLine($log,'------------------------------------------------------------------------------------------------------------------------------------')
Else; Если нет то создать файл startup вписать время активации программы+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
If Not _FileCreate($startup) Then
MsgBox(4096,"Error", " Error Creating/Resetting log. error:" & @error)
EndIf
$NS = ' Running the program *****************'
FileWriteLine($log,$name&' | '&$DT&$NS); -------------------------Запись информации в лог файл
FileWriteLine($log,'------------------------------------------------------------------------------------------------------------------------------------')
EndIf
EndIf
FileDelete($log1); Удаление временного файла
EndIf
if(1+1=2) Then; power check triger 5min+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Проверка на отсутствие связи
if FileExists($IP) Then;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Проверка доступности файла с IP адресами ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Если доступен то
;MsgBox(6,'Питание','ip ok ' & $DT); msg
if Ping($IP_read_host_A) Then;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Проверка доступности хоста А++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Если доступен то
;MsgBox(6,'Питание','host a ok ' & $DT); msg
if FileExists($next) Then;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Проверка наличия файла NEXT+++++++++++++++++++++++++++++++++++++++++++++++++++++++++Если файл есть то
;MsgBox(6,'Питание','$next ok000000000000000 ' & $DT); msg
FileWriteLine($log2,$read_next&$DOWN&$DT&$UP); ----------------Запись во временный файл время отключения из файла mash_report, системное время и событие
$ROR = FileReadLine($log2,1); -----------------------------читаем из временного файла строку для обработки тримером и последущего вычесления общего времени простоя
; -----------------------Тримирование и вычисление
$st = $ROR
$st = StringReplace($st, " : LINK DOWN | ", ";")
$st = StringReplace($st, " : LINK UP | ", ";")
$st = StringSplit($st, ";")
$date_star = StringSplit($st[1], " ")
$time_star = $date_star[2]
$date_star = StringSplit($date_star[1], "-")
$date_star = $date_star[3] & "/" & $date_star[2] & "/" & $date_star[1]
$date_sto = StringSplit($st[2], " ")
$time_sto = $date_sto[2]
$date_sto = StringSplit($date_sto[1], "-")
$date_sto = $date_sto[3] & "/" & $date_sto[2] & "/" & $date_sto[1]
$dif = _DateDiff('n', $date_star & " " & $time_star, $date_sto & " " & $time_sto)
;-------------------------------------------------
FileWriteLine($log,$name&' | '&$ROR&' | Jack of communication = '&$dif&" min"); -------------------------Запись информации в лог файл
FileWriteLine($log,'------------------------------------------------------------------------------------------------------------------------------------')
FileDelete($log2); Удаление временного файла
FileDelete($next); Удаление файла NEXT
Else
;MsgBox(6,'Питание','$next no ' & $DT); msg
EndIf
Else;++++++++++++++++++Если хост А не доступен то
if Ping($IP_read_host_B) Then;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Проверка доступности хоста В++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Если доступен то
;MsgBox(6,'Питание','host B ok ' & $DT); msg
if FileExists($next) Then
FileWriteLine($log2,$read_next&$DOWN&$DT&$UP); ----------------Запись во временный файл время отключения из файла mash_report, системное время и событие
$ROR = FileReadLine($log2,1); -----------------------------читаем из временного файла строку для обработки тримером и последущего вычесления общего времени простоя
; -----------------------Тримирование и вычисление
$str = $ROR
$str = StringReplace($str, " : LINK DOWN | ", ";")
$str = StringReplace($str, " : LINK UP | ", ";")
$str = StringSplit($str, ";")
$date_start = StringSplit($str[1], " ")
$time_start = $date_start[2]
$date_start = StringSplit($date_start[1], "-")
$date_start = $date_start[3] & "/" & $date_start[2] & "/" & $date_start[1]
$date_stop = StringSplit($str[2], " ")
$time_stop = $date_stop[2]
$date_stop = StringSplit($date_stop[1], "-")
$date_stop = $date_stop[3] & "/" & $date_stop[2] & "/" & $date_stop[1]
$diff = _DateDiff('n', $date_start & " " & $time_start, $date_stop & " " & $time_stop)
;-------------------------------------------------
FileWriteLine($log,$name&' | '&$ROR&' | Jack of communication = '&$diff&" min"); -------------------------Запись информации в лог файл
FileWriteLine($log,'------------------------------------------------------------------------------------------------------------------------------------')
FileDelete($log2); Удаление временного файла
FileDelete($next); Удаление временного файла
Else
;MsgBox(6,'Питание','$next no ' & $DT); msg
EndIf
Else;++++++++++++++++++Если хост В не доступен то
if FileExists($next) Then
Else;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Если нет файла next то ++++++++++
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Создать файл next+++++++++++++++++++++++++++++++++++++++++++
$file_l = FileOpen($next, 2)
FileWriteLine($file_l,$read_mash_report )
FileClose($file_l)
;MsgBox(6,'Питание','create $next ' & $DT); msg
EndIf
EndIf
EndIf
Else;++++++++++++++++++Если файл с IP адресами не доступен то
FileWriteLine($log,$name&' | '&$DT&" | No file with ip addresses !!! I'll create the file and use the built-in addresses - "&$ip_res); -------------------------Запись информации в лог файл
FileWriteLine($log,'------------------------------------------------------------------------------------------------------------------------------------')
$file_cr = FileOpen($IP, 2)
FileWriteLine($file_cr,$ip_res& @CRLF& $ip_res2)
FileClose($file_cr)
EndIf
EndIf
if(1+1=2) Then; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Копирование логов и перезапуск
;if @HOUR&@MIN <> $timeset Then
;FileDelete($move)
;EndIf
;if FileExists($move) Then
;Else
;if @HOUR&@MIN <> $hour&$min Then
;If FileExists($log) Then
;FileMove($log,$D02)
;$file_m = FileOpen($move, 2)
;FileWriteLine($file_m,$sys_time)
;FileClose($file_m)
;EndIf
;EndIf
;EndIf
$sec = '35'
$i = 0
Do
if @SEC <> $sec then Sleep(500)
$i = $i + 1
Until @SEC = $sec
Run('icmp_mash_2.0.exe')
Exit
EndIf