位置: 编程技术 - 正文
推荐整理分享Linux中将执行过的命令记录到日志并发送到服务器的方法(linux 执行结果写到文件),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:linux执行go,linux执行go,linux 执行,linux将执行后的结果存放到文件,linux将执行后的结果存放到文件,linux 执行,linux将执行后的结果存放到文件,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"来替代下面的代码,#否则将只能记录前行。k=1while read line; do((k++))logger -t `whoami`_shell_cmd "$line" done < $tmpfilerm -f $tmpfile(如果还有其它用户需要监控,则重复第二步骤)第三步:把日志发送给远程主机(可选)复制代码代码如下:# vi /etc/rsyslog.conf #增加如下行,IP自己换,也可以用域名,@表示用UDP协议,@@表示用TCP协议 *.* @..0.1 不足之处:1. 不能实时记录命令并发送log2. 要记录终端桌面下的命令需要重启。=========
Linux系统下查看网络接口数据信息的命令总结 监视网络接口TCP状态信息数据有多种工具或命令。下面举例一些:nstat命令复制代码代码如下:#nstat#kernelIpInReceives.0IpInDelivers.0IpOutRequests
Linux系统下强大的lsof命令使用宝典 lsof命令简介:lsof(listopenfiles)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据
Linux系统中查杀僵尸进程的基本方法讲解 在UNIX系统中,一个进程结束了,但是他的父进程没有等待(调用wait/waitpid)他,那么他将变成一个僵尸进程.在fork()/execve()过程中,假设子进程结束时父进程仍
标签: linux 执行结果写到文件
本文链接地址:https://www.jiuchutong.com/biancheng/353430.html 转载请保留说明!友情链接: 武汉网站建设