一、项目拓扑
二、要求
环境准备:
准备两个虚拟机,按照环境配置好对应的 IP 地址和对应的主机名和 SSH 密钥登录在 workstation.exam.com 节点实现如下需求:
1、编写 Shell 脚本,要求代码逻辑符合需求,前后代码风格统一,执行时显示信息简明扼要,符合代码意图。
2、该脚本应当实现 node.exam.com 节点上的需求,同时包含对应服务的测试结果
在 node.exam.com 节点上应当完成的需求,并应当对每个步骤的结果进行判断:
1、实现本地软件仓库配置,仓库路径为 /cdrom
2、实现安装 httpd 和 bind 软件包,用来提供 Web 和 DNS 服务
3、实现 Web 服务器 www.exam.com 和 www.test.com
4、要求访问 www.exam.com 时,页面内容为 Welcome to exam
5、要求访问 www.test.com 时,页面内容为 Welcome to test
6、该 Web 服务器监听地址为 172.16.10.10,端口为 80
7、要求实现 DNS 服务,监听地址为 172.16.10.11,要求提供该环境中所有的主机名解析。
8、要求实现防火墙放行 Web 和 DNS 服务,永久并立即生效
9、要求实现 Web 和 DNS 服务开机自动启动
三、shell编程
1、首先node.exam.com这个节点需要两个ip地址,可以通过nmcli命令添加IP地址。
2、由于每个人的虚拟vm分配的IP地址不一定是172.16.10/24这个网段,所以ip地址不必跟实验一致,只要能实现需求就行。
实验环境:欧拉系统
完整的代码:
#!/bin/bash
# 检查是否为 root 用户
if [ "$(id -u)" -ne "0" ]; then
echo "此脚本必须以 root 身份运行"
exit 1
else
echo "----正在以root身份运行----"
fi
# 配置本地软件仓库
local_repo(){
ls /cdrom &> /dev/null
if [ $? -ne 0 ];then
`mkdir -p /cdrom`
`mount /dev/cdrom /cdrom &>/dev/null`
else
mount /dev/cdrom /cdrom &>/dev/null
fi
cat <<EOF > /etc/yum.repos.d/local.repo
[local]
name=Local Repository
baseurl=file:///cdrom
enabled=1
gpgcheck=0
EOF
echo "----配置本地软件仓库已经完成-----"
}
#安装 httpd 和 bind 软件包
install_soft(){
#查看这两个软件包是否安装
httpd_status=$(rpm -qa httpd | wc -l<