Что нового

[Автоматизация] Парсинг сайта УТМ для ЕГАИС

All2khoff

Продвинутый
Сообщения
347
Репутация
65
Добрый день уважаемые форумчане.
Опишу ситуацию и задачу которую я сам себе поставил.
Работаю в организации продающей алкоголь в нескольких торговых точках.
На каждой торговой точке стоит "сервер" УТМ на linux ubuntu, ключ используемый для подписи документов JaCarta.
Периодически возникает проблема с этим ключем, он выпадает в ошибку "Проблема RSA"(как только ключ отвалился алкоголь не продать) или перестает отправлять чеки(можно не отправлять 3 суток потом перестает продавать алкоголь), состояние ключа или статус чеков можно отследить на "сайте" генерируемый этим сервером и доступному по адресу http://ip-сервера:8080.
Решение в принципе простое, сервер перезагрузить и система начинает работать.

Собственно я накропал скрипт, отлавливающий со страницы статус ошибки или что чеки не отправлялись.

Код:
#Region 																			;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=..\..\..\Program Files (x86)\AutoIt3\Icons\MyAutoIt3_Green.ico
#AutoIt3Wrapper_Res_Description=Диагностика состояние RSA и проверка даты отправки чеков. Рекомендуется чтобы в ОС был установлен IE11.
#AutoIt3Wrapper_Res_Fileversion=0.6
#AutoIt3Wrapper_Res_Language=1049
#EndRegion 																			;**** Directives created by AutoIt3Wrapper_GUI ****

#include <GUIConstantsEx.au3>
#include <Constants.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#include <WinAPIEx.au3>
#include <Date.au3>

Global $hDesktop = DllCall("User32.dll", "int", "OpenDesktop", "str", "Default", "int", 0, "int", 0, "int", 0x100) ;переменная для определения не заблокирован ли компьютер

While 1 																			;Начало бесконечного цикла провери серверов УТМ
	_ieclose()																		;Закрыть все процессы IE
	Global $iputm = IniReadSection("UTM.ini", "UTM IP") 							;Получить данные блока "UTM IP" из ini файла
	Global $UTMlogin = IniReadSection("UTM.ini", "UTM login")						;Получить список логинов для УТМ
	Global $UTMpassword = IniReadSection("UTM.ini", "UTM passwords")				;Получить список паролей УТМ
	_utmtest()																		;Основная функция првоерки серверов УТМ
	Global $iputm = 0																;Очистка переменных для обновления настроек в случае редактирования файла ini
	Global $UTMlogin = 0
	Global $UTMpassword = 0
WEnd

Func _utmtest()																		;Проверка состояния сервера УТМ
	For $j = 1 To $iputm[0][0]														;Проходим с первой до последней строки файла ini и выбираем оттуда нужные данные
		Local $oIE, $sHtml, $sUrl ="http://192.168."&$iputm[$j][1]&":8080/"			;URL построенные на основе переменных из файла ini
		$oIE = _IECreate($sUrl,0,0)													;Создаем скрытую страницу с выбранным адресом
		_IELoadWait($oIE)															;Дожидаемся полной загрузки страницы
		$sHtml = _IEBodyReadHTML($oIE)												;Возвращает код HTML-документа заключённый в тегах <body>
		For $x = 3 to 30															;Проходим по датам от 3 до 30 дней назад для поиска зависших чеков УТМ
			$stempDate = _DateAdd( 'd',-$x, _NowCalcDate())							;Переменная обозначения даты для поиска зависших чеков УТМ
			$datetext = BinaryToString($stempDate)									;Перевести формата даты в текст для более удобной работы
			$date = StringReplace($datetext, '/', '-')								;Изменение разделителей даты с "/" на "-"
			If StringInStr($sHtml, "Чеки не отправлялись с "&$date) > 0 Or StringInStr($sHtml, "Чеки не отправлялись с "&$date) > 0 Then 		;Ищем текст на странице
				_plink($iputm[$j][1])												;Данная функция выполняет перезагрузку сервера УТМ
				_logcheck($iputm[$j][1],$iputm[$j][0],$date)						;Сохранить в лг данные о выполненой операции
			Else
			EndIf
		Next
			If StringInStr($sHtml, "Проблемы с RSA") > 0 Or StringInStr($sHtml, "Проблемы с RSA") > 0 Then										;Ищем текст на странице
				_plink($iputm[$j][1])												;Данная функция выполняет перезагрузку сервера УТМ
				_logrsa($iputm[$j][1],$iputm[$j][0])								;Сохранить в лг данные о выполненой операции
			Else
			EndIf
			_IEQuit($oIE)															;Закрыть созданное окно IE
			sleep(200)
			_ieclose()																;Функция избыточного завершения IE если предыдущая команда не справилась
	Next
