我一直在尋找一種方法來記錄一些關於命令歷史的更詳細的信息。我的主要目的是爲了在我們的應用程序中調試問題時創建粗略的服務器時間表,發佈命令的大致日誌。 這不是用於非常詳細的審計目的。我遇到了this post,它提出了一個很好的方法來修改PROMPT_COMMAND
以增加有關每個命令的附加信息的history
日誌。它建議添加以下到~/.bashrc
文件:非交互式shell命令的歷史
export PROMPT_COMMAND='hpwd=$(history 1); hpwd="${hpwd# *[0-9]* }"; if [[ ${hpwd%% *} == "cd" ]]; then cwd=$OLDPWD; else cwd=$PWD; fi; hpwd="${hpwd% ### *} ### $cwd"; history -s "$hpwd"'
這工作真棒,除了發出的PS1
提示時,它纔會發生。有沒有一種方法可以增強這個功能以使用非交互式shell(我認爲這是正確的術語)?
例如,我想:
ssh host "ls | grep home"
要創建ls | grep home
上host
條目爲好,但由於這是不是通過PS1
提示鏈接的解決方案做達不到。
我已經看了一下auditd
。這是一個很好的實用工具,但細節的程度遠遠超出我的需要。我本可以很容易地解析日誌,但是管道,重定向,循環變成了一場噩夢,可以合理地重建成類似於已經報告的東西。
這需要每個人都發出遠程命令來使用'喊'雖然,對吧?是否有基於主機的解決方案? – JaredC
你可以在遠程主機上用類似的東西包裝登錄shell。如果你絕望,你可能會破解遠程'bash'或'sshd'來做日誌記錄。 – tripleee
我對bash不太熟悉......是否有一些簡單的指導可供參考? – JaredC