我使用 tee 以通常的方式将安装脚本的输出捕获到文件中。除了在 LXC Linux 容器中执行 lxc-attach 命令时,其他一切都很好。例如(参见所附屏幕截图)右侧屏幕上是使用 tee 执行“lxc-attach -n container -- yum -y install”命令时的控制台输出,左侧屏幕上是 tee 日志的“tail -f log”。可以看到,tee 日志的格式正确,但使用 tee 时,通过 lxc-attach 执行的命令的控制台输出会出现额外的换行符或制表符等。有没有办法使用 tee 或 tee 等效项,以便 tee 日志和控制台日志都格式正确? 查看屏幕截图
答案1
我需要捕获的所有记录活动都是 sudo 命令。如果它对任何人有帮助,以下是我找到的替代解决方案这里和这里并且现在正在使用(我根据对 sudo 的这个日志记录工具的了解自己编写了下面的代码)。它非常易于使用,并提供高度详细的日志记录。这是一个非常棒的解决方案,我对它非常满意,使用 sudoreplay,您实际上可以获得安装的“纪念家庭视频”,您可以在圣诞节时与您的孙子们分享...
并且,当安装会话结束时,您可以根据需要选择卸载 /etc/sudoers.d 中的文件。
我应该补充一点,这种方法不存在 tee 在记录 LXC 容器内部命令(例如“lxc-attach”等)的输出时遇到的任何问题 - 当然不会。
享受!
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