EndFunc

Func _ieclose()																		;Закрываем все процессы ИЕ
	$ieprocess = ProcessList('iexplore.exe') 										;Возвращает двумерный массив, содержащий список выполняемых процессов (имя и PID).
	For $ie = 1 To $ieprocess[0][0] 												;$ieprocess[0][0] - это количество процессов
		If ProcessExists($ieprocess[$ie][1]) Then ProcessClose($ieprocess[$ie][1])	;Если процесс существует, то закрываем его
	Next
	$ieprocess2 = ProcessList('iexplore.exe *32') 									;Возвращает двумерный массив, содержащий список выполняемых процессов (имя и PID).
	For $ie2 = 1 To $ieprocess2[0][0] 												;$ieprocess2[0][0] - это количество процессов
		If ProcessExists($ieprocess2[$ie2][1]) Then ProcessClose($ieprocess2[$ie2][1]);Если процесс существует, то закрываем его
	Next
EndFunc

Func _plink($addres)																;Скрытая перезагрузка УТМ
	$sshkeypid = Run(@ComSpec & " /c echo yes |plink.exe 192.168."& $addres , "", @SW_HIDE)														;Автоматическое добавление ключа ssh при его отсутсвтии в системе
	sleep(4000)
	ProcessClose($sshkeypid)
	For $z = 1 To $UTMlogin[0][0]
		For $y = 1 To $UTMpassword[0][0]
			Opt("SendKeyDelay", 100)
			$PPID = Run("plink.exe 192.168."& $addres, "", @SW_HIDE, $STDIN_CHILD)
			Sleep(10000)
			StdinWrite($PPID, $UTMlogin[$z][1]&@CRLF)
			Sleep(5000)
			StdinWrite($PPID, $UTMpassword[$y][1]&@CRLF)
			Sleep(15000)
			StdinWrite($PPID, "sudo reboot"&@CRLF)
			Sleep(10000)
			StdinWrite($PPID, $UTMpassword[$y][1]&@CRLF)
			Sleep(10000)
			ProcessClose($PPID)
		Next
	Next
EndFunc

Func _logcheck($iputm1,$iputm2,$date) 												;Лог чеков
	FileWrite ("UTMlogbad.txt", @YEAR&"-"&@MON&"-"&@MDAY&" "&@HOUR&":"&@MIN&":"&@SEC&@TAB&"192.168."&$iputm1&@TAB&$iputm2&@TAB&@TAB&@TAB&" Чеки не отправлялись с "&$date&", попытка перезагрузки выполнена"&@CRLF)
	FileClose ("UTMlogbad.txt")
EndFunc

Func _logrsa($iputm1,$iputm2) 														;Лог RSA
	FileWrite ("UTMlogbad.txt", @YEAR&"-"&@MON&"-"&@MDAY&" "&@HOUR&":"&@MIN&":"&@SEC&@TAB&"192.168."&$iputm1&@TAB&$iputm2&@TAB&@TAB&@TAB&" Проблемы с RSA, попытка перезагрузки выполнена"&@CRLF)
	FileClose ("UTMlogbad.txt")
EndFunc


В скрипте я использую данные полученные из INI-файла UTM.ini
в нем идет набор данных для теста и авторизации на сервере
Код:
[UTM IP]
Магазин 1 = 141.12
Магазин 2 = 142.12
.....
Магазин 42 = 195.12
[UTM login]
Логин для сервера утм1 = egais
логин для сервера утм2 = egais2
[UTM passwords]
пароль для утм1 = 123456
пароль для утм2 = 321654
пароль для утм3 = 123654
в файл лога данные пишутся только о выполненных попытках перезагрузки с причиной
Код:
2018-04-12 00:02:03 192.168.142.12 Магазин 2 Чеки не отправлялись с 2018-04-09, попытка перезагрузки выполнена
2018-04-12 00:06:42 192.168.148.12 Магазин 8 Чеки не отправлялись с 2018-04-09, попытка перезагрузки выполнена
2018-04-12 09:55:48 192.168.152.12 Магазин 12 Проблемы с RSA, попытка перезагрузки выполнена

