我曾在一家保险公司做驻场维护时,入职第四天,由于数据库(DB2)要定期变更密码,上级要我更新应用程序、SQL脚本、SHELL脚本等中所涉及的密码,并一再强调,必须保证变更后第二天全国业务部门可以正常使用我们的核心系统。给了我3天时间写准备方案与实施计划。由于之前的脚本、SQL等非常的多、且尚不知哪些中有,哪些中无,也不清楚各应用程序的配置文件、脚本等所在的位置,脑袋顿时大了!但忽然间我想到了一种简单的方法,众多脚本、配置文件中的密码只是用于DB2连接,没有别的含义,而且是个明文,我最多只需要20分钟就可以搞定了。哈哈,3天,可以偷个懒啦。以下是我曾经的工作文档,共享给大家。(懒的手打了),如有更好的办法,请大家批评指正。本想用sed -i参数直接修改,但AIX系统自带sed版本没有-i参数................ 唉

2011年11月17日21点,核心数据库变更密码,密码变更涉及各核心服务器与人险服务器。由于所涉及的配置文件、脚本、SQL比较多,需要提前对文件进行过滤、准备好更改的脚本(只针对cisys用户)

1:查找cisys用户下所有文件及子文件夹内的所有文件,过滤出原密码内容,将内容生成一个新文件

find /home/cisys ! -name "find.txt" -type f -prune|xargs grep xxxxx > ./find.txt &

2:整理文件内的过滤内容,删除.tar结尾及一些重复的过滤出的文件。

3:更改脚本如下:

#!/bin/ksh
for i in `awk '{print $0}' find.txt`
do
cp ${i} ${i}_$(date +%F)
vi ${i} < ./xx.conf 1 >/dev/null 2>/dev/null
done

 

 xx.conf的内容: :%s/xxxx/xxxxx/g

                  :wq

  4:每个服务器一次执行前2步,然后上传脚本,赋予权限。准备在相应时刻执行。

  5:人险服务器需要修改其连接池,及XML。先更改XML,启动weblogic中间件再修改连接池。

 

注:find 查找指定路径后重定向的文件,由于没有权限只能放在家目录下。此时xargs仍会过滤到此文件,因此需要不查找过滤出来的文件,故 !-name "" -prune就派上用场了。ksh下date +%F =  linux bsh下的 date +%Y%m%d  .以vi 读取替换命令,并循环打开文件的方式很笨拙。因为AIX5.3中sed版本过低,不支持-i选项 ,所以只好如此。vi 后的重定向不是必须的,此种方式会报错,但实际已经完成替换,故只好把标准错误重定向给了 /dev/null  ,输出由于不想看到满屏幕的滚动,所以也重定向给了/dev/null.