1 (изменено: bnp322, 2012-03-13 17:43:45)

Тема: VBS/CMD: Анализ веб страницы

Здравствуйте!
Помогите, please!

Есть сервер радиовещания Icecast2, у него есть веб страница статуса видаhttp:/xxx.ru:8000/status.xsl
Если возникают проблемы с вещанием содержимое страницы статуса меняет вид, анализируя код видно - из нее "уходит" код:

<td><h3>Mount Point /AvtoRadio</h3></td>
<td align="right">
<a href="/AvtoRadio.m3u">M3U</a><a href="/AvtoRadio.xspf">XSPF</a>
</td>
</tr>
</table></div>
<table border="0" cellpadding="4">
<tr>
<td>Stream Title:</td>
<td class="streamdata">AvtoRadio xxx</td>
</tr>

причем этих "Mount Point"  на странице 2 шт.

Как в случае отсутствия хотя бы одной "Mount Point" запустить батник в котором прописан перезапуск?

Мне кажется, либо посчитать "Mount Point", либо просто количество строк кода. Когда все работает строк 125, а когда нет - 25.

ОС XP

2

Re: VBS/CMD: Анализ веб страницы

Если я правиль понял, вопрос в том как получить содержимое status.xsl?

Коллекция скриптов и идей » Windows Script Host, HTA (VBScript, JScript) » VBScript: загрузка файлов из Интернет

Пример:


' VB Script Document
Option Explicit
Dim sUrlRequest, oXMLHTTP
'URL файла в Интернете
sUrlRequest = "http://forum.script-coding.com/viewtopic.php?id=6924"
'создание объекта XMLHTTP
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
'подключение
'oXMLHTTP.Open "GET", sUrlRequest, False, MyName, MyPassword
oXMLHTTP.Open "GET", sUrlRequest, False
'получение файла
oXMLHTTP.Send

Dim regEx, Match, Matches
Set regEx = New RegExp
regEx.Ignorecase = True
regEx.Global = True
regEx.Pattern = "Mount Point"
Set Matches = regEx.Execute(oXMLHTTP.Responsetext)

If Matches.count < 2 Then
  wscript.echo "Перезапускаем что-то там..."
  Else
  wscript.echo "[Mount Point] встречается на странице " & Matches.count & " раз."
End If

Для запуска батника можно воспользоваться методом .Exec объекта WScript.Shell или методом .ShellExecute объекта Shell.Application.

3

Re: VBS/CMD: Анализ веб страницы

А я бы наверное вот так сократил.


Option Explicit
With CreateObject("MSXML2.XMLHTTP")
    .Open "GET", "http://xxx.ru:8000/status.xsl", False: .Send()
    Select Case Ubound(Split(.responseText,vbCrlf))
    Case 125
        MsgBox "Всё работает !", vbInformation
    Case Else
        MsgBox "Что то случилось !", vbCritical
        CreateObject("WScript.Shell").Run "cmd.exe"
    End Select
End With
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

4

Re: VBS/CMD: Анализ веб страницы

Спасибо! 
Работает первый скрипт, второй всегда выдает окно "Что то случилось !".
Я понимаю не может посчитать количество строк.

5

Re: VBS/CMD: Анализ веб страницы

2 bnp322:

bnp322 пишет:

Я понимаю не может посчитать количество строк.

Скрипт то как раз элементарно это может. А если бы Вы не поленились проверить сколько строк возвращает сервер, то не делали бы таких необоснованных предположений.


Option Explicit
Dim LinesCount
With CreateObject("MSXML2.XMLHTTP")
    .Open "GET", "http://xxx.ru:8000/status.xsl", False: .Send()
    LinesCount = Ubound(Split(.responseText,vbCrlf))
    Select Case LinesCount
    Case 125
        MsgBox "Всё работает !", vbInformation
    Case Else
        MsgBox "Что то случилось ! Строк : " & LinesCount  , vbCritical
        CreateObject("WScript.Shell").Run "cmd.exe"
    End Select
End With
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

6

Re: VBS/CMD: Анализ веб страницы

Попробовал!:)
Скрипт считает строки других сайтов, а на нужном мне сайте от Icecast2 всегда возвращает 0 !

7

Re: VBS/CMD: Анализ веб страницы

bnp322 пишет:

Если возникают проблемы с вещанием содержимое страницы статуса меняет вид

bnp322 пишет:

запустить батник в котором прописан перезапуск

Я правильно понял, что Вы и есть "радиостанция"? Ужели нет специальных средств проверки статуса из командной строки, что-то типа icecast.exe /status?

Или так, если командного интерфейса нет или он небогат. Количество строк - критерий ненадежный и зависит от дизайна страницы. Если количество строк Mount Point строго соответствует количеству подкастов станции, то сверяйте количество подстрок.

( 2 * b ) || ! ( 2 * b )

8

Re: VBS/CMD: Анализ веб страницы

bnp322 пишет:

Попробовал!:)
Скрипт считает строки других сайтов, а на нужном мне сайте от Icecast2 всегда возвращает 0 !

Реальный адрес сайта узнать можно или он секретный ? Или он внутри вашей локальной сети ?

-----------13:29----------

Уже не надо

Option Explicit
Dim LinesCount
With CreateObject("MSXML2.XMLHTTP")
    .Open "GET", "http://icecast.version6.net:8888/status.xsl", False: .Send()
    LinesCount = Ubound(Split(.responseText,vbLf))
    Select Case LinesCount
    Case 125
        MsgBox "Всё работает !", vbInformation
    Case Else
        MsgBox "Что то случилось ! Строк : " & LinesCount  , vbCritical
        CreateObject("WScript.Shell").Run "cmd.exe"
    End Select
End With
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

9 (изменено: bnp322, 2012-03-15 14:33:35)

Re: VBS/CMD: Анализ веб страницы

Да, спасибо!
Действительно работает!:)