当我们在linux平台上开发一些项目时,或者有一些项目是需要部署到linux系统上时,有时候会涉及到linux上的特定的账户,例如有一些项目需要运行在某些特定的账户下,或者有时候需要在全新的环境上搭建一些环境(例如:LAMP)linux+apache+mysql+php 时都可能会涉及到需要添加一些账户信息。如果此时用脚本来维护这些account,就会简化一些不必要的操作,大家应该都知道在linux如果手动添加用户都会涉及到一个交互的操作,无论你是用useradd命名或者直接操作/etc/passwd 或 /etc/shadow 文件。那么这里就以用脚本创建FTP账户为例。

1.首先需要检查你创建的账户是否已经存在该系统上,常见的办法是通过解析/etc/passwd文件确定。当然在linux上如果想实现此操作的方式有很多种,这里就以常见命令组合来完成。借助linux上的cat、awk、grep 来实现此步骤,关于这些命令可以查l命令本身帮助文档 用  “命令 --help” 或者是通过 man 的方式 。代码如下(以创建demo_ftp账户为例):

/bin/cat /etc/passwd | /bin/awk -F ':' '{print $(1)}' | /bin/grep -E "^$FTP_USER$"

这里FTP_USER是一个变量,里面存储的是demo_ftp, cat命令是读取整个passwd文件,然后通过管道命令传递给awk命令,这里用-F是以“:”分隔那些信息,因为在paswwd文件的对于每一行的存储格式都是多个单元用"":"链接的。简单的理解就相当于php中explode函数和js中的spilt,其中print $(1) 就是打印第一列信息。然后将第一列信息在传递给grep命令,-E代表可以使用正则表达式,这是就以这个账户开始和结束(唯一确定一个账户)。

2.如果在shell中执行此命令,需要用``(键盘上Esc键下面那个字符)这个符号来把那个命名包装起来,该命名就返回该账户的信息(前提是该账户已经存在),否在返回空。在此可以做一个判断决定是否创建该账户。

3.如果该机器上没有账户就需要创建,创建命令如下:

#create folder if not exist
mkdir -p $FTP_FOLDER;
/bin/chmod 777 -R $FTP_FOLDER;
#create user if not exist
/usr/sbin/useradd -c 'FTP User create by shell' -d $FTP_FOLDER -s /sbin/nologin $FTP_USER >/dev/null 2>&1;
echo $FTP_PASSWORD | /usr/bin/passwd $FTP_USER --stdin >/dev/null 2>&1;    

FTP_FLODER代表了该FTP账户默认对外提供访问的folder,可以用mkdir -p 命名来创建它,如果该folder存在,该命令就不会创建。chmod命令就是给该folder授权,一般情况下不需要这步,除非有特殊需求。接下来的2行命令就是创建账户的核心。其中-c代表描述信息,-d代表该账户对外提供的访问空间,-s 代表了禁用该账户通过SSH登录,后面的 2 > &1 重定向标准输出和错误信息到伪设备中。如果对这个不熟悉可以在网上查找。最后一行就是给该用户创建密码。

到此步骤完了,但然你还可以通过这样一个脚本完成许多对该账户的特殊设置。

下面一张截图关于整个过程:

Linux下通过shell脚本创建账户相关推荐

  1. Linux下的shell脚本实战之用户创建

    Linux下的shell脚本实战之用户创建 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.该脚本提示用户创建用户名和密码 2.判断输入的用户名是 ...

  2. linux下执行shell脚本文件,Linux下使用shell脚本自动执行脚本文件

    搜索热词 以下实例本人在Centos6.5 64位操作系统中使用 一.定时复制文件 a.在/usr/local/wfjb_web_back目录下创建 tomcatBack.sh文件 #将tomcat中 ...

  3. linux下的shell脚本

    linux下的shell脚本 一.Shell概述 二.Shell 解析器 三.Shell脚本入门 1. 脚本格式 2. 第一个Shell脚本:helloworld 3. 第二个Shell脚本:多命令处 ...

  4. linux实现学生信息管理系统,Linux下基于shell脚本实现学生信息管理系统

    LINUX Linux操作系统 Linux下基于shell脚本实现学生信息管理系统 #该管理系统是参考两位博主(时间有点远了,我忘了,请博主看到后联系我)后自行修改添加的.登录过程还有很多不完善,我就 ...

  5. linux下的shell脚本,linux下的shell脚本的使用

    什么是shell? Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户.这种对话方式可是交互 ...

  6. Linux下使用Shell脚本快速创建项目目录模板

    //proj.sh #!/bin/sh #FileName:proj.sh #Function:create project directory quckily #Version:V0.1 #Auth ...

  7. Linux下通过Shell脚本快速进入指定目录

    现在有一个现实的场景: 每一次打开Linux,都是在 目录下: 我最近想练习网络的代码,所以创建了一个目录,路径为: 可以看到,这个路径很长,如果没一次都通过cd /home/admin/linex/ ...

  8. linux中调试脚本,在Linux下调试 Shell 脚本

    在大多数编程语言中都有调试工具可用于调试. 调试工具可以运行需要调试的程序或脚本,使我们可以在运行时检查脚本或程序的内部执行过程. 在shell脚本中我们没有任何调试工具,只能借助命令行选项(-n,- ...

  9. linux 下的shell脚本

    SHELL chsh -l  查看shell 切换 1.临时   直接执行   /bin/sh 2.永久   chsh bash  特点. 1.交互式 2.命令的历史功能 history !+指令编号 ...

最新文章

  1. 怎么利用迭代器写入mysql_流迭代器实现文件操作(读取和写入)方法详解
  2. visual code php,vscode(Visual Studio Code)配置PHP开发环境的方法(已测)_编程开发_软件教程...
  3. iOS Hacker 重签名实现无需越狱注入动态库 dylib
  4. android 调用红外模块,Flutter调用Android模块的功能
  5. layui2.4.0前的table隐藏列
  6. Qt踩坑之打包exe
  7. 线性表顺序表---逆置所有元素
  8. java量_Java 2. 量与常量
  9. 台达伺服驱动器说明书_干货:伺服调机实例讲解
  10. OpenGL入门程序一:绘制简单的矩形
  11. Apache中配置ASP.NET环境
  12. 运筹学常考知识点总结一
  13. Mapreduce中的分区Partitioner
  14. windows下CodeBlocks TMD-GCC安装及配置
  15. ps aux 中的状态说明
  16. 用P3P header解决iframe跨域访问cookie
  17. proteus元件图片_最完整的Proteus元件库元件名称及中英对照表下载
  18. 【scratch案例教学】scratch端午节划龙舟比赛 scratch创意编程 少儿编程 边玩边学过个快乐端午节
  19. Microsoft .NET Framework 4 安装 1603错误的解决
  20. oracle中锁表是什么,oracle锁表查询和解锁方法是什么,oracle锁表和解锁

热门文章

  1. IDEA MAVEN项目打包成jar包的两种简单方式
  2. 饮料代理品牌的选择有多重要?新手应该如何选择?
  3. 用C4D和ePmv/pdb服务器导出FBX文件的正确方法
  4. android主流手机测试,30款主流安卓手机评测结果:三星Note 9评为2018最佳
  5. 哈理工OJ 295 方方正正(判断01矩阵是否合法)
  6. Java PrintWriter类简介说明
  7. python数据处理——将横轴设为时间,两个纵轴为不同单位的图
  8. Cupid - Typecho情侣主题
  9. 自创笔记(全网绝无仅有,持续更新)
  10. HTML复习笔记<1>