セッションで lxc-attach コマンドを実行すると、Tee によってコンソールでフォーマットの問題が発生する

セッションで lxc-attach コマンドを実行すると、Tee によってコンソールでフォーマットの問題が発生する

通常の方法で、tee を使用してインストール スクリプトの出力をファイルにキャプチャします。LXC Linux コンテナーで lxc-attach コマンドが実行されている場合を除いて、すべて正常です。たとえば (添付のスクリーンショットを参照)、右側の画面は、"lxc-attach -n container -- yum -y install" コマンドの tee を使用したときのコンソール出力で、左側の画面は、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

関連情報