2014年7月14日学习笔记--scriptreplay相关操作

简介:
2014-07-14 17:31:41.019 Mint 相关知识(OK)

记录有关Linux mint 17 cinn v2的相关知识
====================
环境条件记录:
--------------------------

No LSB modules are available.
Distributor ID:    LinuxMint
Description:    Linux Mint 17 Qiana
Release:    17
Codename:    qiana
-------------------------

Linux dx2708 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:31:42 UTC 2014 i686 i686 i686 GNU/Linux
---======================================

一、Shell脚本:实时监控用户操作
(来源自:http://zhumeng8337797.blog.163.com/blog/static/100768914201223112754115/)
二、在你的Ubuntu上安装开源简洁强大的集成开发环境——Brackets
(来源于:http://muzi.info/2014/2040/install-brackets-on-your-ubuntu.html)
三、安装nginx
(来源于:http://muzi.info/2014/1756/how-to-install-nginx-1-6-0-on-ubuntu-linux-mint.html)

========================================
一、Shell脚本:实时监控用户操作

    引言
群里面有个朋友提了这样的两个问题,
1、如何看到系统中的用户什么时间对密码进行了修改
2、如何知道某个用户,什么时间登录过系统,什么时间退出系统,在这段时间做了哪些操作。
第一个脚本是写出来了,但是通过history来监控的,可是这个history又不是实时的,只有在用户退出后才记录内容,而且,这个文件用户可以对其手术,所以不太完美。
关于第二个问题,想不到一个可行的办法,就在网上找资料,无意中发现一个好东东——用scritp可以记录用户的操作,相当于录像一样。是不是很适合我们开头的两个问题的解决方案。于是就有了下面的文章。

分析方案
1、我们要监控用户的情况,当然root用户就排除在外了,毕竟这个是我们自己。
2、系统的用户无需监控
3、所监控的用户操作写入一个日志
4、写入系统中的profile
5、测试效果

实施方案
    我们要在系统的profile文件中增加下面的内容
    #记录所有用户的操作记录,排除系统中的用户和root用户
    if [ $UID -ge 500 ]; then
            exec /usr/bin/script -a -f -q /var/log/$USER-$UID-`date +%Y%m%d%H%M`.log
      fi
    
    关于记录的文件内容,可以用下面三种方法来查看
    cat yufei-500-201104141312.log
      head -n -1 yufei-500-201104141312.log
      tail -n +1 yufei-500-201104141312.log

    上面的方式存在一个缺点,就是不能记录到交互的内容(实际上是记录了,只是我们看不到),那么我们可以通过script的scriptreplay对操作进行回放,这样,就对用户的操作一览无遗了。
如果要使用scriptreplay的回放功能,需要跟时间结合,所以需要使用-t进行记录时间。
vi /etc/profile
修改为下面的内容:
if [ $UID -ge 500 ]; then
       exec /usr/bin/script -t 2>/var/log/$USER-$UID-`date +%Y%m%d%H%M`.date  -a -f -q /var/log/$USER-$UID-`date +%Y%m%d%H%M`.log
fi

这时候就保存了时间和记录文件,我们就可以通过scriptreplay来查看用户的一举一动了。
scriptreplay的格式是
scriptreplay 时间文件 记录文件

   scriptreplay yufei-500-201104141336.date yufei-500-201104141336.log

延伸阅读
一般来说,script和scriptreplay在Linux发行版中都有默认安装。 以上两个命令都属于Linux产品util-linux软件包的一部分,有些linux发行版有script命令但没有scriptreplay命令,scriptreplay命令其实就是一个perl脚本(这意味着录制下的内容在windows也能播放(只要是一个支持ANSI控制码的终端就能再现,cmd下有些乱码)
  
A、安装util-linux工具包(以Tarball编译)

#wget ftp://ftp.kernel.org/pub/linux/utils/util-linux/util-linux-2.12r.tar.bz2
#tar xjvf util-linux-2.12r.tar     
#cd util-linux-2.12r
#./configure && make && make install       #这一步我做的时候发现可以略掉。因为scriptreplay是个perl脚本可直接用
cp util-linux-2.12r/misc-utils/scriptreplay.pl /usr/bin/scriptreplay
# chmod 755 /usr/bin/scriptreplay

注:主要用做提取scriptreplay.pl

B、使用方法:

录制会话: 
script -t 2> tutorial.timing -a tutorial.session

会话和时序分别保存到两个文件。通过这两个文件,你可以使用scriptreplay播放录制的终端会话。该指令中的 -t 选项指明输出录制的时间数据, -t 2>example.time   -t是把时间数据输出到标准错误(standard error)所以我们使用 2>example.time 把数据转向到 example.time这个文件当中。而 -a 选项则输出录制的文件。你可以将指令中的 tutorial换成自己设置的名称。当终端中返回“Script started, file is demo.session”的信息时,你就可以进行需要录制的操作了。

执行此命令后开始在后台记录,将结果保存到指定文件,直至输入exit退出。 若不指定保存文件名(没有-a选项),默认将保存到当前目录下的typescript文件。 若增加-q选项,则以静默模式运行,即开始或结束录制时不显示提示信息。若使用的增加-a选项,文件名已存在的情况下可以以追加的方式保存记录结果。使用cat可以查看录制的结果文件,但是vi编辑器中的操作可能无法显示,需要借助scriptreplay播放查看。

输入'exit'结束录制。

播放会话:
scriptreplay tutorial.timing tutorial.session

会话和时序文件都是可读的,如果不需要播放,只需:

srcipt -a tutorial.txt

注:使用script时,不要使用交互式程序或处理窗口的程序,如vior top。它们会破坏会话的输出结果。

C、一些实例

c1、使用script工具记录输出到当前终端的信息

script /tmp/scr.rec
 
c2、使用script记录终端信息的同时记录时间信息(需结合标准错误输出)

script -t 2> scr.rec.time -a scr.rec
 
c3、使用scriptreplay播放带时间控制的script记录内容

scriptreplay scr.rec.time scr.rec        #//若省略第2个参数,则默认查找typescript文件

c4、通过script实现远程用户交流

前提大家远程连到同一台机器上

mkfifo /tmp/scriptout    #定义个命名管道 
script -f /tmp/scriptout  #然后把你的script输出指向到定义的命名管道
cat /tmp/scriptout #连接到的终端里面的其它用户可通过查看此命名管道看到你在终端上的操作


c5、用脚本实现单文件录制和播放

通常需要播放都必须要两个文件(会话和时序),这个脚本实现了只产生一个文件,录制和播放都比较方便。

录制:

./script.sh -r

播放:

./script.sh -p
==========================
二、在你的Ubuntu上安装开源简洁强大的集成开发环境——Brackets
     Ubuntu上安装Brackets:

sudo add-apt-repository ppa:webupd8team/brackets
sudo apt-get update
sudo apt-get install brackets
==================================
三、安装nginx
在Ubuntu, Linux Mint上安装Nginx 1.6.0 (同样适用于Pinguy OS, LXLE)。

$ sudo add-apt-repository ppa:nginx/stable
$ sudo apt-get update
$ sudo apt-get install nginx

卸载Nginx

$ sudo apt-get remove nginx

附加:
    .bashrc 
    alias fnl='ls -lrth'

    xtime=`date +"%Y%m%d%H%M"`

本文转自孤舟夜航之家博客51CTO博客,原文链接http://blog.51cto.com/cysky/1438094如需转载请自行联系原作者


cysky

相关文章
|
SQL 分布式计算 NoSQL
Spark 操作 kudu -- 增加,删除,修改,查询操作 | 学习笔记
快速学习 Spark 操作 kudu -- 增加,删除,修改,查询操作
1607 0
Spark 操作 kudu -- 增加,删除,修改,查询操作 | 学习笔记
|
5月前
|
SQL 数据库
`UPDATE FROM` 的语法以及常见的更新操作方式
`UPDATE FROM` 的语法以及常见的更新操作方式
1000 2
|
关系型数据库 MySQL 数据库
数据的修改与更新:探究MySQL中的UPDATE操作
在数据库管理中,修改已存在的数据是一项常见任务,"UPDATE"语句正是用于实现这一目标的命令。通过UPDATE操作,我们可以对数据库中的现有数据进行修改。
263 0
|
关系型数据库 MySQL 数据库
数据的移除与删除:探究MySQL中的DELETE操作
在数据库管理中,删除不再需要的数据是一项重要任务,"DELETE"语句正是用于实现这一目标的命令。通过DELETE操作,我们可以从数据库表中移除数据记录。
472 0
|
XML 存储 JSON
学习笔记--个人记录
学习笔记--个人记录
|
SQL Java 数据库连接
JDBC学习(十一):使用QueryRunner实现update操作
JDBC学习(十一):使用QueryRunner实现update操作
205 0
|
XML Shell 调度
Apache Ooie--实战操作-定时调度任务|学习笔记
快速学习 Apache Ooie--实战操作-定时调度任务
Apache Ooie--实战操作-定时调度任务|学习笔记
|
NoSQL Redis 开发者
通用指令-db其他操作| 学习笔记
快速学习通用指令-db其他操作
通用指令-db其他操作| 学习笔记
|
NoSQL 程序员 数据库
通用指令-db基本操作 | 学习笔记
快速学习通用指令-db基本操作
通用指令-db基本操作 | 学习笔记
|
编译器 Linux C语言
深入理解++和 -- 操作
深入理解++和 -- 操作