您的位置:首页 > 数据库 > Oracle

Shell程序校验OS和Oracle用户名密码

2008-05-17 14:31 330 查看
很多系统在夜间都有数据批量处理需求,出于安全的角度考虑,可能会在shell程序中再次OS和数据库用户名密码的需求,这里使用Oracle数据库。

需要使用两个文件,一个是oracle中可以执行的sql脚本desctable.sql,另一个是校验脚本checkdbuser.sh

此shell程序在IBM AIX5 上测试通过,注意执行用户的环境变量中需添加ORACLE需要的环境变量

desctable.sql


desc user_table; --可执行的sql语句,为了不影响速度,使用一个简单的列出table结构,user_table为要检查的用户中的表


quit;

checkdbuser.sh


#!/bin/ksh


#校验OS用户密码


check_os_user()




...{


su - $LOGNAME -c 2>/dev/null


if [ $? == 0 ]


then


echo "密码正确,程序继续进行"


else


echo "密码错误,不能进行批处理操作"


exit 0


fi


}




#校验DB用户密码


check_db_user()




...{




b=`sqlplus $...{DBUSER}/$...{DBPASS} < desctable.sql | grep ERROR`


if [ $? == 0 ]


then


return 1 #数据库用户密码错误


else


return 0


fi


}




# 此shell程序从这里开始


if [ $# != 2 ]


then


echo "参数个数错误,请指定数据库用户名密码,请按照下列格式输入"


echo "如:$0 db_user db_passwd "


exit 1


fi




#数据库用户名密码变量赋值


DBUSER=$1


DBPASS=$2




#检查用户密码是否正确,防止系统未退出时恶意操作


echo "请输入操作用户密码: "


check_os_user




#检查数据库用户密码是否正确


check_db_user


if [ $? == 0 ]


then


echo "数据库用户密码正确"


else


echo "数据库用户密码错误,按回车退出"


fi




echo "测试结束"


read any


exit 0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: