国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Linux中將執行過的命令記錄到日志并發送到服務器的方法

2020-07-10 11:13:01
字體:
來源:轉載
供稿:網友

工作中,需要把用戶執行的每一個命令都記錄下來,并發送到日志服務器的需求,為此我做了一個簡單的解決方案。這個方案會在每個用戶退出登錄 時把用戶所執行的每一個命令都發送給日志守護進程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. 要記錄終端桌面下的命令需要重啟。
=========

20151218113647294.png (914×409)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 旌德县| 宾川县| 阳高县| 马鞍山市| 通渭县| 公安县| 金秀| 明溪县| 当雄县| 河源市| 芦山县| 西安市| 贵德县| 南江县| 本溪市| 商都县| 宁都县| 嘉祥县| 娱乐| 石泉县| 武隆县| 手机| 东台市| 民勤县| 罗源县| 满洲里市| 襄汾县| 慈利县| 徐闻县| 宜州市| 安龙县| 剑河县| 宿松县| 潞城市| 漾濞| 饶阳县| 左贡县| 新乐市| 万全县| 闸北区| 邵武市|