grep -v grep가 아래에서 수행하는 작업을 이해하려고합니다.

ssh $server -p $port -o "ConnectTimeout 5" | grep -v "Connection refused" | grep "Connected to" | grep -v grep | wc -l 

또는 TCP 연결 테스트를 찾는 더 좋은 방법이 있습니까?

댓글

  • 다음에 맨 페이지를 먼저 참조하십시오.이 경우 man grep

Answer

이전 파이프 출력에서 문자 시퀀스 grep를 포함하는 모든 줄을 제외합니다.

Answer

5 초 이내에 SSH 연결을 설정하고 명령을 실행할 수 있는지 확인하려면 다음을 수행하십시오.

if ssh -o BatchMode=yes -o ConnectTimeout=5 -p "$port" "$server" true; then printf "%s\n" "$server is up" fi 

명령은 의미가 없습니다. 원격 서버에서 실행할 명령을 “제공하지 않으므로 sshrlogin 모드, 여기서 의사 터미널이 요청되고 원격 사용자의 로그인 셸이 시작됩니다 (또는 ForcedCommand).

그런 다음 출력에 여러 필터를 적용합니다.

  • grep -v "Connection refused" : Connection refused를 포함하는 출력 . 해당 오류 메시지가 표시되는 경우 grep가 필터링하는 표준 출력이 아니라 stderr에 작성되며 다음과 같은 이유 때문에 의미가 거의 없습니다.
  • grep "Connected to" : Connected to를 포함하는 줄만 선택합니다. 또한 Connection refused가 포함 된 줄은 제외됩니다. 한 줄에 둘 다 포함 할 가능성이 낮기 때문입니다.
  • grep -v grep, grep가 포함 된 줄도 제거합니다 (그러면 Connected togrep가 아니라 Connection refused!)
  • wc -l : 결과 줄 수를 계산합니다. grep 또는 iv도 포함하는 경우를 제외하고 Connected to를 포함하는 ssh “의 표준 출력 id = “9fdcd41b43″>

). wc는 사용자가 exit를 입력 할 때와 같이 셸 세션이 종료 될 때 연결이 닫힐 때만 해당 번호를 출력합니다. . 그러나 다시 말하지만 사용자는 출력을 볼 수 없기 때문에 (결국 모든 것이 wc로 이동하기 때문에) 사용자는 해당 세션을 종료합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다