В принципе работает, но хотелось бы избавиться от запуска IE.
код страницы с начала страницы до необходимых данных прикладываю
Код:
<!DOCTYPE html>
<!-- saved from url=(0026)http://192.168.195.12:8080/ -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>УТМ</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="./УТМ_files/bootstrap.min.css" rel="stylesheet">
<link href="./УТМ_files/bootstrap-table.css" rel="stylesheet">
<link href="./УТМ_files/utm.css" rel="stylesheet">
<script src="./УТМ_files/jquery.min.js.Без названия"></script><style></style>
<script src="./УТМ_files/bootstrap.min.js.Без названия"></script>
<script src="./УТМ_files/bootstrap-table.js.Без названия"></script>
<script src="./УТМ_files/bootstrap-table-ru-RU.min.js.Без названия"></script>
<script src="./УТМ_files/utm.js.Без названия"></script>
</head>
<body>
<div class="container">
<h2 id="title-eagle"><img src="./УТМ_files/eagle.png" alt="Двуглавый орел">  Универсальный транспортный модуль</h2>
<div id="wrapper">
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="http://192.168.195.12:8080/#home">Главная</a></li>
<li><a data-toggle="tab" href="http://192.168.195.12:8080/#menu1">Сертификаты</a></li>
<li><a data-toggle="tab" href="http://192.168.195.12:8080/#menu2">XML схемы</a></li>
<li><a data-toggle="tab" href="http://192.168.195.12:8080/#menu3">История</a></li>
<li><a data-toggle="tab" href="http://192.168.195.12:8080/#menu4">Исходящие</a></li>
<li><a data-toggle="tab" href="http://192.168.195.12:8080/#menu5">Входящие</a></li>
</ul>
</div>
<div class="tab-content">
<div id="home" class="tab-pane fade in active">
<h4>Информация об установленном УТМ</h4>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>Версия ПО</div><div class="col-md-8 col-sm-8 col-lg-8">2.1.6</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span>Продуктивный контур</div><div class="col-md-8 col-sm-8 col-lg-8">RSA сертификат pki.fsrar.ru соответствует контуру</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span>Статус лицензии</div><div class="col-md-8 col-sm-8 col-lg-8">Лицензия на вид деятельности действует</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>Дата создания БД</div><div class="col-md-8 col-sm-8 col-lg-8">2017-11-17 10:01:02.507</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>Неотправленные чеки</div><div class="col-md-8 col-sm-8 col-lg-8">Отсутствуют неотправленные чеки</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span>Сертификат RSA</div><div class="col-md-8 col-sm-8 col-lg-8">Действителен с 2018-02-19 12:37:56 +1000 по 2018-12-10 23:14:58 +1000</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span>Сертификат ГОСТ</div><div class="col-md-8 col-sm-8 col-lg-8">Действителен с 2018-02-19 09:21:22 +1000 по 2019-05-19 09:21:22 +1000</div></div>
</div>

Вместо "продуктивный контур" появляется "Проблемы с RSA" а в поле "Отсутствуют неотправленные чеки" пишется "Чеки не отправлялись с %date%"

Моего скудного разума не хватает на "парсинг" сайта без открытия IE, буду благодарен за критику моей поделки и помощь в решении задачи.
Заранее спасибо.
 

Вложения

  • Снимок.JPG
    Снимок.JPG
    117.2 КБ · Просмотры: 9

hedji

Продвинутый
Сообщения
409
Репутация
94
Попробуйте $sHtml получить через InetRead

Код:
Local $oIE, $sHtml, $sUrl ="http://192.168."&$iputm[$j][1]&":8080/"         ;URL построенные на основе переменных из файла ini
        $oIE = _IECreate($sUrl,0,0)                                                 ;Создаем скрытую страницу с выбранным адресом
        _IELoadWait($oIE)                                                           ;Дожидаемся полной загрузки страницы
        $sHtml = _IEBodyReadHTML($oIE)  

