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