环境:CentOS7

一、为什么要学习script命令

当你在终端或控制台上工作时,你想记录下自己做了些什么吗?当你跟一些Linux管理员同时在系统上干活,你想知道别人干了什么吗?当你让别人远程到你的服务器,帮你解决问题时,你想学习别人的经验吗?当你怀疑你的同事时,你想监控他干了什么吗?或者想实现学生作业的完成证明,两人远程或者说异台电脑的同步指导操作, 那么,你就可以使用script命令。
 

二、 什么是script命令

script 是一个神奇命令,可以使用script工具记录用户在当前终端的所有的操作,已经输出到屏幕的内容。将这些信息保存到指定的文本文件中。  也就是说,script命令在你需要记录或者存档终端活动时可能很有用,记录文件会存储为文本文件,所以可以很方便地用文本编辑器打开。 在使用script命令将终端的会话过程录制下来之后,可以使用 scriptreplay将其录制的结果播放给他人观看。 script 的好处就在于你在终端中的所有操作、敲过的命令和打印出的结果它都可以原原本本地进行录制。可以应用于教学、演示、审计。
 

三、script命令的基本用法操作

选项:

-a, --append            附加输出

-c, --command <command> 运行命令而不是交互式shell

-e, --return            返回子进程的退出代码

-f, --flush             每次写入后运行flush--force             使用输出文件,即使它是一个链接

-q, --quiet             可以使script命令以静默模式运行-t, --timing[=<file>]   指明输出录制的时间数据

-V, --version           输出版本信息并退出

-h, --help

显示此帮助并退出终端会话录制。

script -t 2>demo.time -a demo.his   #开始录像,ctrl+d或者exit结束2>  完整输出demo.time 对时间线的记录demo.his  对操作命令等内容的记录scriptreplay demo.time demo.his

四、实例,玩转script

1.情景一:自己想记录自己输入的命令,用于教学或者想实现学生作业的完成证明

##开始录像,直接输入命令回车就好,其中-t用于存储时序文件,这里导入到stderr,再重定向到test.time中,-q表示静默的方式,-a追加到test.his中,-f除了看视频回放还可以看日志,主要用于教学

##注意事项:必须是以exit 和ctrl+d结束,不然就会破坏时间线的记录,那只能看日志记录

[root@uplooking /tmp/liu]# script -t 2>test.time -q -a -f test.his

##回放视频,通过ls可以查看有两个文件

[root@uplooking /tmp/liu]# ls
test.his  test.time

##回放视频,test.time 对时间线的记录,test.his  对操作命令等内容的记录,而且这两个文件很小,可以拷贝到需要播放的机器上进行播放。

[root@uplooking /tmp/liu]# scriptreplay test.time test.his

##也可以查看日志记录

[root@uplooking /tmp/liu]# cat test.his

2.情景二:想知道你的同事在做什么

##在对方家目录.bash_profile文件中加上下面内容,有些人会说我可以看他家目录的.history文件啊,但注意这个文件只要不是正常下线的都不会记录,而且只能看命令,不能看命令输出结果,就是回显

##变量是定义文件存放的位置和每次时间,并且只要他一登陆就会自动录像,exec就是防止他发现kill掉自己的进程,只要kill掉,他的终端就会掉线

m_path1=/data/mon/`date +%F-%H:%M`.time
m_path2=/data/mon/`date +%F-%H:%M`.his
exec script -t 2>$m_path1 -a -f -q $m_path2

3.情景三:我想实现想监控谁就监控谁,不想监控就取消,那说的就是下面这个脚本啦

#!/bin/bash
## 描述:可以对某个用户实施录像,并且回放,可以实施进行教学
## 作者:小刘
## 联系方式:xiaoli@qq.com
## TEL:13777773695
## 版本:V_1.0
## 注意录制视频时,时间不要太长,不然内存和磁盘占用空间大
read -p "请输入你要录像的用户:" user
##判断用户是否存在,如果不存在则退出
id $user &>/dev/null
if [ $? -ne 0 ]
then
echo "$user不存在"
exit 1
fi
##判断用户是否已经被录像
m_user(){
path="/home/$user/.bash_profile"
num=`cat $path |grep '\<script\>' |wc -l`
if [ $num -eq 1 ]
then
echo "$user已经被录像"
exit
fi
}
##对用户实施录像
m_mon(){
path="/home/$user/.bash_profile"
chattr +a $path
echo "m_path1=/data/mon/\`date +%F-%H:%M\`.time" >>$path
echo "m_path2=/data/mon/\`date +%F-%H:%M\`.his" >>$path
echo "script -t 2>\$m_path1 -a -f -q \$m_path2" >> $path
echo "正在实施录像....."
}
##取消录像
m_cancael(){
path="/home/$user/.bash_profile"
chattr -a $path
sed -i '/\<script\>/{d}' $path
sed -i '/\<m_path1\>/{d}' $path
sed -i '/\<m_path2\>/{d}' $path
sed -i '/\<'$user'\>/{d}' /root/mon_user.txt
echo "正在实施取消录像....."
read -p "实施录像请按:y 取消录像请按:n 查询被录像用户请按q:" yes
case $yes in
y)
m_user
m_mon
echo "$user" >> /root/mon_user.txt
;;
n)
m_cancael
;;
q)
cat /root/mon_user.txt
;;
*)
echo "error:input error"
exit 1
esac

  

