History- Linux下定製個性化history記錄

highhand發表於2021-09-09

導語

作為Linux管理員,在出現問題的時候,有時候想反查過去某段時間內 那個使用者在什麼時間執行過什麼命令。這個時候就需要用到Linux下面的history功能


說明

作為管理員,希望能將所有的history記錄儲存自己方便控制的運維主機上面方便同意管理和查閱,不同主機的記錄按主機ip分目錄存放

管理員可以查閱所有的,但是普通使用者只允許建立查閱屬於自己的history記錄我呢見


指令碼

#!/usr/bin/env bash 
currentip=$(/usr/sbin/ifconfig |grep 'inet ' |grep -v '127.0.0.1' |awk '{print $2}')
historyPath="/devOps/backup/history/"## 不同主機的記錄按IP建立不同的目錄存放if [ ! -d ${historyPath}${currentip} ] 
then
    mkdir -p ${historyPath}${currentip}
    chmod -R 777 ${historyPath}${currentip}
    chmod a+t ${historyPath}${currentip}fi## history setting ## 區分管理root和普通使用者,普通使用者只讀if [ $UID -ge 500 ]then
    readonly HISTFILE=${historyPath}${currentip}/$USER-$UID.log
    readonly HISTFILESIZE=50000    readonly HISTSIZE=10000    readonly HISTTIMEFORMAT="%F %T `who am i |awk '{print $1}'` `whoami` "
    readonly HISTCONTROL=ignoredups    shopt -s histappend    readonly PROMPT_COMMAND="history -a"else
    HISTFILE=${historyPath}${currentip}/$USER-$UID.log
    HISTFILESIZE=50000
    HISTSIZE=10000
    HISTTIMEFORMAT="%F %T `who am i |awk '{print $1}'` `whoami` "
    HISTCONTROL=ignoredups    shopt -s histappend
    PROMPT_COMMAND="history -a"fi

實際效果

 1588  2016-09-12 11:23:09 root root tail -f /usr/local/tomcat/logs/dataLog/define.log  |grep MasterBGirlSayHiBoy
 1589  2016-09-12 11:38:00 root root cat /usr/local/tomcat/logs/dataLog/define.log  |grep sendTopicMsg
 1590  2016-09-12 11:39:22 root root cat /usr/local/tomcat/logs/dataLog/define.log  |grep sendTopicMsg |grep '"billing":"2"'
 1591  2016-09-12 11:39:26 root root cat /usr/local/tomcat/logs/dataLog/define.log  |grep sendTopicMsg |grep '"billing":"5"'
 1592  2016-09-12 11:59:27 root root cat /etc/profile.d/history.sh

附加知識點

who am i && whoami



作者:全棧運維
連結:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/810/viewspace-2805748/,如需轉載,請註明出處,否則將追究法律責任。

相關文章