모든 SSH 세션의 티 출력(기본값)

모든 SSH 세션의 티 출력(기본값)

현재 저는 PuTTY가 Windows에서 수행하는 것과 유사한 작업을 수행하려고 합니다. SSH 세션 정보를 캡처하고 싶습니다. 시간을 기준으로 로그 파일에서 stdout을 보고 호스트를 기준으로 로그를 구분할 수 있기를 원합니다. 이제 tee는 잘 작동하지만 항상 날짜 및 디렉터리와 함께 tee를 입력해야 한다는 것을 기억해야 합니다. 별로 실용적이지 않습니다. 내가 요청한 것을 수행하는 방법을 아는 사람이 있습니까? SSH 구성에 로컬 명령 옵션을 추가하는 것을 고려했지만 상상할 수 있듯이 SSH 세션이 시작된 후 명령을 실행하는 것처럼 보이기 때문에 출력을 캡처하는 데 사용할 수 없습니다.

답변1

ssh 명령 대신 래퍼를 만들 수 있습니다 . 다음과 같을 수 있습니다:

tssh() { ssh "$@" | tee "$(date +%m_%Y_%H:%M:%S)"; }

tssh이제 일반적으로 에서 사용하는 모든 옵션을 사용할 수 있습니다 ssh. SSH 세션은 파일(예: 08_2019_16:43:50형식 man date지정자에 대한 설명)에 기록됩니다.+

그러나 출력 로그 파일의 이름에 호스트 이름을 포함시키는 것은 더 어렵습니다. 이와 같은 래퍼를 사용할 수 있지만 항상 호스트를 첫 번째 인수로 전달해야 한다는 점을 기억해야 합니다.

tssh()
{
    if [ ! "$#" -eq 1 ]
    then
    printf "Error: Host missing\n" >&2
    return 0
    fi

    ssh "$@" | tee "$1_$(date +%m_%Y_%H:%M:%S)"
}

예를 들어:

   $ tssh localhost -vv
   $ logout

출력 로그 파일의 이름에는 호스트 이름이 포함됩니다. 예:

   localhost_08_2019_16:47:41

관련 정보