curl capturando status http e cronometrando a solicitação

1

Eu tenho um loop no qual eu verifico URLs do arquivo um por um e quero obter o cabeçalho de status e o tempo de execução de cada requisição como resultado. Eu tenho dois comandos de curvas:

Este envia a comunicação do cabeçalho (não desejado) e no final do código de status http e a hora 200 - 0,016

curl -w "%{http_code} - %{time_connect}" -I -s http://superuser.com >> test_result.txt

Este obtém a linha com o link e o imprime no arquivo HTTP/1.1 200 OK

curl -v -I -s http://superuser.com | findstr /c:"HTTP" >> test_result.txt

Como posso combinar esses dois comandos para obter a saída de uma solicitação como esta

HTTP/1.1 200 OK - 0,016

então extraindo a linha com o cabeçalho http e anexando o tempo de execução sem todos os outros cabeçalhos no arquivo

    
por Zavael 20.05.2015 / 13:43

1 resposta

2

Você pode usar um arquivo em lotes

@echo off
    setlocal enableextensions disabledelayedexpansion

    rem Just to test - Generate a file with URLs
    > ".\urls.txt" (
        echo http://superuser.com
        echo http://www.google.com
    )

    > ".\testResults.txt" (
        for /f "useback delims=" %%u in (".\urls.txt") do (
            set "statusCode="
            echo([%%u]
            for /f "tokens=1,2 delims=#" %%a in ('
                curl -w "##%%{time_connect}##." -I -s --url "%%~u"
                ^| findstr /l /b /c:"HTTP/" /c:"##"
            ') do if "%%b"=="." (
                setlocal enabledelayedexpansion
                echo(    !statusCode! - %%a
                endlocal
            ) else (
                set "statusCode=%%a"
            )
        )
    )

Apenas dois loops aninhados. O primeiro itera sobre o arquivo de URLs e o segundo executa e processa a saída do comando curl .

A saída do comando curl é filtrada com findstr para recuperar apenas as linhas com o código de status e o tempo de conexão (a cadeia de saída em -w foi modificada para localizar esses dados na saída)

    
por 22.05.2015 / 10:33