PDA

Показать полную графическую версию : Парсинг txt и отправка результата на php гейт


bugmenot3
14-10-2014, 01:48
Приветствую, появилась необходимость собирать данные из логов с нескольких машин, и вести статистику на сервере.
Суть следующая, есть лог файл Full.log, из него нужно выдрать все что лежит в одной из строк, после ()#4
И отправить найденную строку с помощью ниже приведенного скрипта
Set oHTTP = CreateObject("winhttp.winhttprequest.5.1")

sSource = "http://www.site.ru/gate.php?id="здесь полученные выше данные""

oHTTP.open "GET", sSource, False

oHTTP.send

На сервере будет лежать php файл, который будет получать данные из переменной id и загонять их в базу данных.

Iska
14-10-2014, 06:28
Образец файла «Full.log» в архиве покажите. С данной строкой, разумеется.

bugmenot3
14-10-2014, 10:37
Образец файла «Full.log» в архиве покажите. С данной строкой, разумеется.
http://ge.tt/33KCwZ12/v/0

Iska
14-10-2014, 10:54
bugmenot3, не могу никаким боком загрузить файл оттуда. Выложите, пожалуйста, на RGhost.

bugmenot3
14-10-2014, 13:15
Как скажите:)
http://rghost.ru/58515442

Iska
14-10-2014, 18:52
bugmenot3, получил. Пробуйте:
Option Explicit

Dim strSourceFile

Dim objFSO
Dim strContent
Dim strValue


strSourceFile = "E:\Песочница\0401\Full.log"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strSourceFile) Then
With objFSO.OpenTextFile(strSourceFile)
strContent = .ReadAll()
.Close
End With

With WScript.CreateObject("VBScript.RegExp")
.Pattern = "\(\)#4(.*?)\r\n"

If .Test(strContent) Then
strValue = .Execute(strContent).Item(0).Submatches.Item(0)

WScript.Echo "Found value [" & strValue & "]."
' Здесь Ваш код по отправке найденного текста
Else
WScript.Echo "Can't find pattern [" & .Pattern & "] in content of [" & strSourceFile & "]."
End If
End With
Else
WScript.Echo "Can't find source file [" & strSourceFile & "]."
WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0

Учтите — в выложенном файле найденное значение содержит в начале пробел:
Found value [ 39383196].
Он значим для Вас, или убрать возможные пробелы с начала/конца найденного текста?

bugmenot3
14-10-2014, 20:00
Извиняюсь за наглость, помогите пожалуйста эти два кода склеить, что-то у меня проблемы с синтаксисом:(

Iska
14-10-2014, 20:38
Пробуйте:
Option Explicit

Dim strSourceFile
Dim strUrl

Dim objFSO
Dim strContent
Dim strValue


strSourceFile = "E:\Песочница\0401\Full.log"
strUrl = "http://www.site.ru/gate.php?id= "

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strSourceFile) Then
With objFSO.OpenTextFile(strSourceFile)
strContent = .ReadAll()
.Close
End With

With WScript.CreateObject("VBScript.RegExp")
.Pattern = "\(\)#4\s*?(\S.*\S)\s*?\r\n"

If .Test(strContent) Then
strValue = .Execute(strContent).Item(0).Submatches.Item(0)

WScript.Echo "Found value [" & strValue & "]."

With WScript.CreateObject("WinHttp.WinHttpRequest.5.1")
.Open "GET", Replace(strUrl, " ", strValue), False
.Send

If .Status = 200 Then
WScript.Echo "Send successfully. Status: " & CStr(.Status)
Else
WScript.Echo "Error send. Status: " & CStr(.Status)
End If
End With
Else
WScript.Echo "Can't find pattern [" & .Pattern & "] in content of [" & strSourceFile & "]."
End If
End With
Else
WScript.Echo "Can't find source file [" & strSourceFile & "]."
WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0

А что с этим:
Учтите — в выложенном файле найденное значение содержит в начале пробел:
Found value [ 39383196].
Он значим для Вас, или убрать возможные пробелы с начала/конца найденного текста? »
вопросом? Я своей волей убрал. Вернуть прежнее поведение?

И, по-хорошему, надо делать «decodeURI()» для отсылаемой строки — как раз на случай пробелов, всяких «/» и т.п. Что скажете?

bugmenot3
14-10-2014, 21:01
возвращать прежнее поведение не нужно, меньше пробелов, меньше непонятных проблем:)

Iska
14-10-2014, 21:10
возвращать прежнее поведение не нужно, меньше пробелов, меньше непонятных проблем »
Лады. А как насчёт:
И, по-хорошему, надо делать «decodeURI()» для отсылаемой строки — как раз на случай пробелов, всяких «/» и т.п. Что скажете? »
На самом деле, encodeURI() (http://javascript.ru/encodeURI), конечно ;). «Совсем плохой стал» (с), encodeURIComponent (http://javascript.ru/encodeURIComponent) :(.

bugmenot3
15-10-2014, 13:31
Ну если совсем плохой то аверно не нужно:)

Iska
15-10-2014, 18:11
Ну, смотрите сами. Вам виднее, что может попасться в отправляемой строке, и насколько сумеет Ваш php-интерпретатор обработать такую ситуацию.




© OSzone.net 2001-2012