知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

恢复--系统配置表的shell

发布时间:2014-09-05 14:46:49作者:知识屋

恢复--系统配置表的shell
 
配置用户名密码文件report.ini
user1/pswd1@dbname1
user2/pswd2@dbname2
配置系统表文件configtable.ini
user1.table1
user2.table2
user3.table3
 
脚本backup.sh
一次读取配置文件,并做验证,如果密码错误则进行修改,将每个用户的配置表进行导入
备份文件包的名称由用户输入
 
#!/usr/bin/ksh
 
dmpfilepath='./'
connfile=report.ini
configtable=configtable.ini
DT=$1
while [ ! -r ${dmpfilepath}${DT}.*.dmp ]
do
    if [ -n "$DT" ]
    then
        ll -rt ${dmpfilepath}*.dmp | tail -20
    fi
    echo "Please input dmp's basename:/c"
    read DT
done
 
 
#检查连接串正确性
checkconn()
{
if [ "$#" -ne 1 ]
then
echo "-1"
exit
fi
 
 
    VALUE=`sqlplus -s /nolog <<EOF
    set head off
    conn $dbconn
    select 1 from dual;
    exit
    EOF`
    echo $VALUE
}
#将密码写入配置文件
modipswd()
{
if [ "$#" -ne 2 ]
then
echo "-1"
exit
fi
 
 
    user=`echo $1 | cut -d/ -f1`
    dbnm=`echo $1 | cut -d@ -f2`
    newconn=`echo $dbconn | sed 's///////////g`
    cat $2 | sed "/^$user//.*@$dbnm/s/^.*$/$newconn/g" >temp$$
    mv temp$$ $connfile
}
 
 
#读取配置文件
for dbuser in `cat $configtable | sed -e "s/^ *//g" -e "s//..*//g" | sort | uniq `
do
    v_time=0
    dbconn=`cat $connfile | grep "^ *$dbuser/"`
    checkconn_flg=$(checkconn $dbconn)
    while [ "$checkconn_flg" != "1" -a $v_time -lt 3 ]
    do
        v_time=`expr $v_time + 1`
        stty -echo
        echo $dbuser'@'`echo $dbconn | cut -d@ -f2` password is error," please input new password:/c"
        read newpswd
        echo ''
        dbconn=$dbuser'/'$newpswd'@'`echo $dbconn | cut -d@ -f2`
        stty echo
        checkconn_flg=$(checkconn $dbconn)
        if [ "$checkconn_flg" = "1" ]
        then
            modipswd $dbconn $connfile
            break
        fi
    done
    alltab=''
    #读取配置表
    cat $configtable | grep "^ *$dbuser." |
    while read dbtab
    do
        alltab=$alltab,`echo $dbtab | cut -d. -f2`
        VALUE=`sqlplus -s /nolog <<EOF
        set head off
        conn $dbconn
        truncate table $dbtab;
        exit
        EOF`
    done
    alltab=`echo $alltab | cut -c2-`
    if [ -n "$alltab" ]
    then
        echo :$alltab:
        imp $dbconn file=${dmpfilepath}${DT}.$dbuser.dmp ignore=y
    fi
 
done
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