;вместо этого
$sHtml = BinaryToString(InetRead($sUrl, 1)) ;получаем html код страницы
;дальнейший парсинг нужных данных такой же
 
Автор
All2khoff

All2khoff

Продвинутый
Сообщения
347
Репутация
65
hedji сказал(а):
Попробуйте $sHtml получить через InetRead

про данную функцию читал, но так и не смог ее постичь, это мой первый опыт работы с данными с сайта.
да и хотелось бы немного по другому получать информацию, а именно получить значения из этих конкретных позиций и основываясь на них дальше выполнять те или иные функции, а в дальнейшем основываясь на данном примере учиться работать со страницами дальше.
не могли бы вы помочь получить именно эти две строки с данной странички
 

hedji

Продвинутый
Сообщения
409
Репутация
94
А есть пример html, где присутствуют не отправленные чеки?
 
Автор
All2khoff

All2khoff

Продвинутый
Сообщения
347
Репутация
65
hedji сказал(а):
А есть пример html, где присутствуют не отправленные чеки?

Код:
<!DOCTYPE html>
<!-- saved from url=(0026)http://192.168.184.12:8080/ -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>УТМ</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="./УТМ2_files/bootstrap.min.css" rel="stylesheet">
<link href="./УТМ2_files/bootstrap-table.css" rel="stylesheet">
<link href="./УТМ2_files/utm.css" rel="stylesheet">
<script src="./УТМ2_files/jquery.min.js.Без названия"></script>
<script src="./УТМ2_files/bootstrap.min.js.Без названия"></script>
<script src="./УТМ2_files/bootstrap-table.js.Без названия"></script>
<script src="./УТМ2_files/bootstrap-table-ru-RU.min.js.Без названия"></script>
<script src="./УТМ2_files/utm.js.Без названия"></script>
</head>
<body>
<div class="container">
<h2 id="title-eagle"><img src="./УТМ2_files/eagle.png" alt="Двуглавый орел">  Универсальный транспортный модуль</h2>
<div id="wrapper">
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="http://192.168.184.12:8080/#home">Главная</a></li>
<li><a data-toggle="tab" href="http://192.168.184.12:8080/#menu1">Сертификаты</a></li>
<li><a data-toggle="tab" href="http://192.168.184.12:8080/#menu2">XML схемы</a></li>
<li><a data-toggle="tab" href="http://192.168.184.12:8080/#menu3">История</a></li>
<li><a data-toggle="tab" href="http://192.168.184.12:8080/#menu4">Исходящие</a></li>
<li><a data-toggle="tab" href="http://192.168.184.12:8080/#menu5">Входящие</a></li>
</ul>
</div>
<div class="tab-content">
<div id="home" class="tab-pane fade in active">
<h4>Информация об установленном УТМ</h4>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>Версия ПО</div><div class="col-md-8 col-sm-8 col-lg-8">2.1.6</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span>Продуктивный контур</div><div class="col-md-8 col-sm-8 col-lg-8">RSA сертификат pki.fsrar.ru соответствует контуру</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span>Статус лицензии</div><div class="col-md-8 col-sm-8 col-lg-8">Лицензия на вид деятельности действует</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>Дата создания БД</div><div class="col-md-8 col-sm-8 col-lg-8">2017-12-21 15:27:46.798</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>Неотправленные чеки</div><div class="col-md-8 col-sm-8 col-lg-8">Чеки не отправлялись с 2018-04-13 10:10:00.000 +1000</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span>Сертификат RSA</div><div class="col-md-8 col-sm-8 col-lg-8">Действителен с 2018-01-08 12:08:02 +1000 по 2018-12-10 23:14:58 +1000</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span>Сертификат ГОСТ</div><div class="col-md-8 col-sm-8 col-lg-8">Действителен с 2017-12-11 09:32:17 +1000 по 2019-03-11 09:42:17 +1000</div></div>
</div>
отловил с сегодняшней датой

ловлю отдельно ошибку RSA
 

Вложения

  • Снимок.JPG
    Снимок.JPG
    125.9 КБ · Просмотры: 6

hedji

