Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Парсинг txt и отправка результата на php гейт (http://forum.oszone.net/showthread.php?t=289367)

bugmenot3 14-10-2014 01:48 2414981

Парсинг txt и отправка результата на php гейт
 
Приветствую, появилась необходимость собирать данные из логов с нескольких машин, и вести статистику на сервере.
Суть следующая, есть лог файл 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 2415005

Образец файла «Full.log» в архиве покажите. С данной строкой, разумеется.

bugmenot3 14-10-2014 10:37 2415084

Цитата:

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

Iska 14-10-2014 10:54 2415092

bugmenot3, не могу никаким боком загрузить файл оттуда. Выложите, пожалуйста, на RGhost.

bugmenot3 14-10-2014 13:15 2415185

Как скажите:)
http://rghost.ru/58515442

Iska 14-10-2014 18:52 2415362

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 2415384

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

Iska 14-10-2014 20:38 2415392

Пробуйте:
читать дальше »
Код:

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



А что с этим:
Цитата:

Цитата Iska
Учтите — в выложенном файле найденное значение содержит в начале пробел:
Код:

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

вопросом? Я своей волей убрал. Вернуть прежнее поведение?

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

bugmenot3 14-10-2014 21:01 2415396

возвращать прежнее поведение не нужно, меньше пробелов, меньше непонятных проблем:)

Iska 14-10-2014 21:10 2415402

Цитата:

Цитата bugmenot3
возвращать прежнее поведение не нужно, меньше пробелов, меньше непонятных проблем »

Лады. А как насчёт:
Цитата:

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

На самом деле, encodeURI(), конечно ;). «Совсем плохой стал» (с), encodeURIComponent :(.

bugmenot3 15-10-2014 13:31 2415644

Ну если совсем плохой то аверно не нужно:)

Iska 15-10-2014 18:11 2415788

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


Время: 00:13.

Время: 00:13.
© OSzone.net 2001-