2021-10-17

5.for条件循环语句

for循环语句允许脚本一次性读取多个信息,然后逐一对信息进行操作处理。
在这里插入图片描述//从列表文件中读取多个用户名,然后为其逐一创建用户账户并设置密码

[root@linuxprobe ~]# vim addusers.sh
#!/bin/bash
read -p "Enter The Users Password : " PASSWD
for UNAME in `cat users.txt`
do
        id $UNAME &> /dev/null
        if [ $? -eq 0 ]
        then
                echo "$UNAME , Already exists"
        else
                useradd $UNAME &> /dev/null
                echo "$PASSWD" | passwd --stdin $UNAME &> /dev/null
                echo "$UNAME , Create success"
        fi
done

/dev/null //黑洞文件
/dev/zero //0块文件
//从文本中自动读取主机列表,然后自动逐个测试这些主机是否在线。

[root@linuxprobe ~]# vim CheckHosts.sh
#!/bin/bash
HLIST=$(cat ~/ipaddrs.txt)
for IP in $HLIST
do
        ping -c 3 -i 0.2 -W 3 $IP &> /dev/null
        if [ $? -eq 0 ]  
        then
                echo "Host $IP is On-line."
        else
                echo "Host $IP is Off-line."
        fi
done

6.while条件循环语句

while条件循环语句是一种让脚本根据某些条件来重复执行命令的语句,它的循环结构往往在执行前并不确定最终执行的次数,完全不同于for循环语句中有目标、有范围的使用场景。while循环语句通过判断条件测试的真假来决定是否继续执行命令,若条件为真就继续执行,为假就结束循环。
在这里插入图片描述

[root@linuxprobe ~]# vim Guess.sh
#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
echo "商品实际价格为0-999之间,猜猜看是多少?"
while true
do
        read -p "请输入您猜测的价格数目:" INT
        let TIMES++
        if [ $INT -eq $PRICE ] ; then
                echo "恭喜您答对了,实际价格是 $PRICE"
                echo "您总共猜测了 $TIMES 次"
                exit
        elif [ $INT -gt $PRICE ] ; then
                echo "太高了!"
        else
                echo "太低了!"
        fi
done

当条件为true(真)的时候,while语句会一直循环下去,只有碰到exit才会结束

7. case条件测试语句

case语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;如果数据不在所列出的范围内,则会去执行星号(*)中所定义的默认命令。
在这里插入图片描述
//提示用户输入一个字符并将其赋值给变量KEY,然后根据变量KEY的值向用户显示其值是字母、数字还是其他字符

[root@linuxprobe ~]# vim Checkkeys.sh
#!/bin/bash
read -p "请输入一个字符,并按Enter键确认:" KEY
case "$KEY" in
        [a-z]|[A-Z])
                echo "您输入的是 字母。"
                ;;
        [0-9])
                echo "您输入的是 数字。"
                ;;
        *)
                echo "您输入的是 空格、功能键或其他控制字符。"
esac

8.计划任务服务程序

计划任务分为一次性计划任务与长期性计划任务

8.1一次性计划任务

一次性计划任务只执行一次,一般用于临时的工作需求。可以用at命令实现这种功能,只需要写成“at时间”的形式就行。如果想要查看已设置好但还未执行的一次性计划任务,可以使用at -l命令;要想将其删除,可以使用“atrm任务序号”。
at命令的参数及其作用
参数 作用
-f 指定包含命令的任务文件
-q 指定新任务名称
-l 显示待执行任务列表
-d 删除指定待执行任务
-m 任务执行后给用户发邮件
在使用at命令来设置一次性计划任务时,默认采用的是交互式方法

[root@linuxprobe ~]# at 23:30
warning: commands will be executed using /bin/sh
at> systemctl restart httpd
at> 此处请同时按下<Ctrl>+<d>键来结束编写计划任务
job 1 at Wed Oct 14 23:30:00 2020
[root@linuxprobe ~]# at -l
1 Wed Oct 14 23:30:00 2020 a root

at命令接收前面echo命令的输出信息,以达到通过非交互式的方式创建计划一次性任务的目的

[root@linuxprobe ~]# echo "systemctl restart httpd" | at 23:30

可以使用atrm命令删除
[root@linuxprobe ~]# atrm 2