Продвинутый
Сообщения
409
Репутация
94
Код:
$sHtml = BinaryToString(InetRead($sUrl, 1))
$cheks = StringRegExp($sHtml, 'Неотправленные чеки<.div><div class="col-md-8 col-sm-8 col-lg-8">(.*)<.div><.div>', 3)
MsgBox(0, "", $cheks[0])
 
Автор
All2khoff

All2khoff

Продвинутый
Сообщения
347
Репутация
65
hedji сказал(а):
Код:
$sHtml = BinaryToString(InetRead($sUrl, 1))
$cheks = StringRegExp($sHtml, 'Неотправленные чеки<.div><div class="col-md-8 col-sm-8 col-lg-8">(.*)<.div><.div>', 3)
MsgBox(0, "", $cheks[0])
видимо я не понял вашего посыла но при компиляции ваш код выдает ошибку
Код:
<!DOCTYPE html>
<!-- saved from url=(0026)http://192.168.15.12:8080/ -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>УТМ</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="./УТМ_files/bootstrap.min.css" rel="stylesheet">
<link href="./УТМ_files/bootstrap-table.css" rel="stylesheet">
<link href="./УТМ_files/utm.css" rel="stylesheet">
<script src="./УТМ_files/jquery.min.js.Без названия"></script>
<script src="./УТМ_files/bootstrap.min.js.Без названия"></script>
<script src="./УТМ_files/bootstrap-table.js.Без названия"></script>
<script src="./УТМ_files/bootstrap-table-ru-RU.min.js.Без названия"></script>
<script src="./УТМ_files/utm.js.Без названия"></script>
</head>
<body>
<div class="container">
<h2 id="title-eagle"><img src="./УТМ_files/eagle.png" alt="Двуглавый орел">  Универсальный транспортный модуль</h2>
<div id="wrapper">
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="http://192.168.129.9:8080/#home">Главная</a></li>
<li><a data-toggle="tab" href="http://192.168.15.12:8080/#menu1">Сертификаты</a></li>
<li><a data-toggle="tab" href="http://192.168.15.12:8080/#menu2">XML схемы</a></li>
<li><a data-toggle="tab" href="http://192.168.15.12:8080/#menu3">История</a></li>
<li><a data-toggle="tab" href="http://192.168.15.12:8080/#menu4">Исходящие</a></li>
<li><a data-toggle="tab" href="http://192.168.15.12:8080/#menu5">Входящие</a></li>
</ul>
</div>
<div class="tab-content">
<div id="home" class="tab-pane fade in active">
<h4>Информация об установленном УТМ</h4>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>Версия ПО</div><div class="col-md-8 col-sm-8 col-lg-8">2.1.6</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span>Проблемы с RSA</div><div class="col-md-8 col-sm-8 col-lg-8">com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: javax.net.ssl.SSLException: java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_FUNCTION_FAILED</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span>Продуктивный контур</div><div class="col-md-8 col-sm-8 col-lg-8">RSA сертификат pki.fsrar.ru соответствует контуру</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span>Статус лицензии</div><div class="col-md-8 col-sm-8 col-lg-8">Лицензия на вид деятельности действует</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>Дата создания БД</div><div class="col-md-8 col-sm-8 col-lg-8">2017-11-20 11:43:28.025</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>Неотправленные чеки</div><div class="col-md-8 col-sm-8 col-lg-8">Отсутствуют неотправленные чеки</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span>Сертификат RSA</div><div class="col-md-8 col-sm-8 col-lg-8">Действителен с 2018-01-10 15:52:25 +1000 по 2018-12-10 23:14:58 +1000</div></div>
<div class="info-line row"><div class="col-md-4 col-sm-4 col-lg-4"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span>Сертификат ГОСТ</div><div class="col-md-8 col-sm-8 col-lg-8">Действителен с 2017-08-16 16:54:59 +1000 по 2018-11-16 17:04:59 +1000</div></div>
</div>
ошибка RSA
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Я предположил, что вы её сами в свой код добавите и докрутите.
Вместо $sUrl подставьте готовую ссылку и проверьте что получается

