Tee가 세션에서 lxc-attach 명령을 실행할 때 콘솔에서 형식 문제를 일으킴

Tee가 세션에서 lxc-attach 명령을 실행할 때 콘솔에서 형식 문제를 일으킴

저는 tee를 사용하여 일반적인 방법으로 설치 스크립트의 출력을 파일로 캡처합니다. LXC Linux 컨테이너에서 실행되는 lxc-attach 명령이 있는 경우를 제외하고는 모두 괜찮습니다. 예를 들어(첨부 스크린샷 참조) 오른쪽 화면은 "lxc-attach -n 컨테이너 -- yum -y install" 명령의 tee를 사용할 때의 콘솔 출력이고 왼쪽 화면은 "tail -f log"입니다. 티 로그. 보시다시피 tee 로그의 형식은 정확하지만 tee를 사용할 때 lxc-attach를 통해 실행되는 명령의 콘솔 출력에는 추가 줄 바꿈이나 탭 등이 나타납니다. tee 또는 tee와 동등한 것을 사용하여 tee 로그와 콘솔 로그의 형식이 모두 올바른가요? 스크린샷 보기

답변1

캡처해야 하는 모든 기록된 활동은 sudo 명령입니다. 누군가에게 도움이 될 경우를 대비해 제가 찾은 대체 솔루션은 다음과 같습니다.여기그리고여기현재 사용 중입니다(Sudo용 로깅 기능에 대해 배운 내용을 바탕으로 아래 코드를 직접 작성했습니다). 사용이 매우 쉽고 매우 상세한 로깅을 제공합니다. 이는 매우 만족스러운 놀라운 솔루션이며 sudoreplay를 사용하면 실제로 설치한 "기념품 홈 비디오"를 얻을 수 있으며 크리스마스 때 손주들과 공유할 수 있습니다...

그리고 설치 세션이 끝나면 원하는 경우 선택적으로 /etc/sudoers.d에서 파일을 제거할 수 있습니다.

이 방법에는 "lxc-attach" 등과 같은 LXC 컨테이너 내부 명령의 출력을 로깅할 때 tee가 겪었던 문제가 전혀 없다는 점을 덧붙여야 합니다. 물론 그렇지 않습니다.

즐기다!

if [ ! -d "$DistDir"/installs/logs ]
then
    sudo mkdir -p "$DistDir"/installs/logs
fi

if [ -f "$DistDir"/installs/logs/$USER.log ]
then
    sudo mv "$DistDir"/installs/logs/$USER.log "$DistDir"/installs/logs/$USER.log.$LOGEXT
fi

if [ ! -d /var/log/sudo-io ]
then
    sudo mkdir -m 750 /var/log/sudo-io
fi

if [ ! -f /etc/sudoers.d/orabuntu-lxc ]
then
    sudo sh -c "echo 'Defaults      logfile=\"/home/$USER/Downloads/orabuntu-lxc-master/installs/logs/$USER.log\"'  >> /etc/sudoers.d/orabuntu-lxc"
    sudo sh -c "echo 'Defaults      log_input,log_output'                               >> /etc/sudoers.d/orabuntu-lxc"
    sudo sh -c "echo 'Defaults      iolog_dir=/var/log/sudo-io/%{user}'                     >> /etc/sudoers.d/orabuntu-lxc"
    sudo chmod 0440 /etc/sudoers.d/orabuntu-lxc
fi

관련 정보