把计划任务写入Shell脚本中,当用户激活该脚本后再开始倒计时执行
使用“at now +2 MINUTE”的方式进行操作,这表示2分钟(MINUTE)后执行这个任务,也可以将其替代成小时(HOUR)、日(DAY)、月(MONTH)等词汇
[root@linuxprobe ~]# at now +2 MINUTE

8.2长期性计划任务

Linux系统能够周期性地、有规律地执行某些具体的任务,Linux系统中默认启用的crond服务
创建、编辑计划任务的命令为crontab -e,查看当前计划任务的命令为crontab -l,删除某条计划任务的命令为crontab -r。另外,如果您是以管理员的身份登录的系统,还可以在crontab命令中加上-u参数来编辑他人的计划任务。
crontab命令的参数及其作用
参数 作用
-e 编辑计划任务
-u 指定用户名称
-l 列出任务列表
-r 删除计划任务
这是使用crond服务设置任务的参数格式:分、时、日、月、星期 命令”
如果有些字段没有被设置,则需要使用星号(*)占位
在这里插入图片描述
使用crond设置任务的参数字段说明
字段 说明
分钟 取值为0~59的整数
小时 取值为0~23的任意整数
日期 取值为1~31的任意整数
月份 取值为1~12的任意整数
星期 取值为0~7的任意整数,其中0与7均为星期日
命令 要执行的命令或程序脚本
//在每周一、三、五的凌晨3:25,都需要使用tar命令把某个网站的数据目录进行打包处理,使其作为一个备份文件。

[root@linuxprobe ~]# crontab -l
25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot

除了用逗号(,)来分别表示多个时间段,例如“8,9,12”表示8月、9月和12月。还可以用减号(-)来表示一段连续的时间周期(例如字段“日”的取值为“12-15”,则表示每月的12~15日)。还可以用除号(/)表示执行任务的间隔时间(例如“*/2”表示每隔2分钟执行一次任务)。
如果在crond服务中需要同时包含多条计划任务的命令语句,应每行仅写一条
在crond服务的计划任务参数中,所有命令一定要用绝对路径的方式来写,可以用whereis查询
删除crond计划任务则非常简单,直接使用crontab -e命令进入编辑界面,删除里面的文本信息即可。也可以使用crontab -r命令直接进行删除:

5.用户身份与文件权限

5.1 用户身份与能力

Linux系统的管理员之所以是root,并不是因为它的名字叫root,而是因为该用户的身份号码即UID(User IDentification)的数值为0。在Linux系统中,UID就像我们的身份证号码一样具有唯一性,因此可通过用户的UID值来判断用户身份。
管理员UID为0:系统的管理员用户。
系统用户UID为1~999:Linux系统为了避免因某个服务程序出现漏洞而被黑客提权至整台服务器,默认服务程序会由独立的系统用户负责运行,进而有效控制被破坏范围。
//rhel 5,6系统用户1-499,rhel7,8 1-1000
普通用户UID从1000开始:是由管理员创建的用于日常工作的用户。
//rhel 5/6 500-65535 RHEL 7/8 1000-n

需要注意的是,UID是不能冲突的,而且管理员创建的普通用户的UID默认是从1000开始的(即使前面有闲置的号码)。

通过使用用户组号码(GID,Group IDentification),可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。