script学习,如何用linux监控你的同事?的更多相关文章

  1. Linux如何用脚本监控Oracle发送警告日志ORA-报错发送邮件

    Linux如何用脚本监控Oracle发送警告日志ORA-报错发送邮件 前言 公司有购买的监控软件北塔系统监控,由于购买的版权中只包含了有限台数据库服务器的监控,所以只监控了比较重要的几台服务器. 后边 ...

  2. 【不积跬步,无以致千里】五个常用的Linux监控脚本代码

    为大家提供五个常用Linux监控脚本(查看主机网卡流量.系统状况监控.监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告.监控CPU和内存的使用情况.全方位监控主机),有需要的朋友不妨看 ...

  3. 学习笔记之Linux / Shell / QSHELL

    shell(计算机壳层)_百度百科 http://baike.baidu.com/subview/849/15831672.htm Shell (computing) - Wikipedia, the ...

  4. 几个常用的Linux监控脚本

    几个常用的Linux监控脚本 几个常用的Linux监控脚本下面是几个主机监控的脚本,大家可以根据自己的情况再进行修改,希望能给大家一点帮助.1.查看主机网卡流量#!/bin/bash#network# ...

  5. Linux监控平台搭建

    Linux监控平台介绍 zabbix监控介绍 zabbix监控流程图 安装zabbix 准备两台主机: zabbix服务端:192.168.133.88 zabbix客户端:192.168.133.6 ...

  6. 请不要重复犯我在学习Python和Linux系统上的错误

    本人已经在运维行业工作了将近十年,我最早接触Linux是在大二的样子,那时候只追求易懂,所以就选择了Ubuntu作为学习.使用的对象,它简单.易用.好操作.界面绚丽,对于想接触Linux的新手来说是非 ...

  7. Linux学习心得之 Linux下命令行Android开发环境的搭建

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...

  8. Linux学习心得之 Linux下ant安装与使用

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下ant安装与使用 1. 前言2. ant安装3. 简单的a ...

  9. IT技术学习指导之Linux系统入门的4个阶段(纯干货带图)

    IT技术学习指导之Linux系统入门的4个阶段(纯干货带图) 全世界60%的人都在使用Linux.几乎没有人没有受到Linux系统的"恩惠",我们享受的大量服务(包括网页服务.聊天 ...

随机推荐

  1. 解决tomcat控制台乱码+清除过期缓存条目后可用空间仍不足 - 请考虑增加缓存的最大空间问题

    一.乱码 1.打开Tomcat的目录,找到conf文件夹,一般修改server.xml中的编码集,改为utf-8即可 2.若server.xml中编码设置的就是utf-8,可以修改logging.pr ...

  2. select * from a,b探讨

    select * from a,b探讨 今天看同事代码里使用了select * from a,b where a.id=b.id,而我平时都是使用select * from a inner join ...

  3. 详解 @MapperScan 注解和 @Mapper 注解

    实际上,这是一个非常简单的问题.我并没有一口回绝他,让他去百度.因为,新人都会经历这个过程.好不容易,问你一次,你直接让他百度,会打击到他的.而且,别人会觉得你摆架子. @Mapper 这个注解的定义 ...

  4. Netty入门 零基础

    因为接下来的项目要用到netty,所以就了解一下这个程序,奈何网上的教程都是稍微有点基础的,所以,就写一篇对于netty零基础的,顺便也记录一下. 先扔几个参考学习的网页: netty 官方API:  ...

  5. python 中pip配置清华源

    anaconda配置镜像 Mac and Linux conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda ...

  6. 【Winfrom-Button】 重写Button,去掉获取焦点时的边框

    Winfrom Button 去掉获取焦点时的边框: 自定义一个Button,重写ShowFocusCues方法 /// <summary> /// 去掉获取焦点的边框 /// </ ...

  7. python创建文件夹方法

    def mkdir(path): # 引入模块 import os # 去除首位空格 path = path.strip() # 去除尾部 \ 符号 path = path.rstrip(" ...

  8. 「HEOI2014」大工程

    问题分析 首先不难想到是虚树.建完虚树需要保持节点间原先的距离关系. 然后总距离和最小距离用树形DP求,最大距离用两遍dfs即可.注意统计的时候只对关键点进行统计. 真是麻烦 参考程序 ac的时候是l ...

  9. 「UVA12293」 Box Game

    题目链接 戳我 \(Solution\) 这道题第一眼看样例,猜了个结论偶数\(Alice\)赢,否则\(Bob\)赢,打了一发,交了上去果不其然的\(wa\)了,第二次猜\(2\)的幂次方\(Ali ...

  10. Leetcode题目22.括号生成(动态规划-中等)

    题目描述: 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", "( ...