#!/usr/bin/env bash

###############################
# 脚本名称 : userManager.sh #
# 脚本功能 : 账号管理 #
# 脚本参数 : 无 #
# 创建时间 : 2019-07-25 #
# 作 者 : Mr.Guo #
# 版 本 : v1.0 #
############################### # 提示信息 []<-()
note_message(){
cat <<EOF
--------用户管理程序-----------
1.创建用户
2.删除用户
3.锁定用户
4.解锁用户
5.退出脚本
EOF
} # 创建账户 []<-(user:string,passwd:string)
create_user(){
user="$1"
pwd="$2" useradd "$user" # 添加账户
echo "$pwd" | passwd --stdin "$user" # 设置密码 if [[ "$?" == 0 ]];
then
echo "用户已经创建成功"
exit
fi
} # 删除账户 []<-(user:string)
delete_user(){
user="$1" userdel "$user" # 删除用户 if [[ "$?" == 0 ]];
then
echo "已经删除${user}用户"
fi
} # 锁定账户 []<-(user:string)
lock_user(){
user="$1"
STAT=$(passwd -S "$user" | awk '{print $2}') if [[ "$STAT" == "PS" ]];
then
passwd -l "$user"
fi if [[ "$STAT" == "LK" ]];
then
echo "用户 $user 已经锁定"
exit
fi
} # 解锁账户 []<-(user:string)
unlock_user(){
user="$1"
STAT=$(passwd -S "$user" | awk '{print $2}') if [[ "$STAT" == "LK" ]];
then
passwd -u "$user"
fi if [[ "$STAT" == "PS" ]];
then
echo "已解锁账户 $user"
exit
fi
} # 退出脚本 []<-()
exit_script(){
read -p "是否退出脚本(yes)" tu if [[ "$tu" == "yes" ]];
then
exit
fi
} # 主函数 []<-()
main(){
note_message # 提示信息 read -p "请输入操作选择(1-5):" sn case "$sn" in
1)
read -p "请输入需要创建的用户名:" uname
read -p "请给该账户设置一个密码:" passwd
create_user "$uname" "$passwd"
;;
2)
read -p "请输入需要删除的用户名:" uname
delete_user "$uname"
;;
3)
read -p "请输入需要锁定的用户名:" uname
lock_user "$uname"
;;
4)
read -p "请输入需要解锁的用户名:" uname
unlock_user "$uname"
;;
5)
printf "退出脚本\n"
exit_script
;;
esac
} # 函数运行
main

  

shell脚本之用户管理的更多相关文章

  1. Android随笔之——用shell脚本模拟用户按键、触摸操作

    之前写过两篇关于Android中模拟用户操作的博客(其实用一篇是转载的),现在就来讲讲用shell脚本来模拟用户按键操作.本次的目标是用shell脚本打开微信并在其搜索框中搜索相关内容. 本文的模拟功 ...

  2. shell复习笔记----用户管理

    $ who    可以知道系统上有多少登陆 $who |wc -l 计算用户个数 注意:|是管道符号,可以在两个程序之间建立管道(pipeline):who 的输出,成了 wc 的输入, wc 所列出 ...

  3. 使用shell脚本添加用户

    该文演示如何使用shell脚本完成添加用户,首先进行一个判断,如果用户存在,提示该用户已经存在,否则进行添加新的用户. 示例代码如下: #!/bin/bash grep_user() { R=`gre ...

  4. Shell 脚本处理用户输入

    传递参数 跟踪参数 移动变量 处理选项 将选项标准化 获得用户的输入 bash shell提供了一些不同的方法来从用户处获取数据,包括命令行参数(添加在命令后数据),命令行选项(可以修改命令行为的单个 ...

  5. Shell脚本实现用户数据导入

    #输入:固定格式的用户数据user.sql #处理:循环读取user.sql中的每行(每行对应一条用户数据),依次调用curl命令将用户插入BearyChat #输出:执行结果输出到日志文件outlo ...

  6. 《怎样实现通过shell脚本将用户踢出系统》

    下面是一个将用户踢出系统的脚本: #!/bin/bashread -p "input your username " userps aux | grep "^$user& ...

  7. 使用shell脚本监控用户登陆服务器并发送提示信息给微信

    1.需要在/etc/ssh/目录下面创建一个名为sshrc的文件,执行权限可给可不给,那么在有人通过ssh远程登录这台服务器的时候,这段脚本就会被执行 #!/bin/bash ###V1---### ...

  8. shell学习之用户管理和文件属性

    1.组和用户的添加 添加组: groupadd [-g gid [-o]] [-r] [-f] group 示例: groupadd -g testgoup1 #添加组testgroup1,同时指定g ...

  9. 编写SHELL脚本--判断用户的参数

    测试语句格式: [ 条件表达式 ] 常见的几种形式: [ -d /etc ]  判断/etc是不是一个目录类型, [ -e /etc/php.ini ] 判断/etc/php.ini 文件是否存在 [ ...

随机推荐

  1. 【多线程】LinkedTransferQueue

    LinkedTransferQueue是JDK1.7才添加的阻塞队列,基于链表实现的FIFO无界阻塞队列,是ConcurrentLinkedQueue(循环CAS+volatile 实现的wait-f ...

  2. Linq 使用Startswith 出现空引用的问题

    一.问题 我使用的是Entity Fromwork CodeFirst来操作数据库,昨天在使用startswith查询数据的时候发现一个问题,就是经常一直报空引用的错误,查了很久才找到原因,这里做一个 ...

  3. <自动化测试>之<Selenium API 的用法1>

    今天,简单,举例说一下在用python+selenium中元素定位的主要方法,第一部分是单个元素的操作,第二部分是一类元素的操作,实际操作中注意区分 #!/usr/bin/env python # - ...

  4. MFC不同窗口之间传递数据

    问题的由来: 最近在学习串口通信编程,参考的例子大多数都是在一个对话框中同时完成对串口的配置及数据收发的功能.这种方式不太适合于写自己的应用程序(会使得程序界面比较混乱,无法突出程序的重点),因此想让 ...

  5. AcWing 225. 矩阵幂求和 (矩阵快速幂+分治)打卡

    题目:https://www.acwing.com/problem/content/227/ 题意:给你n,k,m,然后输入一个n阶矩阵A,让你求  S=A+A^2+A^3.+......+A^k 思 ...

  6. Java的传值调用

    (本文非引战或diss,只是说出自己的理解,欢迎摆正心态观看或探讨) 引子 之所以写这篇文章是因为前些天写了一篇<Java中真的只有值传递么?>探讨了网上关于Java只有值传递的说法,当时 ...

  7. windows10下安装Mysql 5.6(zip格式安装包)

    5.6的安装包是一个zip文件,里面包含了data(有表空间文件和日志文件),bin等文件夹.不同于以往的只需要双击安装.msi就行了.因此,在此记录下安装包是.zip时的安装步骤. 1下载 进htt ...

  8. 极限IO优化

    namespace IO{ #define BUF_SIZE 100000 #define OUT_SIZE 100000 #define ll long long //fread->read ...

  9. 【C#技术】一篇文章搞掂:Infragistics组件库

    工具栏 // 按钮不可按 tool.SharedProps.Enabled = false; Grid // Grid中记录时间 // 建议SQL Server中使用字符字段(没有深入测试,只是字符字 ...

  10. 【Java架构:基础技术】一篇文章搞掂:MyBatis

    本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新). 本文主要总结于刘增辉的<MyBatisc从入门到精通>一书,有兴趣的朋友可以自行研读 建议仔细研读官方文档: http ...