shell脚本操作数据库插入数据

shell脚本实现添加用户


主方法:定义变量,调用函数。

shell中的特殊变量

$#:脚本输入参数的个数
$? 上个命令的退出状态,或函数的返回值
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID
$0:当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2
$@:脚本输入的所有参数
$* 传递给脚本或函数的所有参数

$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" “)包含时,都以”$1" “ 2 " … " 2" … " 2""n” 的形式输出所有参数。
但是当它们被双引号(" “)包含时,”$*" 会将所有的参数作为一个整体,以"$1 $2 … n " 的 形 式 输 出 所 有 参 数 ; " n"的形式输出所有参数;" n""@" 会将各个>参数分开,以"$1" “ 2 " … " 2" … " 2""n” 的形式输出所有参数。

#------------------------------Main--------------------------------
basePath=`pwd`
log_file=${basePath}/add_user.log
db_name="test"
#This role_id is admin.
role_id="402880cd5f1a685f015f1a6969500017"
secret_level="0"
#1:can login.2:can not.
state="1"
user_name=""
user_name_zh=""

if [ -f "$log_file" ]; then
    rm -f $log_file
fi

if [ "$#" -gt 0 ]; then
    for user in "$@"
    do
        uid=`uuidgen | sed 's/-//g'`
        user_name=$user
        user_name_zh=$user
        add_user
    done
else
    echo "Usage: sh add_user.sh user1 user2 user3 ..."
    exit -1
fi

添加用户
首先判断操作系统是否存在此用户,若不存在,则报错。若存在,则检查数据库中是否存在此用户,若数据库中存在,则提示数据库已经存在此用户,若数据库不存在则插入数据库。

function add_user(){
    is_exist_os=`check_user_os`
    if [ "$is_exist_os" == 0 ]; then
        is_exist_db=`check_user_db`
        if [ "x$is_exist_db" = "x" ]; then
            insertDB
            if [ $? == 0 ]; then
                msg="Add user $user_name success!"
            else
                msg="Add user $user_name error!"
            fi
        else
            msg="The user $user_name is exist in DB:test, table:USER!"
        fi
        write_log "$msg"
        echo "$msg"
    else
        msg="The user $user_name is not exist in OS!"
        write_log "$msg"
        echo "$msg"
    fi
}

判断用户是否存在于操作系统

function check_user_os(){
    if id -u $user_name > /dev/null 2>&1; then
        echo "0"
    else
        echo "-1"
    fi
}

判断用户是否存在于DB
通过查询数据表来进行判断

function check_user_db(){
    id=`select_user_db`
    echo $id
}

查询数据表中是否存在用户

function select_user_db(){
mysql $db_name <<EOF
select ID from USER where USER_NAME='$user_name';
EOF
}

插入用户,并赋予权限

EOF是END Of File的缩写,表示自定义终止符.既然自定义,那么EOF就不是固定的,可以随意设置别名,在linux按ctrl-d就代表EOF.
EOF一般会配合cat能够多行文本输出.
其用法如下:
<<EOF //开始

EOF //结束
还可以自定义,比如自定义:
<<BBB //开始

BBB //结束

function insertDB(){
mysql $db_name << EOF
insert into USER values('$uid', null, $secret_level, $state, '$user_name', '$user_name_zh');
insert into USER_ROLE values('$uid', '$role_id');
EOF
}

打印日志

function write_log(){
    echo `date` " :$1" >> $log_file
}

完整代码

#!/bin/bash

function write_log(){
    echo `date` " :$1" >> $log_file
}

function check_user_os(){
    if id -u $user_name > /dev/null 2>&1; then
        echo "0"
    else
        echo "-1"
    fi
}

function select_user_db(){
mysql $db_name <<EOF
select ID from USER where USER_NAME='$user_name';
EOF
}

function check_user_db(){
    id=`select_user_db`
    echo $id
}

function add_user(){
    is_exist_os=`check_user_os`
    if [ "$is_exist_os" == 0 ]; then
        is_exist_db=`check_user_db`
	if [ "x$is_exist_db" = "x" ]; then
            insertDB
            if [ $? == 0 ]; then
                msg="Add user $user_name success!"
            else
                msg="Add user $user_name error!"
            fi
        else
            msg="The user $user_name is exist in DB:test:USER!"
        fi
        write_log "$msg"
        echo "$msg"
    else
        msg="The user $user_name is not exist in OS!"
        write_log "$msg"
        echo "$msg"
    fi
}

#if mysql db has a password, use this command.
#mysql -utest -ptest test
function insertDB(){
mysql $db_name << EOF
insert into USER values('$uid', null, $secret_level, $state, '$user_name', '$user_name_zh');
insert into USER_ROLE values('$uid', '$role_id');
EOF
}

#------------------------------Main--------------------------------
basePath=`pwd`
log_file=${basePath}/add_user.log
db_name="test"
#This role_id is admin.
role_id="402880cd5f1a685f015f1a6969500017"
secret_level="0"
#1:can login.2:can not.
state="1"
user_name=""
user_name_zh=""

if [ -f "$log_file" ]; then
    rm -f $log_file
fi

if [ "$#" -gt 0 ]; then
    for user in "$@"
    do
        uid=`uuidgen | sed 's/-//g'`
        user_name=$user
        user_name_zh=$user
        add_user
    done
else
    echo "Usage: sh add_user.sh user1 user2 user3 ..."
    exit -1
fi

赋:批量创建linux用户

#!/bin/bash

_name=user
_passwd=111111
i=1
while [ $i -lt 10 ]; do
    _username=$_name$i
    useradd -d /apps/users/$_username $_username
    echo
    echo $_passwd | passwd --stdin $_username
    i=$(( $i + 1 ))
done
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值