연결 시도의 출력에 나타나지 않는 ERR_CONNECTION_RESET 메시지(또는 이와 유사한)를 표시할 수 있는 2개의 서로 다른 위치에 있는 2개의 서로 다른 Linux 클라이언트의 Linux 명령줄에서 수행할 수 있는 작업이 있습니까? https를 사용하여 도메인이나 전체 URI를 통해 연결하려고 할 때 이를 수행할 수 있는 방법이 있는지 궁금합니다.
(ERR_CONNECTION_RESET은 방화벽 차단으로 인해 연결이 실패했음을 나타낼 수 있다는 것을 이해하고 있습니다. 다른 방화벽과 비교하여 하나의 연결 경로를 사용할 때 리소스 차단 가능성이 있는지 확인하려고 합니다.)
답변1
이것curl
명령의 종료 코드가 56인 경우피어에 의한 연결 재설정발생하다:
56 네트워크 데이터 수신에 실패했습니다.
curl http://someurl/
$ curl http://192.0.2.2:8080/
unfinished data...
curl: (56) Recv failure: Connection reset by peer
$ echo $?
56
56이 다음에 의해서만 발생한다는 보장은 없습니다(문서에서).피어에 의한 연결 재설정그것조차피어에 의한 연결 재설정56으로만 종료할 수 있지만 오류를 필터링할 수도 있습니다.표준 에러다음과 같이( 2>&1
의도적으로 첫 번째):
LANG=C curl --no-progress-meter http://someurl/ 2>&1 >/dev/null |
grep -Fq 'Connection reset by peer' && echo RST || echo non-RST
그러면 RST가 인쇄됩니다.피어에 의한 연결 재설정그리고 다른 것(성공 포함)에 대해서는 RST가 아닙니다.
프로덕션 환경에서 사용하기에는 취약하지만(문자열이 헤더 데이터 등으로 표시될 수 있음) 특정 문제를 디버깅하기 위한 것이므로...