Покажи пример запроса, как он должен выглядеть? Я так понимаю,
http://site.com/script.pl?task=somet...UF4bvuiGHDBj1S - что-то вроде этого?
UPD: Финальный, подправленный вариант скрипта - улучшен разбор значений скорости, добавлен подсчет среднего значения скорости, убран лишний пробел в IP. Добавлен запрос через wget, естественно, вместо реального url'a - пример.
Код:
@Echo Off
:: Anonymous, 2011
Color 1F
Mode CON Cols=35 Lines=9
Title LanStat
SetLocal EnableDelayedExpansion
:: Добавляем директорию с бинарниками в path
Echo %Path%|Find "%CD%\bin">nul||Set Path=%Path%;%CD%\bin
:: Интервал обновления статистики, в секундах
Set Refresh=1
:: Маска IP адреса (например, 192.168)
Set IPMask=10.54
:: Получаем IP (только один раз, при запуске)
IPConfig /All|Find " %IPMask%"|Find "IP">nul
If %ErrorLevel%==0 (
For /F "tokens=2 delims=:" %%A In ('IPConfig /All^|Find " %IPMask%"^|Find "IP"') Do (Set IP=%%A)
If "!IP:~,1!"==" " Set IP=!IP:~1!
) Else (
Set IP=NOT FOUND
)
:NetStatLoop
:Break1
For /F "tokens=2,3 skip=3" %%A In ('netstat -e') Do (
Set In=%%A
Set Out=%%B
GoTo Break2
)
:Break2
Echo %IP%|Find "%IPMask%">nul||Set IP=OFFLINE
:: Получаем статистику скачанного и переданного
For /F "tokens=1" %%A In ('gnucalc %In%/1024/1024') Do (
Call :Cut "%%A" "TotalDownloadMB"
)
For /F "tokens=1" %%A In ('gnucalc %Out%/1024/1024') Do (
Call :Cut "%%A" "TotalUploadMB"
)
:: Рассчитываем скорость
For /F "tokens=1" %%A In ('gnucalc ^(%In%/1024-%OldIn%/1024^)/%Refresh%') Do (
Call :Cut "%%A" "DownloadSpeed"
)
If %DownloadSpeed%==0.11 Set DownloadSpeed=0.0
For /F "tokens=1" %%A In ('gnucalc ^(%Out%/1024-%OldOut%/1024^)/%Refresh%') Do (
Call :Cut "%%A" "UploadSpeed"
)
If %UploadSpeed%==0.11 Set UploadSpeed=0.0
:: Рассчитываем среднюю скорость
Set AverageDownSpeed=!DownloadSpeed!:%AverageDownSpeed%
For /F "tokens=1,2,3,4,5,6,7,8,9,10 delims=:" %%A In ("%AverageDownSpeed%") Do (
For /F "tokens=1" %%L In ('gnucalc ^(%%A+%%B+%%C+%%D+%%E+%%F+%%G+%%H+%%I+%%J^)/10 2^>nul') Do (
Call :Cut "%%L" "AvgDownload"
)
Set AverageDownSpeed=%%A:%%B:%%C:%%D:%%E:%%F:%%G:%%H:%%I:%%J
If "!AvgDownload!"=="" Set AvgDownload=Calculating...
If Not !AvgDownload!==Calculating... Set AvgDownload=!AvgDownload! Kb\s
)
Set AverageUpSpeed=!UploadSpeed!:%AverageUpSpeed%
For /F "tokens=1,2,3,4,5,6,7,8,9,10 delims=:" %%A In ("%AverageUpSpeed%") Do (
For /F "tokens=1" %%L In ('gnucalc ^(%%A+%%B+%%C+%%D+%%E+%%F+%%G+%%H+%%I+%%J^)/10 2^>nul') Do (
Call :Cut "%%L" "AvgUpload"
)
Set AverageUpSpeed=%%A:%%B:%%C:%%D:%%E:%%F:%%G:%%H:%%I:%%J
If "!AvgUpload!"=="" Set AvgUpload=Calculating...
If Not !AvgUpload!==Calculating... Set AvgUpload=!AvgUpload! Kb\s
)
Set OldIn=%In%&Set OldOut=%Out%
Cls
:: Выводим статистику
Echo IP : %IP%
Echo Total download : %TotalDownloadMB% Mb
Echo Total upload : %TotalUploadMB% Mb
Echo.
Echo Download speed : %DownloadSpeed% Kb\s
Echo Upload speed : %UploadSpeed% Kb\s
Echo Average download : %AvgDownload%
Echo Average upload : %AvgUpload%
:: Отсылаем данные
:: wget --retry-connrefused -O post.txt --keep-session-cookies -U "Mozilla/5.0 (Windows NT 5.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2" "http://site.ru/&ip=%IP%&speed=%UploadSpeed%¶m=value" 2>nul&Del post.txt
:Задержка между циклами
Ping -n %Refresh% 127.0.0.1>nul
GoTo NetStatLoop
:Cut
:: Урезаем дробную часть
For /F "tokens=1,2 delims=." %%A In ("%~1") Do (
Set tmpA=%%A
If "!tmpA:~,1!"=="~" Set tmpA=!tmpA:~1!
If "!tmpA:~,1!"=="-" Set tmpA=!tmpA:~1!
Set tmpB=%%B
If "!tmpB:~,1!"=="~" Set tmpB=!tmpB:~1!
If "!tmpB:~,1!"=="-" Set tmpB=!tmpB:~1!
If "!tmpB!"=="" Set tmpB=0
Set tmpB=!tmpB:~,2!
Set %~2=!tmpA!.!tmpB!
)
Exit /B