현재 저는 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