17.创建用户之grep命令及强大的$

前言

????正式开写

正文

  1. 需求模拟

譬如某一天我们做了一个很屌的软件。

为了安全,该软件在运行时不推荐使用ROOT账户运行。所以我们会有个初始化shell脚本,来创建用户和初始化文件

????

1、判断用户是否存在(譬如叫god),没有则创建

2、创建后设置密码为123

3、把一些程序文件拷贝过去,并且除了root外,只能god用户运行(最好是root也不能方便的运行)

?

?

  1. grep命令 搜索文件及文件中的内容

强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

这也是日常维护和系统部署时,用的最多的一个命令。

????1.格式

grep "你要检索的字符串" 文件名

grep "你要检索的字符串" 文件名*

grep ‘正则‘ 文件名

cat 文件名 | grep "你喜欢的字符串"

ls | grep "你喜欢的文件名"

????2.常用参数

????-c:只输出匹配行的计数。

-I:不区分大 小写(只适用于单字符)。

-h:查询多文件时不显示文件名。

-l:查询多文件时只输出包含匹配字符的文件名。

-n:显示匹配行及 行号。

????

例如: cat /etc/passwd | grep ‘^pangzi‘ -c

  1. stdin 非交互式输入 模拟键盘

使用passwd 修改密码需要提示和确认 如果我们强迫设置可以吗?

echo "123" | passwd 用户名 --stdin

stdin 标准输入(键盘)

--stdin 代表使用非交互模式 输入,前面一条语句是管道

  1. shell1

    USER_COUNT=`cat /etc/passwd | grep ‘^god:‘ -c`

    USER_NAME=‘god‘

    if [ $USER_COUNT -ne 1 ]

    then

    ????useradd $USER_NAME

    ????echo "123" | passwd $USER_NAME --stdin

    else

    ????echo ‘ok‘

    fi

    ?

    缺点:用户不能反复创建及修改密码

  2. 强大的标记(部分)

    $#传递到脚本的参数个数

    $$脚本运行的当前进程ID号

    $!后台运行的最后一个进程的进程ID号

    [email protected]与$#相同,但是使用时加引号,并在引号中返回每个参数

    $?显示最后命令的退出状态。0表示没有错误,其它任何值表明有错误(或执行不成功)

    ?

    ?

  3. shell2 优化可重复执行

    USER_COUNT=`cat /etc/passwd | grep ‘^god:‘ -c`

    USER_NAME=‘god‘

    ?

    useradd $USER_NAME

    if [ $? -eq 0 ] #判断上一个命令的执行状态,0是失败

    then

    echo "123" | passwd $USER_NAME --stdin

    echo "done"

    else

    echo "error"

    fi

    ?

尾声

时间: 2024-08-29 18:35:53

17.创建用户之grep命令及强大的$的相关文章

18.创建用户之su命令切换用户

前戏 ????累了,也得写一番 正文 需求 有一个软件为了安全,该软件在运行时不推荐使用ROOT账户运行.所以我们会有个初始化shell脚本,来创建用户和初始化文件 ????????分析: ????????1.判断用户是否存在(譬如叫god),没有则创建 2.创建后设置密码为123 3.把一些程序文件拷贝过去,并且除了root外,只能god用户运行(最好是root也不能方便的运行) 二.具体脚本 USER_COUNT=`cat /etc/passwd | grep '^god:' -c` USE

oracle创建用户及常用命令

 --首先创建临时表空间 create temporary tablespace test_temp tempfile '路径' size 32M autoextend on next 32M maxsize 2048M extend management local; --创建表空间 create tablespace test_data logging data '路径' size 32M autoextend on next 32M maxsize 2048M extend managem

cmd创建用户开启3389命令

1.创建用户chen Net user chen 1234566 /add 2.将用户chen添加到管理员组 net localgroup Administrators chen /add 3.开启3389端口 REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f 原文地址:https://www.cnblogs.

在 Linux 中如何自动批量创建用户

作为一名 Linux 系统管理员,你有时必须向系统添加新的用户帐户.为此,经常使用 adduser 命令.当涉及到多个用户的创建时,adduser 命令可能会变得相当无聊和耗时.这篇短文旨在为 Linux 系统管理员提供一种简单而无人值守的方式来批量创建用户.newusers 命令将帮助你通过从预填文件中获取信息来创建多个用户. 要求 访问 Linux 计算机的特权. 约定 #- 给定命令需要以 root 用户权限运行或者使用sudo命令 $- 给定命令以常规权限用户运行 如何进行 创建一个包含

linux环境中通过useradd命令,创建用户的时候指定用户的base-dir

需求说明: 今天一个同事,问了一个这样的问题,在linux环境中,创建用户的时候,默认的是在/home目录下创建一个与用户名相同的家目录, 如何能够将这个/home更换成一个其他的,比如/opt/app下,研究了下,在此记录下 操作过程: 1.通过查看useradd命令的帮助文档,知道创建用户base_dir的配置在/etc/default/useradd文件中 [[email protected] ~]# cat /etc/default/useradd # useradd defaults

oracle 命令创建用户 、授权、数据库导入、导出

最近在使用oracle,经常要导入导出数据,命令很简单,却经常忘记,所以记下来.. drop user yfplss cascade;--登录system用户删除已存在的用户名,该用户下的所有东西都被删掉 --创建表空间 create tablespace yfplss logging datafile 'D:/app/Administrator/oradata/oral/yfplss.dbf'--存放表空间的地址 size 100m--大小 autoextend on --150M自动增长 n

LINUX创建用户的命令

LINUX创建用户的命令useradd -g test -d /home/test1 -s /etc/bash -m test1注解:-g 所属组 -d 家目录 -s 所用的SHELL 删除用户命令userdel -r test1创建密码命令passwd 查看linux下用户组是哪个命令! 察看 /etc/group文件 用cat /etc/passwd |cut -f 1 -d : linux禁止用户远程登录的方法:1.在新添加一个新用户的时候就指定这个用户不能远程登录 useradd  -s

Linux 下批量创建用户(shell 命令)

第一种方法: 用shell批量创建用户,分为2中:1,批量创建的用户名无规律 :2.批量创建的用户名有规律首先,来说下批量创建的用户名无规律的shell:先把需要批量创建的用户名用一个文本文档列出来,如下图的userlist文件再把与用户名匹配的密码用另一个个文本文档列出来,如下图的passwd文件 这两个文本文档内容,如下图所示: 下面是我编写的shell脚本.如下图所示 注意需要导入我们在userlist中写的用户名与passwd中写的与用户名匹配的密码项注:chpasswd命令#以root

Linux 创建用户命令

创建用户.设置密码.修改用户.删除用户: useradd testuser 创建用户testuser passwd testuser 给已创建的用户testuser设置密码 说明:新创建的用户会在/home下创建一个用户目录testuser usermod --help 修改用户这个命令的相关参数 userdel testuser 删除用户testuser rm -rf testuser 删除用户testuser所在目录 上面的几个命令只有root账号才可以使用,如果你不知道自己的系统上面的命令