Программный Speed Test

Стоит задача фиксировать скорость интернета каждые 15 минут и писать ее в файл. Пришел в голову вариант работать с web-страницей Speed Test Но это муторно. Интересует вопрос: есть ли инструмент, позволяющий выполнять тест в скрипте. Библиотека или что-то еще. Спасибо


Ответы (1 шт):

Автор решения: Daemon-5

Когда-то давал схожий ответ, как предлагал @andreymal. Продублирую здесь.

Можно было бы использовать встроенную утилиту bitsadmin.exe. Но у меня она часто зависала. Поэтому я использовал командлеты BitsTransfer. У меня получился следующий скрипт:

$file = $env:USERPROFILE + "\Downloads\trash.bin"       #File download path
$URL =  "http://speedtest.ftp.otenet.gr/files/test1Mb.db"   #URL from online speed test service
$JobName = "MyJob"                      #Variable value for download job operations


Get-BitsTransfer -Name $JobName|Remove-BitsTransfer     #Clear all same jobs before operations
Start-BitsTransfer -Source $URL -Destination $file -DisplayName $JobName -Asynchronous  #Start download
$job= Get-BitsTransfer -Name $JobName               #Select our download job

While  ($job.JobState -ne "Transferred" ) {$job}        #Wait for the file transfert

if ($job.JobState -eq "Transferred" ) {
    $time = ($job.TransferCompletionTime - $job.CreationTime).TotalSeconds  #count download spend time in seconds
    $size = $job.BytesTransferred                       #count total transferred bytes
    Write-Host ("Speed = " + $size / $time /1MB + " MB/s")          #count and print speed
    $job|Complete-BitsTransfer                      #finish download job
                    }

P.S. Кстати измерять скорость обмена можно не только с с HTTP-узлами, но и по протоколам SMB/CIFS,FTP. Следует иметь в виду, что обмен может быть не только типа download, но upload и uploadreply. Естественно, на измерение могут повлиять другие факторы: антивирус, медленная работа дисковой подсистемы, брандмауэр и пр.

→ Ссылка