现在的位置: 首页 > 综合 > 正文

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

2013年12月02日 ⁄ 综合 ⁄ 共 963字 ⁄ 字号 评论关闭

很多系统在夜间都有数据批量处理需求,出于安全的角度考虑,可能会在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 -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

抱歉!评论已关闭.