#!/bin/bash
#功能：红帽认证系统管理员模拟考试判分程序
#作者：传奇教主（传棋）
#邮箱：Jaking@vip.163.com
#时间：2021年10月31日

#1.配置网络设置
echo
echo "1.配置网络设置"

HOSTNAME=`hostname | awk -F. '{ print $2 }'`
if [ "$HOSTNAME" == "example" ]
   then 
	   T1=2 && echo " `echo -e "\033[36m 主机名配置成功！  \033[0m"`"
   else
	   T1=0 && echo " `echo -e "\033[31m 主机名配置失败！  \033[0m"`"
fi

IP=`ip a | grep "\<inet\>" | grep -v "127.0.0.1" | tr '/' ' ' | awk '{print $2}' | head -1`

if [ "$IP" == "172.20.10.8" ]
   then
	   T2=2 && echo " `echo -e "\033[36m IP地址配置成功！  \033[0m"`"
   else
	   T2=0 && echo " `echo -e "\033[31m IP地址配置失败！  \033[0m"`"
fi

NETMASK=`route -n | grep "^172.20.10" | awk '{print $3}'`

if [ "$NETMASK" == "255.255.255.0" ]
   then
	   T3=2 && echo " `echo -e "\033[36m 子网掩码配置成功！  \033[0m"`"
   else
	   T3=0 && echo " `echo -e "\033[31m 子网掩码配置失败！  \033[0m"`"
fi

GATEWAY=`route -n | grep "^0.0.0.0" | awk '{print $2}'`

if [ "$GATEWAY" == "172.20.10.2" ]
   then
	   T4=2 && echo " `echo -e "\033[36m 网关配置成功！  \033[0m"`"
   else
	   T4=0 && echo " `echo -e "\033[31m 网关配置失败！  \033[0m"`"
fi

DNS=`grep nameserver /etc/resolv.conf | awk '{ print $2 }'`

if [ "$DNS" == "172.20.10.2" ]
   then
	   T5=2 && echo " `echo -e "\033[36m DNS配置成功！  \033[0m"`"
   else
	   T5=0 && echo " `echo -e "\033[31m DNS配置失败！  \033[0m"`"
fi

#2.配置您的系统以使用默认存储库
echo 
echo "2.配置您的系统以使用默认存储库"

yum remove -y lrzsz &> /dev/null
yum install -y lrzsz &> /dev/null

if [ $? -eq 0 ];then
           T6=15 && echo " `echo -e "\033[36m yum源配置成功！  \033[0m"`"
   else
           T6=0 && echo " `echo -e "\033[31m yum源配置失败！  \033[0m"`"
fi

#3.调试 SELinux
echo
echo "3.调试 SELinux"

CONTENT=`ls -l /var/www/html/ -Z | awk '{print $5}' | awk -F: '{if(NF>0) print $3}' | head -n 1`

if [ "$CONTENT" = "httpd_sys_content_t" ];then
	   T7=5 && echo " `echo -e "\033[36m 系统上的 Web 服务器能够提供 /var/www/html 中所有现有的 HTML 文件！\033[0m"`"
   else
	   T7=0 && echo " `echo -e "\033[31m 系统上的 Web 服务器不能够提供 /var/www/html 中所有现有的 HTML 文件！\033[0m"`"
fi

PORT=`netstat -pantul | grep httpd | awk '{print $4 }' | awk -F: '{print $4}'`

if [ "$PORT" == "82" ]
   then
	   T8=5 && echo " `echo -e "\033[36m Web 服务器在端口 82 上提供此内容！  \033[0m"`"
   else
	   T8=0 && echo " `echo -e "\033[31m Web 服务器不在端口 82 上提供此内容！  \033[0m"`"
fi

ENABLED=`systemctl is-enabled httpd 2>/dev/null`

if [ "$ENABLED" == "enabled" ]
   then
	   T9=5 && echo " `echo -e "\033[36m Web 服务器在系统启动时自动启动!  \033[0m"`"
   else
	   T9=0 && echo " `echo -e "\033[31m Web 服务器在系统启动时不自动启动!  \033[0m"`"
fi

#4.创建用户帐户
echo
echo "4.创建用户帐户"

GROUP=`cat /etc/group | grep sysmgrs | awk -F: '{print $1}'`

if [ "$GROUP" == "sysmgrs" ]
   then
	   T10=1 && echo " `echo -e "\033[36m 创建 sysmgrs 组成功!  \033[0m"`"
   else
	   T10=0 && echo " `echo -e "\033[31m 创建 sysmgrs 组失败!  \033[0m"`"
fi

id natasha &>/dev/null

if [ $? -eq 0 ]
   then
	   T11=2 && echo " `echo -e "\033[36m 创建 natasha 用户成功!  \033[0m"`"
   else
	   T11=0 && echo " `echo -e "\033[31m 创建 natasha 用户失败!  \033[0m"`"
fi

id harry &>/dev/null

if [ $? -eq 0 ]
   then
	   T12=2 && echo " `echo -e "\033[36m 创建 harry 用户成功!  \033[0m"`"
   else
	   T12=0 && echo " `echo -e "\033[31m 创建 harry 用户失败!  \033[0m"`"
fi

id sarah &>/dev/null

if [ $? -eq 0 ]
   then
	   T13=2 && echo " `echo -e "\033[36m 创建 sarah 用户成功!  \033[0m"`"
   else
	   T13=0 && echo " `echo -e "\033[31m 创建 sarah 用户失败!  \033[0m"`"
fi

NG=`id natasha | awk '{print $3}' | awk -F, '{print $2}' | awk -F\( '{print $2}' | tr -d \)`

if [ "$NG" == "sysmgrs" ]
   then
	   T14=1 && echo " `echo -e "\033[36m natasha 的从属组是 sysmgrs !  \033[0m"`"
   else
	   T14=0 && echo " `echo -e "\033[31m natasha 的从属组不是 sysmgrs !  \033[0m"`"
fi


HG=`id harry | awk '{print $3}' | awk -F, '{print $2}' | awk -F\( '{print $2}' | tr -d \)`

if [ "$HG" == "sysmgrs" ]
   then
	   T15=1 && echo " `echo -e "\033[36m harry 的从属组是 sysmgrs !  \033[0m"`"
   else
	   T15=0 && echo " `echo -e "\033[31m harry 的从属组不是 sysmgrs !  \033[0m"`"
fi

SHELL=`cat /etc/passwd | grep sarah | awk -F: '{print $7}'`

case $SHELL in
	"/sbin/nologin")
	   T16=1 && echo " `echo -e "\033[36m sarah 无权访问系统上的交互式 shell !  \033[0m"`"
	   ;;
        "/bin/false")
	   T16=1 && echo " `echo -e "\033[36m sarah 无权访问系统上的交互式 shell !  \033[0m"`"
	   ;;
	 *)
	   T16=0 && echo " `echo -e "\033[31m sarah 的登录 shell 配置有误 !  \033[0m"`"
           ;;
esac

NP=`cat /etc/shadow | grep natasha | awk -F: '{print $2}'`

if [ "$NP" != "!!" ]
   then
	   echo " `echo -e "\033[36m natasha 密码设置成功 !  \033[0m"`"
   else
	   echo " `echo -e "\033[31m natasha 密码设置失败 !  \033[0m"`"
fi

HP=`cat /etc/shadow | grep harry | awk -F: '{print $2}'`

if [ "$HP" != "!!" ]
   then
	   echo " `echo -e "\033[36m harry 密码设置成功 !  \033[0m"`"
   else
	   echo " `echo -e "\033[31m harry 密码设置失败 !  \033[0m"`"
fi


SP=`cat /etc/shadow | grep sarah | awk -F: '{print $2}'`

if [ "$SP" != "!!" ]
   then
	   echo " `echo -e "\033[36m sarah 密码设置成功 !  \033[0m"`"
   else
	   echo " `echo -e "\033[31m sarah 密码设置失败 !  \033[0m"`"
fi

#5.配置 cron
echo
echo "5.配置 cron"

CRON=`crontab -l -u natasha | awk '{print $6}'`

if [ "$CRON" == "logger" ]
   then
	   T17=10 && echo " `echo -e "\033[36m 配置 cron 作业成功 !  \033[0m"`"
   else
	   T17=0 && echo " `echo -e "\033[31m 配置 cron 作业失败 !  \033[0m"`"
fi

#6.创建协作目录
echo
echo "6.创建协作目录"

ls /home/managers &>/dev/null

if [ $? -eq 0 ];then
	   T18=5 && echo " `echo -e "\033[36m 创建 /home/managers 目录成功!  \033[0m"`"
   else
	   T18=0 && echo " `echo -e "\033[31m 创建 /home/managers 目录失败!  \033[0m"`"
fi

MG=`ls -dl /home/managers/ | awk '{print $4}'`

if [ "$MG" == "sysmgrs" ];then
	T19=5 && echo " `echo -e "\033[36m /home/managers 目录的所属组是 sysmgrs !  \033[0m"`"
   else
	T19=0 && echo " `echo -e "\033[31m /home/managers 目录的所属组不是 sysmgrs !  \033[0m"`"
fi

AUTH=`ls -dl /home/managers/ | awk '{print $1}'`

if [ "$AUTH" == "drwxrws---." ];then
	T20=5 && echo " `echo -e "\033[36m 相关权限配置成功!  \033[0m"`"
   else
	T20=0 && echo " `echo -e "\033[31m 相关权限配置失败!  \033[0m"`"
fi

#7.配置 NTP
echo
echo "7.配置 NTP"

NS=`systemctl status chronyd | grep running | awk '{print $3}' | tr -d \( | tr -d \)`

if [ "$NS" == "running" ];then
	echo " `echo -e "\033[36m NTP 处于运行状态！ \033[0m"`"
   else
	echo " `echo -e "\033[31m NTP 状态异常！ \033[0m"`"
fi

NENABLED=`systemctl is-enabled chronyd 2>/dev/null`

if [ "$NENABLED" == "enabled" ];then
	T21=10 && echo " `echo -e "\033[36m NTP 开机启动配置成功!  \033[0m"`"
   else
	T21=0 && echo " `echo -e "\033[31m NTP 开机启动配置失败!  \033[0m"`"
fi
	
#8.配置 autofs
echo
echo "8.配置 autofs"

A1=`cat /etc/auto.master | grep rhel | awk '{print $1}'`

if [ "$A1" == "/rhel" ];then
	T22=3 && echo " `echo -e "\033[36m 主配置已添加 /rhel!  \033[0m"`"
   else
	T22=0 && echo " `echo -e "\033[31m 主配置未添加 /rhel!  \033[0m"`"
fi


A2=`cat /etc/auto.master | grep rhel | awk '{print $2}'`

if [ "$A2" == "/etc/auto.misc" ];then
	T23=3 && echo " `echo -e "\033[36m 主配置已添加 /etc/auto.misc!  \033[0m"`"
   else
	T23=0 && echo " `echo -e "\033[31m 主配置未添加 /etc/auto.misc!  \033[0m"`"
fi

A3=`cat /etc/auto.misc  | grep redhat | awk '{print $3}'`

if [ "$A3" == "redhat.example.com:/rhel/user1" ];then
	T24=3 && echo " `echo -e "\033[36m 次配置已添加 redhat.example.com:/rhel/user1!  \033[0m"`"
   else
	T24=0 && echo " `echo -e "\033[31m 次配置未添加 redhat.example.com:/rhel/user1!  \033[0m"`"
fi


AS=`systemctl status autofs | grep running | awk '{print $3}' | tr -d \( | tr -d \)`

if [ "$AS" == "running" ];then
	T25=3 && echo " `echo -e "\033[36m autofs 处于运行状态！ \033[0m"`"
   else
	T25=0 && echo " `echo -e "\033[31m autofs 状态异常！ \033[0m"`"
fi

AENABLED=`systemctl is-enabled autofs 2>/dev/null`

if [ "$AENABLED" == "enabled" ];then
	T26=3 && echo " `echo -e "\033[36m autofs 开机启动配置成功!  \033[0m"`"
   else
	T26=0 && echo " `echo -e "\033[31m autofs 开机启动配置失败!  \033[0m"`"
fi

#9.配置 /var/tmp/fstab 权限
echo
echo "9.配置 /var/tmp/fstab 权限"

ls -l /var/tmp/fstab &>/dev/null

if [ $? -eq 0 ];then
	T27=3 && echo " `echo -e "\033[36m 复制 /etc/fstab 到 /var/tmp/fstab 成功!  \033[0m"`"
   else
	T27=0 && echo " `echo -e "\033[31m 复制 /etc/fstab 到 /var/tmp/fstab 失败!  \033[0m"`"
fi

NL=`getfacl -p /var/tmp/fstab | grep natasha | awk -F: '{ print $3}'`

if [ "$NL" == "rw-" ];then
	T28=4 && echo " `echo -e "\033[36m 配置 natasha 用户权限成功!  \033[0m"`"
   else
	T28=0 && echo " `echo -e "\033[31m 配置 natasha 用户权限失败!  \033[0m"`"
fi

HL=`getfacl -p /var/tmp/fstab | grep harry | awk -F: '{ print $3}'`

if [ "$HL" == "---" ];then
	T29=4 && echo " `echo -e "\033[36m 配置 harry 用户权限成功!  \033[0m"`"
   else
	T29=0 && echo " `echo -e "\033[31m 配置 harry 用户权限失败!  \033[0m"`"
fi

OL=`getfacl -p /var/tmp/fstab | grep other | awk -F: '{ print $3}'`

if [ "$OL" == "r--" ];then
	T30=4 && echo " `echo -e "\033[36m 所有其他用户（当前或未来）能够读取 /var/tmp/fstab!  \033[0m"`"
   else
	T30=0 && echo " `echo -e "\033[31m 所有其他用户（当前或未来）不能够读取 /var/tmp/fstab!  \033[0m"`"
fi

#10.配置用户帐户
echo
echo "10.配置用户帐户"

ID=`id user2 | awk '{print $1}' | tr -d uid= | tr -d \(ser2\)`

if [ "$ID" == "3389" ];then
	T31=5 && echo " `echo -e "\033[36m  用户 user2 的 ID 为3389！\033[0m"`"
   else
	T31=0 && echo " `echo -e "\033[31m  用户 user2 的 ID 不为3389！\033[0m"`"
fi

UP=`cat /etc/shadow | grep user2 | awk -F: '{print $2}'`

if [ "$UP" != "!!" ]
   then
	echo " `echo -e "\033[36m  user2 密码设置成功 !  \033[0m"`"
   else
	echo " `echo -e "\033[31m  user2 密码设置失败 !  \033[0m"`"
fi

#11.查找文件
echo
echo "11.查找文件"

USER=`ls -l /root/dfiles/ | awk '{if(NF>2) print $3}' | head -1`

if [ "$USER" == "user3" ];then
	T32=5 && echo " `echo -e "\033[36m  查找文件成功！\033[0m"`"
   else
	T32=0 && echo " `echo -e "\033[31m  查找文件失败！\033[0m"`"
fi

#12.查找字符串
echo
echo "12.查找字符串"

RE=`grep re /root/files`

if [ $? -eq 0 ];then
	T33=5 && echo " `echo -e "\033[36m  查找字符串成功！\033[0m"`"
   else
	T33=0 && echo " `echo -e "\033[31m  查找字符串失败！\033[0m"`"
fi

#13.创建存档
echo 
echo "13.创建存档"

TAR=`tar -tvf /root/books.tar.gz | head -1 | awk '{print $6}'`

if [ "$TAR" == "usr/local/" ];then
	T34=5 && echo "  `echo -e "\033[36m 创建存档成功！\033[0m"`"
   else
	T34=0 && echo "  `echo -e "\033[31m 创建存档失败！\033[0m"`"
fi

#14.设置 root 密码
echo
echo "14.设置 root 密码"

T35=15 && echo "  `echo -e "\033[36m 设置 root 密码成功！\033[0m"`"

#15.配置您的系统以使用默认存储库
echo
echo "15.配置您的系统以使用默认存储库"

yum remove -y lrzsz &> /dev/null
yum install -y lrzsz &> /dev/null

if [ $? -eq 0 ];then
	   T36=15 && echo "  `echo -e "\033[36m yum源配置成功！  \033[0m"`"
   else  
	   T36=0 && echo "  `echo -e "\033[31m yum源配置失败！  \033[0m"`"
fi

#16.调整逻辑卷大小
echo
echo "16.调整逻辑卷大小"

VO=`df -h | grep vo | awk '{print $2}' | tr -d M`

if [ "$VO" -ge 167 ] && [ "$VO" -le 193 ];then
	T37=20 && echo "  `echo -e "\033[36m 调整逻辑卷大小成功！  \033[0m"`"
   else
	T37=0 && echo "  `echo -e "\033[31m 调整逻辑卷大小失败！  \033[0m"`"
fi

#17.添加交换分区
echo 
echo "17.添加交换分区"

SWAP=`free -h | grep Swap | awk '{print $2}' | tr -d Gi`

if [ "$SWAP" == "2.6" ];then
	T38=20 && echo "  `echo -e "\033[36m 添加交换分区成功！  \033[0m"`"
   else
	T38=0 && echo "  `echo -e "\033[31m 添加交换分区失败！  \033[0m"`"
fi

#18.创建逻辑卷
echo
echo "18.创建逻辑卷"

NPGROUP=900
NPGROUP1=`vgdisplay | grep "Alloc PE" | head -n 2 | tail -n 1 | awk '{print $7}' | awk -F. '{print $1}'`
NPGROUP2=`vgdisplay | grep "Alloc PE" | head -n 2 | head -n 1 | awk '{print $7}' | awk -F. '{print $1}'`

case $NPGROUP in
	"`echo $NPGROUP1`")
	 T39=25 && echo " `echo -e "\033[36m  创建逻辑卷成功！  \033[0m"`"
	 ;;
	"`echo $NPGROUP2`")
	 T39=25 && echo " `echo -e "\033[36m  创建逻辑卷成功！  \033[0m"`"
         ;;
        *)
         T39=0 && echo " `echo -e "\033[31m  创建逻辑卷失败！  \033[0m"`"
         ;;
esac	 

#19.创建 VDO 卷
echo
echo "19.创建 VDO 卷"

VDO=`df -h | grep vbark | awk '{print $2}' | tr -d G`

if [ "$VDO" == "80" ];then
	T40=15 && echo "  `echo -e "\033[36m 创建 VDO 卷成功！  \033[0m"`"
   else
	T40=0 && echo "  `echo -e "\033[31m 创建 VDO 卷失败！  \033[0m"`"
fi

#20.配置系统调优
echo
echo "20.配置系统调优"

tuned-adm list | grep virtual-guest &>/dev/null

if [ $? -eq 0 ];then
	T41=10 && echo "  `echo -e "\033[36m 配置系统调优成功！  \033[0m"`"
   else
	T41=0 && echo "  `echo -e "\033[31m 配置系统调优失败！  \033[0m"`"
fi

#21.配置容器使其自动启动
echo
echo "21.配置容器使其自动启动"

ls -l /etc/systemd/system/container-journal-server.service &>/dev/null

if [ $? -eq 0 ];then
	T42=5 && echo "  `echo -e "\033[36m container-journal-server 服务配置文件已存在！  \033[0m"`"
   else
	T42=0 && echo "  `echo -e "\033[31m container-journal-server 服务配置文件不存在！  \033[0m"`"
fi

CENABLED=`systemctl is-enabled container-journal-server 2>/dev/null`

if [ "$CENABLED" == "enabled" ];then
	T43=5 && echo "  `echo -e "\033[36m container-journal-server 服务已配置开机启动！  \033[0m"`"
   else
	T43=0 && echo "  `echo -e "\033[31m container-journal-server 服务未配置开机启动！  \033[0m"`"
fi

CSTATUS=`systemctl status container-journal-server | grep running | awk '{print $3}' | tr -d \( | tr -d \)`

if [ "$CSTATUS" == "running" ];then
	T44=10 && echo "  `echo -e "\033[36m container-journal-server 服务运行状态正常！  \033[0m"`"
   else
	T44=0 && echo "  `echo -e "\033[31m container-journal-server 服务运行状态不正常！  \033[0m"`"
fi

#22.为容器配置持久存储
echo
echo "22.为容器配置持久存储"

ls -l /home/student/container_logfile | grep journal &>/dev/null

if [ $? -eq 0 ];then
	T45=5 && echo "  `echo -e "\033[36m *.journal 的文件已复制到 /home/student/container_logfile 中！  \033[0m"`"
   else
	T45=0 && echo "  `echo -e "\033[31m *.journal 的文件未复制到 /home/student/container_logfile 中！  \033[0m"`"
fi


podman inspect `podman ps | head -n 2 | awk '{print $NF}' | tail -n 1` | grep /var/log/journal &>/dev/null
if [ $? -eq 0 ];then
	T46=20 && echo "  `echo -e "\033[36m 配置配置持久存储成功！  \033[0m"`"
   else
	T46=0 && echo "  `echo -e "\033[31m 配置配置持久存储失败！  \033[0m"`"
fi

echo
Z=$(($T1+$T2+$T3+$T4+$T5+$T6+$T7+$T8+$T9+$T10+$T11+$T12+$T13+$T14+$T15+$T16+$T17+$T18+$T19+$T20+$T21+$T22+$T23+$T24+$T25+$T26+$T27+$T28+$T29+$T30+$T31+$T32+$T33+$T34+$T35+$T36+$T37+$T38+$T39+$T40+$T41+$T42+$T43+$T44+$T45+$T46))

echo "----------------------------------------------------------------"
echo "`echo -e "\033[31m   你的红帽认证系统管理员模拟考试成绩为：$Z 分！  \033[0m"`"
echo

if [ $Z -ge 210 ];then
    echo "  `echo -e "\033[32m 恭喜！你已经通过红帽认证系统管理员模拟考试！  \033[0m"`"
  else
    echo "  `echo -e "\033[33m 很遗憾！你没有通过红帽认证系统管理员模拟考试！  \033[0m"`"
fi

echo
echo "   从学习中获得技术，从技术中获得成就感！"
echo "   坚持学习，成为红帽认证系统管理员！"
echo "----------------------------------------------------------------"
