今天看到一个超级叼的linux命令,可以完整记录屏幕上的命令与输出结果。
有人问这有什么叼的,不就是保存历史操作记录吗?我看看日志也能看出来。
录制
script -t 2>time.file -a scriptfilenbvFHJGDVVFVGDXFFGDXFDX被记录。
其中的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"
123
234
345
$ cat file.out
Script started on Fri 28 Jun 2019 07:38:55 PM CST
123
234
345
但是我觉得这个功能有点鸡肋,只能记录下输出不能记录执行了哪些命令和咸鱼有什么区别?
不要谎,那让我们来感受点牛逼的。
自动触发监控用户登陆的操作与实时监控
有时候某个人偷偷远程访问了你的系统,或者运维人员远程操作了一些东西,我们可以设置自动记录下这个人在系统上做了什么事情,是谁闯的祸,该谁背的锅,一目了然!
这个时候就只要让script
命令在登录时自动运行,我们可以把它添加进shell环境配置文件中。
这样在出现什么误操作之后,就可以在排查的时候查到历史记录。
mkdir -p /var/log/user_record
vi /etc/profile
在文件末尾追加
# 添加登陆时自动记录
script -t -f -q 2>/var/log/user_record/$USER-$UID-`date +%Y%m%d%H%M%S`.time -a /var/log/user_record/$USER-$UID-`date +%Y%m%d%H%M%S`.his
if [ "$SHLVL" = 1 ]; then
exit
fi
在这里我已经提前添加到脚本里了,后边是监控端,见演示
畅想几个场景:
-
通过录制终端记录,来制作一个命令行技巧视频 -
直接分享几十k的记录文件给朋友,就可以让好友体验到站在你旁边看你操作的感觉 -
大神来面前帮忙,这时候根本来不及打开录屏软件,还容易遭大神的反感;一顿操作猛如虎,菜鸟什么都记不住好吗(哭唧唧)。但有了这个工具,一秒开启记录,回去慢慢看呗,还能慢放,多爽。 -
完整记录脚本的执行步骤与输出,没有什么比完整输出的脚本更能排查操作,特别是不能debug的shell。 -
监控登陆用户的一举一动,再也不怕找不到人背锅了,但是自己的锅也就甩不出去了,发现自己的锅千万别告诉别人! -
什么?你还想用这个来监听输入的密码?
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !