点击上方"Java学习之道",选择"关注"公众号 每天10:24,干货准时送达! ![]() “ 感受过被监控的恐惧吗?” 今天看到一个超级叼的linux命令,可以完整记录屏幕上的命令与输出结果。 有人问这有什么叼的,不就是保存历史操作记录吗?我看看日志也能看出来。 不不不,我要说的“完整记录”包括第几秒执行什么命令,就像真的有人在操作一样!放视屏一样的播放出来,还可以调整播放速度,放慢、加快、想调几倍速就调几倍速! 比开通了会员还爽好吗! 更爽的是自己的服务器,谁想登陆操作直接就被监视起来,一举一动看的清清楚楚,是不是很过瘾!! 一般来说,这次用到的 script 和 scriptreplay 两个命令在 Linux 发行版中都有默认安装。录播屏幕操作 录制 script -t 2>time.file -a scriptfile 执行完这个命令,接下来的任何操作都会被记录。 其中的 time.file 是时序记录文件,记录了几秒执行的命令;scriptfile 是命令执行记录文件,记录下执行是哪些命令,这两个文件名称都可以自定义。加上 -q, - -quiet 参数可以使script命令以静默模式运行,不显示script启动和exit的命令,用户可以完全察觉不到在录屏。像这样: script -q -t 2>time.file -a scriptfile 要停下来,只用按下按下组合键 Ctrl+D 结束录制,执行exit 命令也行。$ exit 有录制就有播放,就像录视频一样,执行下面这个命令即可,时序文件在前,命令文件在后 scriptreplay time.file scriptfile 添加这个参数 -d, –divisor number 可以调整播放速度的倍数(可以是小数:放慢)。scriptfile 文件记录了我每间隔1秒执行一个date命令的操作,现在加速10倍来播放看看效果(可惜有的版本scriptreplay 命令没有-d 这个参数):![]() 同步演示 -f, - -flush 每次操作后都立即刷新缓存。如果不设置这个选项,则不会实时写入文件,这个功能使用端: script -f demo 演示端: scriptreplay -f demo 但是很遗憾,可能因为版本问题,我的 scriptreplay 没有-f 参数。没关系,因为实时写入文件里的,我们拿出平时看日志常用的 tail -f 命令,直接在演示端tail -f demo 即可![]() 录制脚本执行过程 参数 -c, - -command 可以直接执行命令,而非是交互式的shell,可以直接传入一个脚本,像这样:$ script -qa "file.out" -c "/root/hello.sh" 但是我觉得这个功能有点鸡肋,只能记录下输出不能记录执行了哪些命令和咸鱼有什么区别? 不要谎,那让我们来感受点牛逼的。 自动触发监控用户登陆的操作与实时监控 有时候某个人偷偷远程访问了你的系统,或者运维人员远程操作了一些东西,我们可以设置自动记录下这个人在系统上做了什么事情,是谁闯的祸,该谁背的锅,一目了然! 这个时候就只要让 script 命令在登录时自动运行,我们可以把它添加进shell环境配置文件中。这样在出现什么误操作之后,就可以在排查的时候查到历史记录。 对开机启动项的其他几种方式感兴趣的朋友可见 --> 我的服务器怎么老这么慢,难道说是被挖矿了?。 mkdir -p /var/log/user_record vi /etc/profile 在文件末尾追加 # 添加登陆时自动记录 在这里我已经提前添加到脚本里了,后边是监控端,见演示 ![]() 畅想几个场景:
(完) --End- 喜欢本文的朋友们,欢迎扫码关注订阅号Java学习之道,收看更多精彩内容! 一 起 ![]() 努力吧! ![]() ![]() ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:Java学习之道,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |