今天看到一个超级叼的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"
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

在这里我已经提前添加到脚本里了,后边是监控端,见演示

畅想几个场景:

  1. 通过录制终端记录,来制作一个命令行技巧视频
  2. 直接分享几十k的记录文件给朋友,就可以让好友体验到站在你旁边看你操作的感觉
  3. 大神来面前帮忙,这时候根本来不及打开录屏软件,还容易遭大神的反感;一顿操作猛如虎,菜鸟什么都记不住好吗(哭唧唧)。但有了这个工具,一秒开启记录,回去慢慢看呗,还能慢放,多爽。
  4. 完整记录脚本的执行步骤与输出,没有什么比完整输出的脚本更能排查操作,特别是不能debug的shell。
  5. 监控登陆用户的一举一动,再也不怕找不到人背锅了,但是自己的锅也就甩不出去了,发现自己的锅千万别告诉别人!
  6. 什么?你还想用这个来监听输入的密码?

你的一举一动,我可都看着!Linux超骚技巧三分钟Get的更多相关文章

  1. 写给自己看的Linux运维基础(三) - Mono

    如果使用ubuntu,可使用apg-get安装完mono,xsp,mod_mono,我的yum源并没有找到mono可安装,网上也没找到CentOS的源,最后选择下载编译安装. Stackoverflo ...

  2. 小学生都看得懂的C语言入门(1): 基础/判别/循环

    c基础入门, 小学生也可以都看得懂!!!! 安装一个编译器, 这方面我不太懂, 安装了DEV-C++  ,体积不大,30M左右吧, 感觉挺好用,初学者够了. 介绍下DEV 的快键键: 恢复 Ctrl+ ...

  3. 月薪3万的python程序员都看了这本书

    想必大家都看过吧 Python编程从入门到实践 全书共有20章,书中的简介如下: 本书旨在让你尽快学会 Python ,以便能够编写能正确运行的程序 —— 游戏.数据可视化和 Web 应用程序,同时掌 ...

  4. 手撕redis分布式锁,隔壁张小帅都看懂了!

    前言 上一篇老猫和小伙伴们分享了为什么要使用分布式锁以及分布式锁的实现思路原理,目前我们主要采用第三方的组件作为分布式锁的工具.上一篇运用了Mysql中的select ...for update实现了 ...

  5. 任何时候都适用的20个C++技巧

    这些小技巧之所以特别,是因为这些信息通常吧不能在C++书籍或者网站上找到.比如说,成员指针,即使对于高级程序员也是比较棘手,和易于产生bugs的,是应该尽量避免的问题之一. <翻 by凌云健笔& ...

  6. PCB设计中新手和老手都适用的七个基本技巧和策略

    本文将讨论新手和老手都适用的七个基本(而且重要的)技巧和策略.只要在设计过程中对这些技巧多加注意,就能减少设计回炉次数.设计时间和总体诊断难点. 技巧一:注重研究制造方法和代工厂化学处理过程 在这个无 ...

  7. 演进之美,越来越美:三分钟看尽 iOS 1 ~ iOS 8 的进化史

    演进之美,越来越美:三分钟看尽 iOS 1 ~ iOS 8 的进化史 原文出处: 少数派 9 月 18 日苹果就将推出 iOS 8 正式版了,从 2007 年发布第一代 iPhone 时搭载在 iPh ...

  8. 一篇文章看清楚 Linux 的职业发展方向

    手机.汽车.甚至宇宙飞船,在今天的科技世界中,你几乎到处都能看到 Linux 的身影.前两天 SpaceX 成功将宇航员送入太空的猎鹰9号火箭与龙飞船用的也是 Linux的操作系统.身处与 Linux ...

  9. 对于挑战书上的很久之前都看不懂的DP看懂的突破

    突破一..牢记问题概念 并且牢记dp状态方程 突破二..一直有一个求和dp转化成O1dp递推的式子看不懂.. 看不懂的原因是..没有分清求和符号作用的范围 提醒:以后遇到求和符号一定明确其求和的式子的 ...

随机推荐

  1. linux下RAR和ZIP安装和使用

    服务器没装rar,对于上传是压缩的文件来说,是个很大的问题. 源码安装rar: 1. 下载: wget http://www.rarlab.com/rar/rarlinux-x64-4.2.0.tar ...

  2. DSL查询与过滤

    1. 什么是DSL查询 由ES提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂.强大的查询. DSL(Domain Specific Language特定领域语言)以 ...

  3. 【IDEA使用技巧】(4) —— IDEA 构建Java Maven项目、导入Eclipse项目、多Module Maven项目

    1.IntelliJ IDEA构建Java Maven项目 1.1. IDEA构建Java Maven项目 ①选择Create New Project,选择创建Maven项目,并勾选Create fr ...

  4. Js学习04--对象

    1.如何辨别js中的对象 除了五种基本的数据类型,其他的都是对象.万物皆对象. 2.Js中对象的分类 1)内建对象 由ES标准定义的对象,在任何的ES实现中都可以使用. eg:String.Numbe ...

  5. (三)pdf的构成之文件头综述

    引自:https://blog.csdn.net/steve_cui/article/details/81981943 一般情况下,文件头,即,PDF文件的第一行,它用来定义PDF的版本,从而确定该P ...

  6. Luogu4240 毒瘤之神的考验 莫比乌斯反演、根号分治

    传送门 首先有\(\varphi(ij) = \frac{\varphi(i) \varphi(j) \gcd(i,j)}{\varphi(\gcd(i,j))}\),把欧拉函数的定义式代入即可证明 ...

  7. IdentityServer4:发布环境的数字签名证书

    一,jwt的三个组成部件 先来看一个由IdentityServer颁发的一个标准令牌 eyJhbGciOiJSUzI1NiIsImtpZCI6IjBiNTE3ZjIzYWY0OGM4ZjkyZjExM ...

  8. JavaScript 自己写一个 replaceAll() 函数

    JavaScript 的  replace()  方法可以在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 但是,只输入字符串的话,仅替换第一个字符,当然也可以用正则表达式来进行 ...

  9. Vue的11个生命周期函数的用法

    实例的生命周期函数(官方11个):beforeCreate:在实例部分(事件/生命周期)初始化完成之后调用.created:在完成外部的注入/双向的绑定等的初始化之后调用.beforeMount:在页 ...

  10. 74.js---移动端文章的瀑布流的实现。

    移动端文章的瀑布流的实现.   1.首先在前端html页面已经通过PHP代码循环完全数据.  2.然后在js先全部隐藏,通过判断滑动到底部,每次加载一部分数据,直到数据全部显示完全. js代码: // ...