在Linux系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳到其他用户组,则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组

  1. id命令
    id命令用于显示用户的详细信息
  2. useradd命令
    useradd命令用于创建新的用户账户
    使用该命令创建用户账户时,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。
    useradd命令中的参数以及作用
    参数 作用
    -d 指定用户的家目录(默认为/home/username)
    -e 账户的到期时间,格式为YYYY-MM-DD.
    -u 指定该用户的默认UID
    -g 指定一个初始的用户基本组(必须已存在)
    -G 指定一个或多个扩展用户组
    -N 不创建与用户同名的基本用户组
    -s 指定该用户的默认Shell解释器
  3. groupadd命令
    groupadd命令用于创建新的用户组
  4. usermod命令
    usermod命令用于修改用户的属性。
    在系统中创建用户也就是修改配置文件的过程。用户的信息保存在/etc/passwd文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用usermod命令修改已经创建的用户信息,比如用户的UID、基本/扩展用户组、默认终端等。
    usermod命令中的参数以及作用
    参数 作用
    -c 填写用户账户的备注信息
    -d -m 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
    -e 账户的到期时间,格式为YYYY-MM-DD
    -g 变更所属用户组
    -G 变更扩展用户组
    -L 锁定用户禁止其登录系统
    -U 解锁用户,允许其登录系统
    -s 变更默认终端
    -u 修改用户的UID
  5. id命令
    id命令用于显示用户的详细信息
  6. useradd命令
    useradd命令用于创建新的用户账户
    使用该命令创建用户账户时,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。
    useradd命令中的参数以及作用
    参数 作用
    -d 指定用户的家目录(默认为/home/username)
    -e 账户的到期时间,格式为YYYY-MM-DD.
    -u 指定该用户的默认UID
    -g 指定一个初始的用户基本组(必须已存在)
    -G 指定一个或多个扩展用户组
    -N 不创建与用户同名的基本用户组
    -s 指定该用户的默认Shell解释器
  7. groupadd命令
    groupadd命令用于创建新的用户组
  8. usermod命令
    usermod命令用于修改用户的属性。
    在系统中创建用户也就是修改配置文件的过程。用户的信息保存在/etc/passwd文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用usermod命令修改已经创建的用户信息,比如用户的UID、基本/扩展用户组、默认终端等。
    usermod命令中的参数以及作用
    参数 作用
    -c 填写用户账户的备注信息
    -d -m 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
    -e 账户的到期时间,格式为YYYY-MM-DD
    -g 变更所属用户组
    -G 变更扩展用户组
    -L 锁定用户禁止其登录系统
    -U 解锁用户,允许其登录系统
    -s 变更默认终端
    -u 修改用户的UID
  9. passwd命令
    passwd命令用于修改用户的密码、过期时间等信息。
    root管理员在Linux系统中修改自己或他人的密码时不需要验证旧密码。既然root管理员能够修改其他用户的密码,就表示其完全拥有该用户的管理权限。
    passwd命令中的参数以及作用
    参数 作用
    -l 锁定用户,禁止其登录
    -u 解除锁定,允许用户登录
    –stdin 允许通过标准输入修改用户密码,如echo “NewPassWord” | passwd --stdin Username
    -d 使该用户可用空密码登录系统
    -e 强制用户在下次登录时修改密码
    -S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称

1. id命令
id命令用于显示用户的详细信息
2. useradd命令
useradd命令用于创建新的用户账户
使用该命令创建用户账户时,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。
useradd命令中的参数以及作用
参数 作用
-d 指定用户的家目录(默认为/home/username)
-e 账户的到期时间,格式为YYYY-MM-DD.
-u 指定该用户的默认UID
-g 指定一个初始的用户基本组(必须已存在)
-G 指定一个或多个扩展用户组
-N 不创建与用户同名的基本用户组
-s 指定该用户的默认Shell解释器
3. groupadd命令
groupadd命令用于创建新的用户组
4. usermod命令
usermod命令用于修改用户的属性。
在系统中创建用户也就是修改配置文件的过程。用户的信息保存在/etc/passwd文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用usermod命令修改已经创建的用户信息,比如用户的UID、基本/扩展用户组、默认终端等。
usermod命令中的参数以及作用
参数 作用
-c 填写用户账户的备注信息
-d -m 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去
-e 账户的到期时间,格式为YYYY-MM-DD
-g 变更所属用户组
-G 变更扩展用户组
-L 锁定用户禁止其登录系统
-U 解锁用户,允许其登录系统
-s 变更默认终端
-u 修改用户的UID
5. passwd命令
passwd命令用于修改用户的密码、过期时间等信息。
root管理员在Linux系统中修改自己或他人的密码时不需要验证旧密码。既然root管理员能够修改其他用户的密码,就表示其完全拥有该用户的管理权限。
passwd命令中的参数以及作用
参数 作用
-l 锁定用户,禁止其登录
-u 解除锁定,允许用户登录
–stdin 允许通过标准输入修改用户密码,如echo “NewPassWord” | passwd --stdin Username
-d 使该用户可用空密码登录系统
-e 强制用户在下次登录时修改密码
-S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称
6. userdel命令
userdel命令用于删除已有的用户账户
在执行删除操作时,该用户的家目录默认会保留下来,此时可以使用-r参数将其删除。
userdel命令中的参数以及作用
参数 作用
-f 强制删除用户
-r 同时删除用户及用户家目录
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值