Linux服務器記錄並查詢歷史操作記錄


Linux服務器在使用過程中,經常會有除自己之外的其他人員使用。並不是每個人都對Linux服務器特別熟悉,難免會有一些操作導致服務器報錯。

因此,監控Linux服務器的操作並記錄下來,是非常有必要的!

history是查詢當前連接所操作的命令,通過編寫以下內容添加至/etc/profile的原有內容之后,將每個連接的操作都進行記錄,並保存在特定位置。

vi /etc/profile

添加內容如下:

#history record
history
RQ=`date "+%Y%m%d"`
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
if [ ! -d /tmp/record ]
then
mkdir /tmp/record
chmod 777 /tmp/record
fi
if [ ! -d /tmp/record/${LOGNAME}/${RQ} ]
then
mkdir -p /tmp/record/${LOGNAME}/${RQ}
chmod 300 /tmp/record/${LOGNAME}/${RQ}
fi
export HISTSIZE=8192
SJ=`date "+%H:%M:%S"`
export HISTFILE="/tmp/record/${LOGNAME}/${RQ}/${USER_IP}@${LOGNAME}.$SJ"
chmod 600 /tmp/record/${LOGNAME}/*record* 2>/dev/null

然后保存並退出,執行以下命令,使得編寫的配置生效。

source /etc/profile

將操作記錄保存在/tmp/record/用戶名/日期/登錄IP@用戶名.時間,
例如:/tmp/record/root/20170801/192.168.108.140@root.16:02:41

歷史操作命令已經記錄在上述文件中,可以直接查看。

但是為了查詢方便,可以再編寫一個查詢的腳本。使用root用戶登錄,創建bin文件夾,命令如下:

mkdir /root/bin

創建查詢腳本record:

vi /root/bin/record

添加以下內容:

#!/bin/sh
user=${LOGNAME}
time=`date +%Y%m%d`
ip=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`

while [ $# -gt 0 ]
do
        case $1 in
        -u|--user) user=$2;
                   shift 2;
                   ;;
        -t|--time) time=$2;
                   shift 2;
                   ;;
        -p|--ip)  ip=$2;
                   shift 2;
                   ;;
        -l|--list)
                  export HISTFILE="/tmp/record/$user/$time";
                  echo $HISTFILE;
                  ls $HISTFILE;
                  exit 0;
                  ;;
        *)
                echo "usage: record [ -u|-t|-p|-t| --user|--time|--ip|--list]
                -u --user:      username;
                -t --time:      The date required to query;
                -p --ip:        Query the IP ;
                -l --list:      Show the list of record files.
        Notice:
                -l --list:      This parameter must be used as the last parameter,
                                and only the display of the file path,
                                not the file contents."
                exit 0;
     ;;
 esac
done

export HISTFILE="/tmp/record/$user/$time"
echo Path: $HISTFILE/ | tr -d '\n'
ls $HISTFILE | grep $ip
#export RecordFile="$HISTFILE/$ip*"
#echo Contents:
#cat $RecordFile

保存並退出,使用root用戶在任意目錄下面都可以使用record命令進行查詢歷史操作記錄。
注:只有當連接退出之后,才會保存操作記錄。不指定參數的話,會使用當前連接的默認參數!

具體參數使用情況如下:

 

默認查詢(查詢當前用戶,當前IP的歷史連接的操作記錄)

record

將執行相應命令顯示出來文件,進行打開,即可查看。(此處我已進行修改,除了l或者list參數以外,可以自動展示出來歷史記錄。由於歷史操作太多,暫時進行注釋。)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM