2 votes

curl capture le statut http et chronomètre la requête

J'ai une boucle dans laquelle je vérifie les urls du fichier une par une et je veux obtenir l'en-tête d'état et le temps d'exécution de chaque requête comme résultat. J'ai deux commandes curl :

Celui-ci sort la communication de l'en-tête (non souhaitée) et à la fin le code de statut http et l'heure 200 - 0,016

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

Celui-ci obtient la ligne avec le code d'état http à partir de l'en-tête et l'imprime dans le fichier HTTP/1.1 200 OK

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

Comment puis-je combiner ces deux commandes pour obtenir le résultat d'une seule requête comme ceci

HTTP/1.1 200 OK - 0,016

donc extraire la ligne avec l'en-tête http et ajouter le temps d'exécution sans tous les autres en-têtes dans le fichier

3voto

sashimiblade Points 620

Vous pouvez utiliser un fichier batch

@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"
            )
        )
    )

Juste deux boucles imbriquées. La première itère sur le fichier des URLs et la seconde exécute et traite la sortie de la fonction curl commandement.

La sortie de curl est filtrée avec findstr pour ne récupérer que les lignes contenant le code d'état et le temps de connexion (la chaîne de sortie dans le champ -w a été modifié pour localiser ces données dans la sortie)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X