主方法:定义变量,调用函数。 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 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 添加用户 首先判断操作系统是否存在此用户,若不存在,则报错。若存在,则检查数据库中是否存在此用户,若数据库中存在,则提示数据库已经存在此用户,若数据库不存在则插入数据库。 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 } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 判断用户是否存在于操作系统 function check_user_os(){ if id -u $user_name > /dev/null 2>&1; then echo "0" else echo "-1" fi } 1 2 3 4 5 6 7 判断用户是否存在于DB 通过查询数据表来进行判断 function check_user_db(){ id=`select_user_db` echo $id } 1 2 3 4 查询数据表中是否存在用户 function select_user_db(){ mysql $db_name <<EOF select ID from USER where USER_NAME='$user_name'; EOF } 1 2 3 4 5 插入用户,并赋予权限 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 } 1 2 3 4 5 6 打印日志 function write_log(){ echo `date` " :$1" >> $log_file } 1 2 3 完整代码 #!/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 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 赋:批量创建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 |
|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )
GMT+8, 2024-9-20 02:42 , Processed in 0.022538 second(s), 17 queries .
Powered by Discuz! X3.5
© 2001-2024 Discuz! Team.