5.for条件循环语句
for循环语句允许脚本一次性读取多个信息,然后逐一对信息进行操作处理。 //从列表文件中读取多个用户名,然后为其逐一创建用户账户并设置密码
[root@linuxprobe ~]
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 ~]
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 ~]
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 ~]
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 ~]
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 ~]
1 Wed Oct 14 23:30:00 2020 a root
at命令接收前面echo命令的输出信息,以达到通过非交互式的方式创建计划一次性任务的目的
[root@linuxprobe ~]
可以使用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 ~]
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系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳到其他用户组,则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组
- id命令
id命令用于显示用户的详细信息 - useradd命令
useradd命令用于创建新的用户账户 使用该命令创建用户账户时,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。 useradd命令中的参数以及作用 参数 作用 -d 指定用户的家目录(默认为/home/username) -e 账户的到期时间,格式为YYYY-MM-DD. -u 指定该用户的默认UID -g 指定一个初始的用户基本组(必须已存在) -G 指定一个或多个扩展用户组 -N 不创建与用户同名的基本用户组 -s 指定该用户的默认Shell解释器 - groupadd命令
groupadd命令用于创建新的用户组 - usermod命令
usermod命令用于修改用户的属性。 在系统中创建用户也就是修改配置文件的过程。用户的信息保存在/etc/passwd文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用usermod命令修改已经创建的用户信息,比如用户的UID、基本/扩展用户组、默认终端等。 usermod命令中的参数以及作用 参数 作用 -c 填写用户账户的备注信息 -d -m 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去 -e 账户的到期时间,格式为YYYY-MM-DD -g 变更所属用户组 -G 变更扩展用户组 -L 锁定用户禁止其登录系统 -U 解锁用户,允许其登录系统 -s 变更默认终端 -u 修改用户的UID - id命令
id命令用于显示用户的详细信息 - useradd命令
useradd命令用于创建新的用户账户 使用该命令创建用户账户时,默认的用户家目录会被存放在/home目录中,默认的Shell解释器为/bin/bash,而且默认会创建一个与该用户同名的基本用户组。 useradd命令中的参数以及作用 参数 作用 -d 指定用户的家目录(默认为/home/username) -e 账户的到期时间,格式为YYYY-MM-DD. -u 指定该用户的默认UID -g 指定一个初始的用户基本组(必须已存在) -G 指定一个或多个扩展用户组 -N 不创建与用户同名的基本用户组 -s 指定该用户的默认Shell解释器 - groupadd命令
groupadd命令用于创建新的用户组 - usermod命令
usermod命令用于修改用户的属性。 在系统中创建用户也就是修改配置文件的过程。用户的信息保存在/etc/passwd文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用usermod命令修改已经创建的用户信息,比如用户的UID、基本/扩展用户组、默认终端等。 usermod命令中的参数以及作用 参数 作用 -c 填写用户账户的备注信息 -d -m 参数-m与参数-d连用,可重新指定用户的家目录并自动把旧的数据转移过去 -e 账户的到期时间,格式为YYYY-MM-DD -g 变更所属用户组 -G 变更扩展用户组 -L 锁定用户禁止其登录系统 -U 解锁用户,允许其登录系统 -s 变更默认终端 -u 修改用户的UID - 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 同时删除用户及用户家目录
|