Linux

如何使 bash 將 shell 命令記錄到 syslog?

  • October 12, 2014

Bash 4.1能夠將歷史記錄到 syslog。但是我似乎無法讓它在 FreeBSD 8 下工作。

我嘗試從埠重新編譯 bash-DWITH_SYSLOG=但無濟於事。有沒有人設法讓日誌記錄在 FreeBSD 下工作?Linux 怎麼樣?

最好的辦法是打開審計,這將讓您記錄每個命令執行,而不管它們使用什麼外殼。

試試這個:

export HISTTIMEFORMAT="%Y-%m-%d %T "
export PROMPT_COMMAND='trap "" 1 2 15; history -a >(tee -a ~/.bash_history | while read line; do if [[ $line =~ ^#[0-9]*$ ]]; then continue; fi; logger -p user.info -t "bash[$$]" "($USER) $line"; done); trap 1 2 15;'

這會記錄並防止記錄用於 bash 歷史文件的時間戳。需要使用陷阱,因為 bash 會在多次按下 strg+c 後將信號發送到“子作業”(使用 bash 4.3 測試)。這將強制註銷目前使用者(例如使用 sudo 登錄)

引用自:https://serverfault.com/questions/323270