2017-11-04 115 views
-3

我需要重新設置歷史命令以顯示日期,時間和用戶的IP地址,從他們登錄到我們的服務器並執行特定命令。有什麼方法可以用歷史命令顯示這些信息嗎?如何在Bash歷史中存儲日期,時間和用戶的IP地址

示例輸出將是:

Sat 04 Nov 2017 06:20:20 AM +03 111.111.111.111 : pwd Sat 04 Nov 2017 06:20:20 AM +03 111.123.123.111 : mkdir test Sat 04 Nov 2017 06:20:20 AM +03 123.123.44.32 : pwd

幫我設置通過任何的.bash_profile這些變化或.bashrc中

+0

在一個CentOS服務器(忘記提及) –

+1

請出示你的努力。你可以看到這個帖子開始:https://stackoverflow.com/questions/11987761/how-to-find-date-wise-history-of-linux-commands-being-fired – codeforester

+0

感謝您的回覆,我已經在.bash_profile上輸入此條目,並正確顯示日期和時間。但無法取出執行這些命令的用戶的IP地址。 在.bash_profile中 出口HISTTIMEFORMAT = 「%C:」 下方輸入代碼 輸出是: 星期六2017年11月4日上午06時24分35秒+03:歷史 我需要輸出: –

回答

0

雖然你可以通過設置HISTTIMEFORMAT打開時間戳在Bash的歷史,你不能爲歷史文件的每一行添加字符串前綴。你可以使用DEBUG陷阱來實現自己的目標,以維護自己的歷史文件:

save_history() { 
    # make sure IP is set in .bash_profile instead of capturing it each time here 
    printf '%s : %s : %s\n' "$(date)" "$IP" "$BASH_COMMAND" >> /path/to/history_file 
} 

trap save_history DEBUG 

這樣,save_history函數獲取每個命令之前調用,它記錄的命令歷史記錄在一個文件中。


參見:

+0

您好@codeforester 感謝您的回答,但我不太明白。 請提供確切的步驟來完成這個輸出來找出IP,使用歷史命令的日期。 再次感謝。 :) –

+0

使用'ss'和'grep'的組合來提取IP。並明白,SO不是免費的代碼寫作服務。你需要付出努力。 – codeforester

相關問題