当前位置: 首页 > 工具软件 > Open Pegasus > 使用案例 >

【HCIA-openEuler】实验手册—10【openEuler课后练习】

高山
2023-12-01


一、openEuler用户及权限管理

1、创建一个目录 /data;

2、创建user1,user2,user3 三个用户要求如下:

​ (1)user1 家目录在/data目录下,该用户的描述为testuser;

​ (2)user2 用户的uid 应当为2000;

​ (3)user3 用户应当使用 /sbin/nologin这个登录shell。

3、将以上三个用户加入到一个GID为3000,名为it的组中;

4、创建/it ;

5、要求it 组内的所有成员都可以在/it目录下创建文件,删除文件;

6、给it组更名为cloud。

二、shell脚本语言基础

1、反向输出

​ ⏺ 当用户输入yes,显示no

​ ⏺ 当用户输入no,显示yes

​ ⏺ 当用户输入其它,提示用户输入yes/no

​ ⏺ 忽略大小写

2、新建用户

​ ⏺ 新建一个用户名列表namefile

​ ⏺ 新建一个脚本,该脚本能够实现根据namefile自动创建用户,且密码随机生成。用户创建后将用户名和密码导入到/root/loginname.txt中。

​ ⏺ 随机密码生成可以使用:openssl rand -base64 6

3、测试用户是否存在,并判断是否是超级用户

​ ⏺ 写一个脚本:如果指定的用户存在,先说明其已经存在,并显示其ID号和SHELL,并判断是否是超级用户;否则,就创建用户,并显示其ID号

4、创建或目录文件

​ ⏺ 该脚本应当有交互功能

​ ⏺ 该脚本用于备份系统目录

​ ⏺ 需要给予用户提示,提示用户应当输入目录或者文件名

​ ⏺ 判断用户要备份的文件是否存在,如果不存在则告知用户,并输出相应错误

​ ⏺ 判断用户要备份的目标目录是否存在,如果该目录不存在,则需要问用户是否创建,如果该目录已经存在,则需要问用户是否重命名该目录

5、测试IP是否可达

​ ⏺ 根据iplist.txt文件中列举的IP地址,判断IP地址是否可达。

​ ⏺ 只显示可达的IP地址。(不可达的可以使用 >> /dev/null)

6、脚本实现输出机器信息

​ ⏺ 将本机的网卡的IP地址和MAC地址截取出来,输出到/root/nic
​ ⏺ 将本机的磁盘使用情况截取出来 输出到 /root/disk
​ ⏺ 判断系统空间使用的情况,如果 / 使用率大于30% 则删除 /tmp 的内容

+++

参考答案

一、openEuler用户及权限管理

1、创建一个目录 /data;

[root@openEuler ~]# ls /
bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@openEuler ~]# mkdir /data     -- 在根目录下创建目录 data
[root@openEuler ~]# ls /     -- 通过 ls 命令查看根目录下文档
bin   data  etc   lib    lost+found  mnt  proc  run   srv  tmp  var
boot  dev   home  lib64  media       opt  root  sbin  sys  usr
[root@openEuler ~]#

2、创建user1,user2,user3 三个用户要求如下:

(1)user1 家目录在/data目录下,该用户的描述为testuser;

[root@openEuler ~]# id user1     #-- 创建用户前确认系统中没有 user1 用户
id: “user1”:无此用户
[root@openEuler ~]# useradd -c testuser -d /data/user1 user1     #-- 创建用户 user1 ,指定描述信息为testuser ,用户家目录为 /data 下;
[root@openEuler ~]# id user1     #-- 验证,用户 user1 创建成功;
用户id=1002(user1) 组id=1002(user1) 组=1002(user1)
[root@openEuler ~]# chmod 777 /data
[root@openEuler ~]# su - user1     #-- 切换至用户 user1;


Welcome to 4.19.90-2003.4.0.0036.oe1.x86_64

