Linux下通过shell脚本创建账户
当我们在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脚本创建账户相关推荐
- Linux下的shell脚本实战之用户创建
Linux下的shell脚本实战之用户创建 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.该脚本提示用户创建用户名和密码 2.判断输入的用户名是 ...
- linux下执行shell脚本文件,Linux下使用shell脚本自动执行脚本文件
搜索热词 以下实例本人在Centos6.5 64位操作系统中使用 一.定时复制文件 a.在/usr/local/wfjb_web_back目录下创建 tomcatBack.sh文件 #将tomcat中 ...
- linux下的shell脚本
linux下的shell脚本 一.Shell概述 二.Shell 解析器 三.Shell脚本入门 1. 脚本格式 2. 第一个Shell脚本:helloworld 3. 第二个Shell脚本:多命令处 ...
- linux实现学生信息管理系统,Linux下基于shell脚本实现学生信息管理系统
LINUX Linux操作系统 Linux下基于shell脚本实现学生信息管理系统 #该管理系统是参考两位博主(时间有点远了,我忘了,请博主看到后联系我)后自行修改添加的.登录过程还有很多不完善,我就 ...
- linux下的shell脚本,linux下的shell脚本的使用
什么是shell? Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户进行对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户.这种对话方式可是交互 ...
- Linux下使用Shell脚本快速创建项目目录模板
//proj.sh #!/bin/sh #FileName:proj.sh #Function:create project directory quckily #Version:V0.1 #Auth ...
- Linux下通过Shell脚本快速进入指定目录
现在有一个现实的场景: 每一次打开Linux,都是在 目录下: 我最近想练习网络的代码,所以创建了一个目录,路径为: 可以看到,这个路径很长,如果没一次都通过cd /home/admin/linex/ ...
- linux中调试脚本,在Linux下调试 Shell 脚本
在大多数编程语言中都有调试工具可用于调试. 调试工具可以运行需要调试的程序或脚本,使我们可以在运行时检查脚本或程序的内部执行过程. 在shell脚本中我们没有任何调试工具,只能借助命令行选项(-n,- ...
- linux 下的shell脚本
SHELL chsh -l 查看shell 切换 1.临时 直接执行 /bin/sh 2.永久 chsh bash 特点. 1.交互式 2.命令的历史功能 history !+指令编号 ...
最新文章
- 怎么利用迭代器写入mysql_流迭代器实现文件操作(读取和写入)方法详解
- visual code php,vscode(Visual Studio Code)配置PHP开发环境的方法(已测)_编程开发_软件教程...
- iOS Hacker 重签名实现无需越狱注入动态库 dylib
- android 调用红外模块,Flutter调用Android模块的功能
- layui2.4.0前的table隐藏列
- Qt踩坑之打包exe
- 线性表顺序表---逆置所有元素
- java量_Java 2. 量与常量
- 台达伺服驱动器说明书_干货:伺服调机实例讲解
- OpenGL入门程序一:绘制简单的矩形
- Apache中配置ASP.NET环境
- 运筹学常考知识点总结一
- Mapreduce中的分区Partitioner
- windows下CodeBlocks TMD-GCC安装及配置
- ps aux 中的状态说明
- 用P3P header解决iframe跨域访问cookie
- proteus元件图片_最完整的Proteus元件库元件名称及中英对照表下载
- 【scratch案例教学】scratch端午节划龙舟比赛 scratch创意编程 少儿编程 边玩边学过个快乐端午节
- Microsoft .NET Framework 4 安装 1603错误的解决
- oracle中锁表是什么,oracle锁表查询和解锁方法是什么,oracle锁表和解锁