需求场景:
类似于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测试监听端口是否开放
(好的今天就分享到这里,如果您有高见或好的分享,记得留言哦!)