Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


Покажи пример запроса, как он должен выглядеть? Я так понимаю, 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

Последний раз редактировалось Anonymоus, 18-10-2013 в 11:12.

Это сообщение посчитали полезным следующие участники:

Отправлено: 03:22, 28-12-2011 | #15