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" ]; thenrm -f $log_file
fiif [ "$#" -gt 0 ]; thenfor user in "$@"douid=`uuidgen | sed 's/-//g'`user_name=$useruser_name_zh=$useradd_userdone
elseecho "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 ]; thenis_exist_db=`check_user_db`if [ "x$is_exist_db" = "x" ]; theninsertDBif [ $? == 0 ]; thenmsg="Add user $user_name success!"elsemsg="Add user $user_name error!"fielsemsg="The user $user_name is exist in DB:test, table:USER!"fiwrite_log "$msg"echo "$msg"elsemsg="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; thenecho "0"elseecho "-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/bashfunction write_log(){echo `date` " :$1" >> $log_file
}function check_user_os(){if id -u $user_name > /dev/null 2>&1; thenecho "0"elseecho "-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 ]; thenis_exist_db=`check_user_db`if [ "x$is_exist_db" = "x" ]; theninsertDBif [ $? == 0 ]; thenmsg="Add user $user_name success!"elsemsg="Add user $user_name error!"fielsemsg="The user $user_name is exist in DB:test:USER!"fiwrite_log "$msg"echo "$msg"elsemsg="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" ]; thenrm -f $log_file
fiif [ "$#" -gt 0 ]; thenfor user in "$@"douid=`uuidgen | sed 's/-//g'`user_name=$useruser_name_zh=$useradd_userdone
elseecho "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$iuseradd -d /apps/users/$_username $_usernameechoecho $_passwd | passwd --stdin $_usernamei=$(( $i + 1 ))
done

shell脚本操作数据库插入数据相关推荐

  1. shell脚本获取mysql插入数据自增长id的值

    shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...

  2. linux mysql 写shell_Linux—编写shell脚本操作数据库执行sql

    修改数据库数据 在升级应用时,我们常常会遇到升级数据库的问题,这就涉及到sql脚本的编写. 一般我们会通过写sql脚本,然后将xxx.sql脚本放到数据库中进行source xxx.sql执行.本篇文 ...

  3. Linux—编写shell脚本操作数据库执行sql

    修改数据库数据   在升级应用时,我们常常会遇到升级数据库的问题,这就涉及到sql脚本的编写.   一般我们会通过写sql脚本,然后将xxx.sql脚本放到数据库中进行source xxx.sql执行 ...

  4. 用shell脚本给mysql插入数据_shell脚本向mysql表批量插入数据

    如何使用shell向mysql数据库表中插入大量测试数据. 用shell脚本通过while循环批量生成mysql测试数据的方法,根据自己的表结构来生成sql语句即可. 代码: 复制代码 代码示例: # ...

  5. 解决用Python 操作数据库插入数据,数据库里面却没有数据的问题

    最近在做项目时需要连接数据库进行测试,于是需要先把Excel数据导入到数据库里面去,Python 操作sql server数据库的代码大致如下(操作mysql 代码和这个差不多,只是包和连接信息的不同 ...

  6. 用shell脚本给mysql插入数据_mysql下通过shell脚本插入数据

    一.创建数据库及表 建立数据库create database dic character set utf8; 建表CREATE TABLE `dic` ( `id` int(22) unsigned  ...

  7. 在Linux中通过shell脚本向oracle数据库插入数据

    通过shell脚本向oracle数据库插入数据 思路 实现 shell脚本 数据文件 测试 思路 如何通过shell脚本更新数据库数据?要解决这个问题,首先,我们需要在脑中回忆一下我们通常是如何更新数 ...

  8. C#如何操作Oracle并向数据库插入数据

    今天在做一个功能,在C#中连接数据库并向数据库插入数据.现在总结起来很简单. 1.首先添加微软的DLL--System.Data.OracleClient.dll,注意这里可能会提示此DLL过时,别怕 ...

  9. mongo数据库插入数据_深入研究Mongo数据库

    mongo数据库插入数据 More popularly known as "mongoDB". It is a no-sql based database. 俗称" mo ...

最新文章

  1. 将您重定向的次数过多什么意思_电池循环次数是什么意思?怎么计算的?
  2. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车按键启动和蜂鸣器报警
  3. 【Splay】文艺平衡树(金牌导航 Splay-2)
  4. php 判断页面加载完,所有ajax执行完且页面加载完判断
  5. java jdbc 增删改封装_JAVA JDBC 常规增删改查简单封装
  6. 天梯赛L2-010 排座位(并查集和\set)
  7. 多个命令执行结果输出到同一个文件(批处理)
  8. OpenCV3 install tutorial for Mac
  9. 阿里云ddns解决动态IP问题
  10. linux学习第四课:命令格式和目录处理命令
  11. webpack配置路径及hash版本号,利用html-webpack-plugin自动生成html模板
  12. 斐讯k3cfe刷lede_斐讯 K3 A1 刷机经历
  13. android oppo 驱动,OPPO R9驱动安装不了怎么办 OPPO R9驱动安装不了的解决方法
  14. HBase CURD之Put
  15. 如何使用xbrowser图形化连接centos
  16. python基于opencv的手势识别_求python opencv 手势识别源代码
  17. 2-Arduino小车测速模板安装与测试
  18. Codeforces Global Round 2 B. Alyona and a Narrow Fridge
  19. 展会客流统计的客流统计系统,WiFi客流每时每客
  20. twitter php_php调用twitter api

热门文章

  1. ubuntu修复启动引导
  2. 目标检测算法——3D公共数据集汇总(附下载链接)
  3. linux好多命令用不了,linux系统所有命令突然用不了的解决方法
  4. ModelSim+Debussy联调
  5. Android机型适配之软键盘和输入法
  6. mongo按季度统计_小米三季度全球手机出货量达4660万部,超五成收入来自境外
  7. 人工智能导论课堂笔记
  8. 136wm打印机无线安装流程
  9. python光学仿真之菲涅耳公式
  10. HTTP使用 multipart/form-data 上传多个字段(包括文件字节流 octet-stream)