• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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系统怎么调整swap分区大小?
    下一篇:Linux系统下查看网络接口数据信息的命令总结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Linux中将执行过的命令记录到日志并发送到服务器的方法 Linux,中将,执,行过,的,命令,