history命令內容格式優化:添加日期時間及IP地址
Centos 和ubuntu 測試都可以用
注意:這個配置修改,只對配置生效后的操作命令記錄操作時間和IP, 在此之前操作的命令是無法顯示當時的時間和IP的。
Linux原生的history命令默認顯示內容太少,只顯示命令行的簡短列表,不包括時間戳或其他詳細信息。但是,可以通過修改shell配置文件顯示詳細的信息。
如果希望看到所有用戶詳細的歷史記錄,就需要在全局的 /etc/profile 或 /etc/bash.bashrc 文件中進進行類似的更改。如下。
vim /etc/profile
末尾添加以下內容
#add
###### history property ######
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
export HISTTIMEFORMAT="[%F %T] [`whoami`] [${USER_IP}]"
export HISTSIZE=10000
export HISTFILESIZE=10000
#export HISTIGNORE='ls*:ll'
export PROMPT_COMMAND='if [ "$(history 1)" != "$(tail -n 1 /var/log/my_history_command 2>/dev/null)" ]; then history 1 >> /var/log/my_history_command; fi'
HISTTIMEFORMAT 定義了時間戳的格式。"%F %T " 會顯示完整的日期和時間(例如 2023-09-17 10:30:00)
HISTSIZE 定義了保存在內存中的歷史命令的數量
HISTFILESIZE 定義了保存在歷史文件中的命令數量
HISTIGNORE 定義哪些命令不應被保存在命令歷史文件中,建議不用忽略
PROMPT_COMMAND 確保輸入命令時,都會將歷史記錄寫入文件并重新讀取,始終看到最新的歷史記錄
讓環境變量生效
source /etc/profile
創建日志文件并賦予所有用戶讀寫權限
touch /var/log/my_history_command
chmod 666 /var/log/my_history_command
這里將命令單獨記錄在/var/log/my_history_command文件中。原因是history命令只能看到本用戶下輸入的命令,所以其實who am i沒什么用,ip顯示的也是當前用戶登錄的ip,如果換個ip登錄,history命令顯示的ip也會變,所以單純使用history顯示IP是不準確的。因此需要將歷史記錄輸出到文本中,這種方式改完后,/var/log/my_history_command文件中才是真正意義上的所有用戶命令歷史,并且顯示正確的時間、用戶和IP地址。
注意:這個配置修改,只對配置生效后的操作命令記錄操作時間和IP, 在此之前操作的命令是無法顯示當時的時間和IP的。