여러 컴퓨터 중 기본 컴퓨터로 구성된 컴퓨터를 확인하는 방법

여러 컴퓨터 중 기본 컴퓨터로 구성된 컴퓨터를 확인하는 방법

우리는 컴퓨터 세트 중 하나만 "라이브" 컴퓨터로 구성되고 나머지는 장애 조치 컴퓨터인 오래된 시스템을 사용했습니다. 우리는 핑을 사용하여 어느 것이 무엇인지 결정했지만 이제 보안 업데이트로 인해 핑이 쓸모 없게 됩니다.

나는 ssh가 여전히 사용 가능하다는 것을 알았고 본질적으로 ssh를 사용하여 동일한 작업을 수행할 수 있지만 ssh에는 ping과 동일한 시간 초과 옵션이 있는 것을 볼 수 없습니다(우리 환경에서는 1초 시간 초과를 사용합니다). ssh(uname 실행)를 사용하도록 스크립트를 변경했으며 시간 초과 옵션이 없고 스크립트가 재구성된 시스템에 도달할 때 ssh가 오랫동안 정지되는 것을 제외하고는 프로세스가 작동합니다.

SSH 연결에 대한 시간 초과를 더 짧게 설정하는 방법이 있습니까? 아니면 1~2초 후에 연결을 종료하는 다른 방법을 찾을 수 있습니까? 물론 호스트 이름에 응답하는 시스템이 있는지 또는 호스트 이름에 응답하는 시스템이 없는지 빠르게 확인할 수 있는 다른 방법이 있다면 알고 싶습니다.

감사해요

답변1

예, 이 옵션을 사용할 수 있습니다 ConnectTimeout. 에서 man ssh_config:

ConnectTimeout: 기본 시스템 TCP 시간 초과를 사용하는 대신 SSH 서버에 연결할 때 사용할 시간 초과를 초 단위로 지정합니다. 이 값은 대상이 연결을 거부한 경우가 아니라 대상이 다운되었거나 실제로 연결할 수 없는 경우에만 사용됩니다.

따라서 5초 시간 초과의 경우:

ssh -o ConnectTimeout=5 host true

이는 빠르게 연결된 상황을 처리하지 못하지만 연결 중인 컴퓨터와 연결 중인 컴퓨터 모두에서 실행하는 실제 명령이 느립니다. GNU coreutils의 시간 제한이 더 긴 바이너리를 백업으로 사용하여 이 ConnectTimeout상황을 처리할 수 있습니다 timeout.

예를 들어, 이는 5초 이상 걸리는 연결을 시간 초과하고 전체 작업 중 어떤 것이든 7초 이상 걸리는 경우(전송을 통해) 종료됩니다 SIGTERM. 3초 후에도 ssh여전히 종료가 없으면 다음을 보냅니다 SIGKILL.

timeout 7 -k 3 ssh -o ConnectTimeout=5 host true

이를 사용할지 여부는 timeout달성하려는 목표에 따라 다르지만 적어도 빨리 실패할 수는 있습니다.

관련 정보