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

很多系统在夜间都有数据批量处理需求,出于安全的角度考虑,可能会在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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值