一个自动纪录登陆Server后的操作的scripts, 对DBA/SA 应该有借鉴之处……
上一篇 /
下一篇 2006-09-19 00:00:00
/ 个人分类:My Oracle Article
在实际的服务器/数据库管理当中,我们都要求管理员要很小心,并且在很多重要操作规范中都会有这样的要求:
保留操作纪录
出于对 保留操作纪录 的这样的要求,我写了一个script, 可用于自动纪录每个login 的session 所作的多数动作……
其实说起来也很简单,就是利用了 Unix/Linux 里的一个基本的命令,script , 达到纪录的目的
代码:
SCRIPT(1) BSD General Commands Manual SCRIPT(1)
NAME
script - make typescript of terminal session
SYNOPSIS
script [-a] [-f] [-q] [-t] [file]
DESCRIPTION
Script makes a typescript of everything printed on your terminal. It is
useful for students who need a hardcopy record of an interactive session
as proof of an assignment, as the typescript file can be printed out
later with lpr(1).
我所作的工作就是
1。在登陆时自动运行script 命令
2。同时纪录登陆时间
3。同时纪录登陆IP
4。压缩记录文件以节省空间
下面就是 具体的script
代码:
#!/bin/ksh
# 先创建保存纪录的目录,根据需要,可以放在指定的目录
if [ ! -d $HOME/login_history ];then
mkdir $HOME/login_history
fi
# 判断login的IP 或者hostname
FROM_HOST=`who am i|awk -F"(" '{print $2}'|awk -F")" '{print $1}'`
# 如果来自同一机器,就不重复记录了
HOSTNAME=`hostname`
if [ "$HOSTNAME" == "$FROM_HOST" -o "$FROM_HOST" == "" ] ; then
echo ' '
else
#定义文件名,里面包含登陆的时间 YYYYMMDD HH24MISS ,以及登陆的IP/hostname
SCRIPT_LOG=$HOME/login_history/`date +%y%m%d-%H%M%S-`$FROM_HOST.log
script $SCRIPT_LOG
#当用户退出该session时,自动压缩文件,并提示文件名,以供参考
echo compress you SCRIPT_LOG:$SCRIPT_LOG
compress $SCRIPT_LOG
sleep 3
exit
fi
...
保存script,并在需要纪录的用户的profile 的最后一行执行这个script 就可以了……
在我的实际工作中,管理十几台Oracle Database, 通常看数据库状态,查询数据库信息等的操作,可以通过客户端的GUI, 用只读账号进行连接。而只要有任何改动的动作,都会先telnet 到一台已经配置“自动保留操作纪录”的server 上,然后通过sqlplus 连接到相应的DB,或者再次telnet到相应的DB server上作操作,从而达到任何一个改动都有据可查的目的……
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG: