2016-03-18 10 views
0

Ich habe einen curl Befehl, der einen unserer Service so, wenn mein Dienst timesout ruft, gibt es JSON-Antwort wie folgt:Wie grep Antwort um herauszufinden, wie viele Anrufe abgelaufen sind?

[{"results":{"response":null},"error":{"errorCode":1001,"message":"Service Timeout","status":"FAILURE"}}] 

Unten ist mein curl Befehl, wenn ich laufe, ich oben Antwort erhalten wird, wenn es ist irgendein Zeitlimit

Ich führe meinen über curl-Befehl in einer for-Schleife für x Male. Jetzt möchte ich sehen, wie viele Anrufe Zeit überschritten haben, indem Sie "message" in der JSON-Antwort überprüft haben? Ich meine, wenn ich 1 Million Anrufe gemacht habe, wie viele Anrufe haben ein Timeout und was war der Prozentsatz des Timeouts?

Also habe ich unter einer Zeile für die Schleife, die CURL-Befehl aufruft, aber jedes Mal, wenn ich es laufe gibt immer 1 als eine Antwort, die falsch ist. Ich meine, ich kann viele Anrufe sehen, die Timedout bekommen, aber jedes Mal gibt es 1 als Antwort. Ist etwas falsch, was ich mache?

for ((i=1;i<=1000000;i++)); do 
curl --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120" 
done \ 
| grep -wcoE '"errorCode":1001' 

Dies ist, was ich als eine Ausgabe sehen Sie den Befehl nach dem Ausführen:

% Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 226 100 226 0  0 12798  0 --:--:-- --:--:-- --:--:-- 17384 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 226 100 226 0  0 4591  0 --:--:-- --:--:-- --:--:-- 7290 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 226 100 226 0  0 6318  0 --:--:-- --:--:-- --:--:-- 8370 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 226 100 226 0  0 5252  0 --:--:-- --:--:-- --:--:-- 7793 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 226 100 226 0  0 6139  0 --:--:-- --:--:-- --:--:-- 8071 
1 

Antwort

2

einfach machen curl silent mit der -s Flagge:

curl -s --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120" 

Oder umleiten seine Fehlerausgabe in /dev/null so:

curl -s --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120" 2>/dev/null 

Auch Ihre Version des Zählens funktioniert nicht wie erwartet. Hier ist, wie man es beheben könnte:

timedout_count=0 
for ((i=1;i<=1000000;i++)); do 
    curl -s --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120" | 
     grep -q '"errorCode":1001' && timedout_count=$((timedout_count + 1)) 
done 

echo "Timed out $timedout_count times" 
+0

Ich meine, meine Frage war - ich sehe viel TimedOut Anrufe aber jedes Mal gibt es 1 als Antwort so etwas mit meinem Befehl falsch ist, nehme ich an? Entschuldigung für die Verwirrung, ich habe es aktualisiert, um es klar zu machen. – user1950349

+0

Aktualisierte die Antwort – dekkard

Verwandte Themen