【linux】shell终端的屏幕录制和远程回放

需求场景:

类似于win桌面的远程和协助,使用linux的道友之间也要相互切磋,但针对shell终端的字符界面如何能够实时共享终端的输出呢?

屏幕录像专家喜欢教学的朋友一定听说或使用过,linux中的字符界面下同样有能够达到类似效果的功能命令:script

需求案例:

首先我们了解一下script这个linux中神奇的命令,它能够将终端的会话过程录制下来,并通过scriptreplay将其录制的结果播放给他人观看,这其中包括shell终端的所有操作、敲过的命令和输出打印的结果,并可以基于时序以播放视频的形式回放,可以很完美的胜任于教学、演示、审计等工作。

script参数:

-t——指明输出录制的时间数据;-f 如果需要在输出到日志文件的同时,也可以查看日志文件的内容;-a 输出录制的文件,在现有内容上追加新的内容;-q 可以使script命令以静默模式运行;

①、script进行录制并播放shell终端的所有操作和输出:

#script -t 2>back.time -a back.data
Script started, file is back.data

script开启录像,-t指定时序,-a指定输出,可用“ctrl + d”和“exit”结束录制;

#scriptreplay back.time back.data

scriptreplay 进行基于时间的回放,注意这里一定要把两个文件都加上,否则无法播放。

当然我们可以使用-f参数,实现在另外一个终端实时同步播放

#mkfifo scriptfifo <-此步骤不可以省略,使用其创建可实时同步的录制文件->
[root@Moni ~]# file scriptinfo 
scriptinfo: fifo (named pipe)
#script -f scriptfifo
Script started, file is scriptfifo
#pwd
/root

然后在另外一个终端2执行如下命令,便可以实时同步观看终端1的相关操作了;

<-这里直接在其它远程终端cat查看即可,注意路径需要正确->
#cat /root/scriptfifo

有时发现不好使,可以先在终端二查看,再在终端一执行script命令!

②、静默模式下对生产服务器上所有人的行为操作做安全审计:

案例一中的方法,录制和播放虽然在不同终端里,但其实都是同一个系统的终端,比如在两地远程同一服务器的终端;

那么如果是正式生产的服务器,让太多的人有登陆的权限未必带有安全隐患,如此我们有了如下需求:

对生产环境的服务器进行多用户访问控制和安全审计,从而记录和查看生产服务器的操作:

首先在每个用户下的profile文件中添加如下内容:

#vim ~/.profile
script -t -f -q 2>/share/$USER-$UID-'date +%Y%m%d%H%M%S'.time -a /share/$USER-$UID-'date +%Y%m%d%H%M%S'.data

这样当某个谁使用某个用户登录时,便会生成一个录制文件,其中“-q”参数为静默执行,也就是无输出的偷偷运行。

但是,当用户执行“exit”或“ctrl + d”时,第一次会停止录制,第二次才会注销用户推出终端,这样难免会引起怀疑,所以我们还需要在上面的命令下添加:

if [ "$SHLVL" = 1 ]; then
   exit
fi

如此只要用户exit或ctrl+d退出,便同时停止录制;

注意由于此配置是针对多用户,所以最好导出目录是所有用户都有写入权限的目录,可以是共享目录或ftp,具体针对分配权限吧!

最后也就是最重要的咯,查看播放:

[audit@Moni:/share]$ls
test1-1001-20171017102105.time  test1-1001-20171017102105.data
[audit@Moni:/share]$scriptreplay test1-1001-20171017102105.time test1-1001-20171017102105.data

恭喜你,尽情的审阅每个人的行为操作吧,当然这是一个很枯燥的工作吧;

③、使用录制功能收集远程设备的日志输出;

这个功能其实也很实用,我们知道,一些网络设备如防火墙交换机等,当我们登陆其终端收集日志做报告,日志文件过大时,我们如果一点点复制是很得不偿失的;

当然如果是win系统,你使用xshell这样的远程工具,事实上都支持录制终端窗口输出的功能的。

那么也可能会遇到大嘴这里说的情况,远程服务器,网络设备只能通过远程的一台跳转机从内部使用console来远程终端控制,跳转机是linux的。

我们便可以通过linux的script来实现收集获取这些设备的日志信息,当然很多设备的日志文件都支持直接下载咯。

方法很简单,只需要在我们远程设备之前,先在跳板机上启用录制功能:

[audit@Moni ~]$script -f firewallback.log
Script started, file is firewallback.log
[audit@moni ~]$ssh admin@192.168.1.1
password:******
[admin@firewall①]#......

通过nc实现linux终端的实时聊天请参考:【linux】netcat测试监听端口是否开放

(好的今天就分享到这里,如果您有高见或好的分享,记得留言哦!)


原创文章,转载请注明:转自于公牛博客

本文链接地址:【linux】shell终端的屏幕录制和远程回放

2
祝福我们的祖国繁荣昌盛
  • 请尽情挥洒您的笔墨!