我在 .bashrc 文件末尾使用以下几行将输入的 bash 命令记录到 Syslog:
export PROMPT_COMMAND='
RETRN_VAL=$?;
if [ -f /tmp/lastoutput.tmp ]; then
LAST_OUTPUT=$(cat /tmp/lastoutput.tmp);
rm /tmp/lastoutput.tmp;
fi;
logger -S 10000 -p local6.debug "{\"user\": \"$(whoami)\", \"path\": \"$(pwd)\", \"pid\": \"$$\", \"b64_command\": \"$(history 1 | sed "s/^[ ]*[09]\+[ ]*//"| base64 -w0 )\", \"status\": \"$RETRN_VAL\", \"b64_output\": \"$LAST_OUTPUT\"}";
unset LAST_OUTPUT;
logoutput() {
output=$(while read input; do echo "$input"; done < "${1:-/dev/stdin}");
echo -e "$output\n";
echo -e "$output" | head -c 10000 | base64 -w0 > /tmp/lastoutput.tmp;
return $?;
}
我遇到的问题是,每当我打开新 shell 或只是按 Enter 而不输入任何命令时,它都会记录当时的最新历史记录。我如何避免记录空命令或仅将它们记录为空白行?谢谢!