Код:
$sHtml = BinaryToString(InetRead("здесь ссылка для проверки", 1))
ConsoleWrite($sHtml) ;проверяем, что м ыполучили html
$cheks = StringRegExp($sHtml, 'Неотправленные чеки<.div><div class="col-md-8 col-sm-8 col-lg-8">(.*)<.div><.div>', 3) ;пытаемся выдернуть строку о чеках
MsgBox(0, "", $cheks[0])
 
Автор
All2khoff

All2khoff

Продвинутый
Сообщения
347
Репутация
65
Прошу прощения что долго не отвечал, отвлекся на другие задачи
hedji сказал(а):
Я предположил, что вы её сами в свой код добавите и докрутите.
Вместо $sUrl подставьте готовую ссылку и проверьте что получается

Про этот момент я догадался, но
Код:
MsgBox(0, "", $cheks[0])

не работает
Код:
MsgBox(0, "", $cheks)

работает но выдает один и тот же результат
Код:
1
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Почитайте про StringRegExp
1 - означает, что он не нашел нужную строку, надо поиграться с регулярным выражением.
 
Автор
All2khoff

All2khoff

Продвинутый
Сообщения
347
Репутация
65
Всем добрый день, пока добился работы скрипта с InetRead, в принципе нагрузка на систему уменьшилась в разы...
Код:
Func _utmtest()                                                                     ;Проверка состояния сервера УТМ
   For $j = 1 To $iputm[0][0]                                                       ;Проходим с первой до последней строки файла ini и выбираем оттуда нужные данные
	  If Ping ("192.168."&$iputm[$j][1], 2000) Or Ping ("192.168."&$iputm[$j][1], 2000) Then
		 ;~ 	  ConsoleWrite("УТМ пингуется 192.168."&$iputm[$j][1]&" "&$iputm[$j][0]&@CRLF)
		 Local $sHtml, $sUrl ="http://192.168."&$iputm[$j][1]&":8080/"         		;URL построенные на основе переменных из файла ini
		 $sHtml = BinaryToString(InetRead($sUrl, 1),4)
;~ 		 ConsoleWrite($sHtml)
;~ 		 ConsoleWrite("тестируем "&$sUrl&@CRLF)
		 For $x = 3 to 30                                                           ;Проходим по датам от 3 до 30 дней назад для поиска зависших чеков УТМ
			$stempDate = _DateAdd( 'd',-$x, _NowCalcDate())                         ;Переменная обозначения даты для поиска зависших чеков УТМ
			$datetext = BinaryToString($stempDate)                                  ;Перевести формата даты в текст для более удобной работы
			$date = StringReplace($datetext, '/', '-')                              ;Изменение разделителей даты с "/" на "-"
			If StringInStr($sHtml, "Чеки не отправлялись с "&$date) > 0 Or StringInStr($sHtml, "Чеки не отправлялись с "&$date) > 0 Then      ;Ищем текст на странице
			   _plink($iputm[$j][1])                                               ;Данная функция выполняет перезагрузку сервера УТМ
			   _logcheck($iputm[$j][1],$iputm[$j][0],$date)                        ;Сохранить в лг данные о выполненой операции
;~ 			   ConsoleWrite("найдены неотправленные чеки "&$date&@CRLF)
			Else
;~ 			   ConsoleWrite("не найдено неотправленных чеков "&$date&@crlf)
			EndIf
		 Next
		 If StringInStr($sHtml, "Проблемы с RSA") > 0 Or StringInStr($sHtml, "Проблемы с RSA") > 0 Then                                        ;Ищем текст на странице
			_plink($iputm[$j][1])                                               ;Данная функция выполняет перезагрузку сервера УТМ
			_logrsa($iputm[$j][1],$iputm[$j][0])                                ;Сохранить в лг данные о выполненой операции
;~ 			ConsoleWrite("обнаружена ошибка rsa "&$iputm[$j][0]&@CRLF)
		 Else
;~ 			ConsoleWrite("не найдено ошибок rsa "&$iputm[$j][0]&@CRLF)
		 EndIf
		 sleep(200)
	  Else
;~ 		 ConsoleWrite("УТМ не пингуется 192.168."&$iputm[$j][1]&" "&$iputm[$j][0]&@CRLF)
	  EndIf
   Next
EndFunc

Но вот "парсить" я пока не научился)), тему закрываю как решенную.
Всем спасибо.
 
Верх