System information as of time:  2022年 12月 30日 星期五 17:21:41 CST

System load:    0.00
Processes:      159
Memory used:    25.0%
Swap used:      0.0%
Usage On:       9%
IP address:     192.168.74.136
Users online:   1



[user1@openEuler ~]$ pwd     #-- 查看用户家目录为 /data/user1
/data/user1
[user1@openEuler ~]$ exit     #-- 退出 user1 用户登陆
注销
[root@openEuler ~]# tail /etc/passwd
pegasus:x:66:65:tog-pegasus OpenPegasus WBEM/CIM services:/var/lib/Pegasus:/sbin/nologin
chrony:x:983:981::/var/lib/chrony:/sbin/nologin
pcpqa:x:982:980:PCP Quality Assurance:/var/lib/pcp/testsuite:/bin/bash
pesign:x:981:979:Group for the pesign signing daemon:/var/run/pesign:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
dbus:x:978:978:System Message Bus:/:/usr/sbin/nologin
huawei:x:1000:1000::/home/huawei:/bin/bash
smb:x:1001:1001::/home/smb:/sbin/nologin
user1:x:1002:1002:testuser:/data/user1:/bin/bash     #--可以看到用户描述

(2)user2 用户的uid 应当为2000;

[root@openEuler ~]# id user2     #--  创建用户前确认系统无 user2 用户;
id: “user2”:无此用户
[root@openEuler ~]# useradd -u 2000 user2     #-- 创建用户 user2 并指定用户 uid 为 2000;
[root@openEuler ~]# id user2     #-- 验证新增用户
用户id=2000(user2) 组id=2000(user2) 组=2000(user2)
[root@openEuler ~]#

(3)user3 用户应当使用 /sbin/nologin 这个登录shell。

[root@openEuler ~]# id user3     #--  创建用户前确认系统无 user3 用户
id: “user3”:无此用户
[root@openEuler ~]# useradd -s /sbin/nologin user3     #-- 创建用户 user3 并指定 shell 为 /sbin/nologin;
[root@openEuler ~]# id user3     #-- 验证创建用户 user3 成功
用户id=2001(user3) 组id=2001(user3) 组=2001(user3)
[root@openEuler ~]# cat /etc/passwd | grep user3     #-- 查看 /etc/passwd 文件中 user3 用户信息
user3:x:2001:2001::/home/user3:/sbin/nologin     #-- 验证 user3 用户 shell 为 /sbin/nologin
[root@openEuler ~]#

3、将以上三个用户加入到一个GID为3000,名为it的组中;

[root@openEuler ~]# cat /etc/group | grep -w it     #-- 创建前确认系统中无 it 组
[root@openEuler ~]# groupadd -g 3000 it     #-- 创建 it 组并指定 GID 为 3000;
[root@openEuler ~]# cat /etc/group | grep -w it     #-- 再次查看
it:x:3000:      #-- it 组创建成功,且 GID 为 3000
[root@openEuler ~]# usermod -aG it user1     #-- 将用户 user1 添加至 it 组中
[root@openEuler ~]# usermod -aG it user2     #-- 将用户 user2 添加至 it 组中
[root@openEuler ~]# usermod -aG it user3     #-- 将用户 user3 添加至 it 组中
[root@openEuler ~]# cat /etc/group | grep -w it     #-- 查看组配置文件
it:x:3000:user1,user2,user3     #-- 验证成功,it 组中增加 user1 , user2 ,user3
[root@openEuler ~]#

4、创建/it ;

[root@openEuler ~]# ls -l / |grep -w it     #-- 查看根目录下是否已存在 it 目录;
[root@openEuler ~]# mkdir /it     #-- 在根目录下创建 it 目录
[root@openEuler ~]# ls -l / |grep -w it     #-- 查看目录 it 创建成功
drwxr-xr-x.   2 root root  4096 12月 30 17:48 it

5、要求it 组内的所有成员都可以在/it目录下创建文件,删除文件;

