免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8283 | 回复: 3
打印 上一主题 下一主题

[文本处理] 怎样能在shell脚本中实现不出现用户密码明文的情况下连接sqlplus [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-05-22 18:54 |只看该作者 |倒序浏览
各位好,最近碰到一个问题 单位要求所有shell脚本中不能出现数据库用户和密码的原文,原来连接sqlplus一直用的明文,
请问下如何能实现在不出现明文的状况下顺利连上sqlplus。
原脚本如下:
user=cux
pass=srcbcw
server=PROD
file_date=`sqlplus -s $user/$pass@$server <<EOF
set echo off
set verify off
set head off
set feedback off
select to_char(sysdate,'yyyymmdd')+1  from  dual;
EOF`
file_date=`echo "1 "$file_date awk| '{print $2}'`
echo $file_date

其中user=cux 为用户pass=srcbcw为密码 请问下如何能让其不现实明文又能顺利登陆sqlplus的
初学者 基本问题请多多指导

论坛徽章:
0
2 [报告]
发表于 2015-05-25 09:03 |只看该作者
我也有类似的问题,我的操作系统是AIX6版本,数据库为DB2,脚本中需连接数据库进行操作,导致数据库用户和密码都暴露在文件中,虽然有权限控制,但是当权限因维护需要放开的时候密码就可能会被泄漏。
在网上搜索了一番,发现在LINUX下可以通过vi给文件加密,但是如果是脚本文件的话就不能执行了,AIX下好像需要安装工具软件进行文件加密。
如何将密码屏蔽仍在摸索中,也请大神帮忙

论坛徽章:
0
3 [报告]
发表于 2015-05-27 03:18 |只看该作者
其实最重要是保护好文件的权限。确定权限没问题后,你可以用base64:
pass_encrypted = cGFzc3dvcmQK
pass_plain = `echo $pass_encrypted|base64 --decode`
当然你也可以用AES+盐。这两个方法只是security through obscurity而已,最安全的方法是你先手动输入密码,hash它(加盐),再把它存储到内存里。每次重启服务器你都要输入。

论坛徽章:
2
2015亚冠之德黑兰石油
日期:2015-05-26 13:52:28程序设计版块每日发帖之星
日期:2015-06-09 22:20:00
4 [报告]
发表于 2015-05-27 12:40 |只看该作者
回复 1# wind5306


    你的需求应该是对明文进行加密,这个不清楚怎么解决。
    但可不可以在每次执行时输入用户名密码?
    使用 read -p "Enter password: " -s; 可以在将隐藏密码的输入,并存储于 REPLY 变量中,
    虽然依旧是明文,但只要设置好变量的作用域,在“历史记录”中还是“显示”中都不会出现密码内容。

    我一般是用这种方法配合 expect 进行批量在不同服务器上执行命令。包括对数据库进行操作
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP