您好,登錄后才能下訂單哦!
本篇內容主要講解“怎么用日志記錄Linux用戶執行的每一條命令”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么用日志記錄Linux用戶執行的每一條命令”吧!
工作中,需要把用戶執行的每一個命令都記錄下來,并發送到日志服務器的需求,為此我做了一個簡單的解決方案。這個方案會在每個用戶退出登錄時,把用戶所執行的每一個命令都發送給日志守護進程rsyslogd,你也可通過配置“/etc/rsyslog.conf”進一步將日志發送給日志服務器。
# vi /etc/profile #設置history格式 export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`who am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`] " #記錄shell執行的每一條命令 export PROMPT_COMMAND='\ if [ -z "$OLD_PWD" ];then export OLD_PWD=$PWD; fi; if [ ! -z "$LAST_CMD" ] && [ "$(history 1)" != "$LAST_CMD" ]; then logger -t `whoami`_shell_cmd "[$OLD_PWD]$(history 1)"; fi ; export LAST_CMD="$(history 1)"; export OLD_PWD=$PWD;'
***步:全局設置(這是一次性設置,需要root用戶權限)
命令# vi /etc/profile
#用戶登錄時執行此腳本 #設置history顯示格式 export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`who am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`] " #登錄時清空當前緩存 echo "" > .bash_history
第二步:不同用戶分別設置
命令# source /etc/profile
命令# vi /home/user1/.bash_logout
#當用戶退出登錄時會執行此腳本 tmpfile="/tmp/`whoami`_history.tmp" #把格式化的history記錄到文件里 history > $tmpfile #讀取文件,一行一行把文件內容發送到給syslogd。 #不要試圖用"history | logger"或"logger -f $tmpfile"來替代下面的代碼,否則將只能記錄前200行。 k=1 while read line; do ((k++)) logger -t `whoami`_shell_cmd "$line" done < $tmpfile rm -f $tmpfile
(如果還有其它用戶需要監控,則重復第二步驟)
第三步:把日志發送給遠程主機(可選)
# vi /etc/rsyslog.conf #增加如下行,IP自己換,也可以用域名,@表示用UDP協議,@@表示用TCP協議 *.* @192.168.0.1
不足之處:
1. 不能實時記錄命令并發送log
2. 要記錄終端桌面下的命令需要重啟。
到此,相信大家對“怎么用日志記錄Linux用戶執行的每一條命令”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。