DyadyaGenya
Знающий
- Сообщения
- 300
- Репутация
- 10
Доброго времени суток. Если только запускать пинг на перечень адресов, и вывести отчет по отсутствующим адресам, то это вроде как легко. Но вот запустить несколько пингов подряд на один адрес для подстраховки, вдруг был маленький случайный сбой, у меня получается кривовато. По идее можно было бы решить вопрос рекурсией, но не могу придумать как это сделать:
На всякий случай список адресов пишется в формате: адрес|имя хоста
Код:
Global Const $CSVFILE = @ScriptDir & '\spisok_host.txt'
_ProverPing()
Func _ProverPing()
Local $res = _FileReadToArray($CSVFILE, $arrContent)
If $res = 1 Then
For $i = 1 To $arrContent[0]
$arrLine = StringSplit($arrContent[$i], $DELIM)
If IsArray($arrLine) And $arrLine[0]<>0 Then
Local $input = $arrLine[1] & "|" & $arrLine[2]
_ArrayAdd($aPing, $input)
Else
MsgBox(48, "", "Ошибка в разбитии линии!")
EndIf
Next
Else
MsgBox(48, "", "Ошибка открытия файла!")
EndIf
;_ArrayDisplay($aPing)
EndFunc
_PingKomp()
Func _PingKomp()
Local $hFile = FileOpen(@ScriptDir & "\Отчет по прохождению пингов.log", 1) ; Открывает лог-файл в режиме записи.
For $i = 0 to UBound($aPing)-1
Ping($aPing[$i][0], 400)
If Not @error Then ; также возможно: If @error = 0 Then ...
ConsoleWrite($aPing[$i][0] & " - " & $aPing[$i][1] & " хост онлайн" & @CR)
Ping($aPing[$i][0], 400)
If Not @error Then ConsoleWrite($aPing[$i][0] & " - " & $aPing[$i][1] & " хост онлайн" & @CR)
Ping($aPing[$i][0], 400)
If Not @error Then ConsoleWrite($aPing[$i][0] & " - " & $aPing[$i][1] & " хост онлайн" & @CR)
Ping($aPing[$i][0], 400)
If Not @error Then ConsoleWrite($aPing[$i][0] & " - " & $aPing[$i][1] & " хост онлайн" & @CR)
Else
_FileWriteLog($hFile, $aPing[$i][0] & " - " & $aPing[$i][1] & " не доступен") ; Записывает в лог-файл передавая дескриптор возвращённый функцией FileOpen.
Ping($aPing[$i][0], 400)
If @error Then Ping($aPing[$i][0], 400);_FileWriteLog($hFile, $aPing[$i][0] & " - " & $aPing[$i][1] & " не доступен")
If @error Then Ping($aPing[$i][0], 400) ;_FileWriteLog($hFile, $aPing[$i][0] & " - " & $aPing[$i][1] & " не доступен")
If @error Then _FileWriteLog($hFile, $aPing[$i][0] & " - " & $aPing[$i][1] & " не доступен")
EndIf
Next
_FileWriteLog($hFile, "----------------------------")
FileClose($hFile) ; Закрывает дескриптор, освобождая файл.
EndFunc
На всякий случай список адресов пишется в формате: адрес|имя хоста