[root@openEuler ~]# chown :it /it     #-- 修改 it 目录的所属组为 it 组
[root@openEuler ~]# ls -l / |grep -w it     #-- 验证修改成功
drwxr-xr-x.   2 root it    4096 12月 30 17:48 it
[root@openEuler ~]# chmod g+w /it     #-- 修改 it 目录的所属组权限,增加 w 修改权限
[root@openEuler ~]# ls -l / |grep -w it     #-- 验证权限修改成功
drwxrwxr-x.   2 root it    4096 12月 30 17:48 it
[root@openEuler ~]# su - user1     #-- 切换至 it 组中的用户 user1
上一次登录:五 12月 30 17:44:28 CST 2022pts/0 上


Welcome to 4.19.90-2003.4.0.0036.oe1.x86_64

System information as of time:  2022年 12月 30日 星期五 17:49:48 CST

System load:    0.05
Processes:      162
Memory used:    18.4%
Swap used:      0.0%
Usage On:  9%
IP address:     192.168.74.136
Users online:   1



[user1@openEuler ~]$ mkdir /it/test     #-- 测试通过 user1 用户创建 test 目录
[user1@openEuler ~]$ ls -l /it/     #-- 查看目录创建结果
总用量 4
drwx------. 2 user1 user1 4096 12月 30 17:49 test     #-- test 目录创建成功
[user1@openEuler ~]$ rm -rf /it/test     #测试删除 test 目录
[user1@openEuler ~]$ ls -l /it/     #-- 查看目录删除结果
总用量 0     #-- test 目录删除成功
[user1@openEuler ~]$ exit
注销
[root@openEuler ~]#

6、给it组更名为cloud。

[root@openEuler ~]# cat /etc/group | grep -wE "it|cloud"     #-- 查看组配置文件
it:x:3000:user1,user2,user3     #-- 有 it 组,无 cloud 组
[root@openEuler ~]# groupmod -n cloud it     #-- 将 it 组更名为 cloud
[root@openEuler ~]# cat /etc/group | grep -wE "it|cloud"     #-- 查看组配置文件
cloud:x:3000:user1,user2,user3     #-- 更名修改成功
[root@openEuler ~]#

二、shell脚本语言基础

1、反向输出

​ ⏺ 当用户输入yes,显示no

​ ⏺ 当用户输入no,显示yes

​ ⏺ 当用户输入其它,提示用户输入yes/no

​ ⏺ 忽略大小写

#!/bin/bash
#This is a shell script for input yes to no
read -p "Please enter your choose: " choose
if [ $choose == yes ] || [ $choose == YES ]
then
    echo "no"
elif [ $choose == no ] || [ $choose == NO ]
then
    echo "yes"
else
    echo "You input error,please input yes or no"
fi

2、新建用户

​ ⏺ 新建一个用户名列表namefile

​ ⏺ 新建一个脚本,该脚本能够实现根据namefile自动创建用户,且密码随机生成。用户创建后将用户名和密码导入到/root/loginname.txt中。

​ ⏺ 随机密码生成可以使用:openssl rand -base64 6

#!/bin/bash
file='namefile'
for user in $(cat $file)
do
  useradd $user
  pam=`openssl rand -base64 6`
  sleep 5
  echo "`(echo $pam | passwd --stdin $user)`"
  echo "$user $pam" >> /root/loginname.txt
done

3、测试用户是否存在,并判断是否是超级用户

​ ⏺ 写一个脚本:如果指定的用户存在,先说明其已经存在,并显示其ID号和SHELL,并判断是否是超级用户;否则,就创建用户,并显示其ID号

#!/bin/bash
#This shell script is for judge user is or not user
read -p "Please enter your account name: " user
ID=`cat /etc/passwd | grep ^$user | cut -d ':' -f3`
SHELL=`cat /etc/passwd | grep ^$user | cut -d ':' -f7`
resut=`id $user`
res=`echo $?`
if [ $res -eq 0 ]
then
   echo "$ID"
   echo "$SHELL"
     if [ $ID -eq 0 ]
     then
        echo "The $user is superuser"
     else
        echo "The $user is normaluser"
     fi
