시간 초과된 호출 수를 확인하기 위해 grep 응답을 어떻게 확인합니까?

시간 초과된 호출 수를 확인하기 위해 grep 응답을 어떻게 확인합니까?

서비스 중 하나를 호출하는 컬 명령이 있으므로 서비스 시간이 초과되면 다음과 같은 JSON 응답이 반환됩니다.

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

아래는 컬 명령을 실행할 때입니다. 시간 초과가 있으면 위의 응답을 얻습니다.

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

for 루프에서 위의 컬 명령을 x번 실행합니다. 이제 "message"JSON 응답을 확인하여 시간 초과된 호출 수를 확인 하고 싶습니다 . 내 말은, 내가 100만 번의 호출을 한다면 몇 번이나 시간이 초과되고, 시간이 초과되는 비율은 얼마나 됩니까?

따라서 컬 명령을 사용하여 루프를 호출하는 다음 줄이 있지만 호출 시간 초과 횟수와 시간 초과 비율을 파악하는 방법을 잘 모르겠습니다. 괜찮나요?

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

고쳐 쓰다:-

다음은 명령을 실행한 후 표시되는 출력입니다.

  % 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

답변1

jq모든 JSON 관련 텍스트 처리 작업 에 권장됩니다 . 물론 이를 사용하여 JSON 을 구문 분석할 수 있지만 grep제 생각에는 이것이 올바른 방법이 아닙니다.

시간 초과가 오류 코드 1001과 같다고 가정하는 간단한 예입니다. 반환되는 숫자는 발생한 시간 초과 횟수입니다.

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

또는 grep을 사용하려는 경우(JSON 응답이 한 줄이라고 가정):

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'

관련 정보