else
   echo "This $user is not exsit,please create account"
   useradd $user
   id=`id -u $user`
   echo "$id"
fi

4、创建或目录文件

​ ⏺ 该脚本应当有交互功能

​ ⏺ 该脚本用于备份系统目录

​ ⏺ 需要给予用户提示,提示用户应当输入目录或者文件名

​ ⏺ 判断用户要备份的文件是否存在,如果不存在则告知用户,并输出相应错误

​ ⏺ 判断用户要备份的目标目录是否存在,如果该目录不存在,则需要问用户是否创建,如果该目录已经存在,则需要问用户是否重命名该目录

#!/bin/bash
#This is a shell for backup the system dir
read -p "Please input your dir : " dir
read -p "please input your backup file: " file
if [ -e $file ]
then
   echo "The $file is already exisit,you do not need make again"
else
   echo "This $file is not exsit, please back up it first"
   tar -czvf targettar.tar.gz $dir
fi
 
if [ -e $dir ]
then
    echo "This $dir is exsit,are you sure to move this $dir"
else
    echo "This $dir is not exsit,please make dir first"
fi

5、测试IP是否可达

​ ⏺ 根据iplist.txt文件中列举的IP地址,判断IP地址是否可达。

​ ⏺ 只显示可达的IP地址。(不可达的可以使用 >> /dev/null)

脚本1:

#!/bin/bash
#This is a shell script for checking the ip is arrive or not
file=$(cat ./iplist.txt)
for i in $file
do
  ping -c1 -w1 $i &> /dev/null && echo "$i is up" || echo "$i is down"
done
~

脚本2:

#!/bin/bash
for i in {1..255}
do
   ping -c1 -w1 192.168.1.$i &> /dev/null && echo -e "\033[032m 192.168.1.$i is up \033[0m" || echo -e "\033[031m 192.168.1.$i is down \033[0m"
done

两种逻辑:

1、提前将所有IP在一个文件里列出来,然后在脚本里调用

2、默认认为IP是同一段连续IP,使用逐个探测的方式确定IP是否可达

6、脚本实现输出机器信息

​ ⏺ 将本机的网卡的IP地址和MAC地址截取出来,输出到/root/nic
​ ⏺ 将本机的磁盘使用情况截取出来 输出到 /root/disk
​ ⏺ 判断系统空间使用的情况,如果 / 使用率大于30% 则删除 /tmp 的内容

#!/bin/bash
#This shell script is for monitoring diskUsage&IP&MAC
MAC=`ip addr |  awk NR==8 | awk '{print $2}'` 
IP=`ifconfig | grep -E "\<([0-9]{1,3}\.){3}([0-9]{1,3})\>" | grep -v 127.0.0.1 | awk '{print $2}'`  #无法应对多网卡地址遴选
DiskUsage=`df -h | grep -v Filesystem | awk '{print $1,$5}'`  #列出分区,以及分区使用率
RootZoneUsage=`df -h | grep sda | awk '{print $5}'` #列出根分区的使用率
echo "$IP $MAC" > /root/nic #将IP地址与MAC地址写入文件
echo "$DiskUsage" > /root/disk #将分区使用率写入文件
echo "$RootZoneUsage" > ./file #将根分区的使用率写入一个已创建的文件中,使用相对路径
RootUsage=`sed 's/%//g' ./file` # 使用sed将使用率的百分号过滤掉
if [ $RootUsage -gt 30 ]   #最头疼的一句,明明就拿使用率比较,结果-lt -gt不能使用百分号比较只能划百分号为整
then
   cat /dev/null > /tmp/
else
   echo "The Disk Usage is less than 30%, you do not need care "
fi
 类似资料: