目录
1. 项目拓扑2. 要求3. Shell 编程
一、项目拓扑
二、要求
准备环境:
准备两台虚拟机,并根据您的环境配置相应的IP地址、相应的主机名和SSH密钥,用于登录workstation.exam.com节点,并满足以下要求:
1、编写shell脚本时,要保证代码逻辑符合自己的要求,前后代码风格一致,执行时显示的信息简洁,与代码意图一致。
2. 脚本必须实现node.exam.com节点的要求,并包含相应服务的测试结果。
您必须确定必须在node.exam.com 节点上完成的要求以及每个步骤的结果。
1. 实现本地软件仓库配置。仓库路径为/cdrom。
2、安装httpd并绑定提供Web和DNS服务的软件包。
3. 实施Web 服务器www.exam.com 和www.test.com。
4. 当您请求访问www.exam.com 时,页面将显示“欢迎参加考试”。
5. 当您请求访问www.test.com时,页面内容将为“欢迎访问测试”。
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、分配给每个人的虚拟机的IP地址不一定要在172.16.10/24网段,所以IP地址不必和实验相符,只要符合你的要求即可。
实验环境:欧拉系统
完整代码:
#!/bin/bash
# 检查你是否是root用户
if [ \’$(id -u)\’ -ne \’0\’ ];
echo \’此脚本必须以root 身份运行\’
1号出口
除此之外
echo \’—-以root 身份运行—-\’
菲
# 配置本地软件仓库
本地存储库(){
ls /cdrom /dev/null
如果[ $? -ne 0 ];那么
`mkdir -p /cdrom`
`挂载/dev/cdrom /cdrom /dev/null`
除此之外
挂载/dev/cdrom /cdrom /dev/null
菲
cat EOF /etc/yum.repos.d/local.repo
[当地的]
名称=本地存储库
Baseurl=file:///cdrom
有效=1
gpg检查=0
结束后
echo \’—-本地软件仓库配置完成—-\’
}
#安装httpd和bind包
安装软件(){
#检查这两个软件包是否安装
httpd_status=$(rpm -qa httpd | wc -l)
绑定状态=$(rpm -qa 绑定| wc -l)
如果[ $httpd_status -eq 0 ];那么
百胜安装httpd -y /dev/null
systemctl 启用httpd –now
菲
如果[ $bind_status -eq 0 ];那么
yum 安装绑定-y /dev/null
systemctl 启用named.service –now。
菲
echo \’—-https和绑定软件包已安装并开机自动启动—-\’
}
#实施Web 服务器www.exam.com 和www.test.com。
网络服务器2(){
#创建页面保存路径—www.exam.com
ls /testweb1 /dev/null
如果[ $? -ne 0 ];
mkdir /testweb1
echo \’欢迎参加考试\’ /testweb1/index.html
菲
#www.test.com
ls /testweb2 /dev/null
如果[ $? -ne 0 ];那么
mkdir /testweb2
echo \’欢迎参加测试\’ /testweb2/index.html
菲
#获取本机的IP地址进行监控
ip=$(ip add | grep -E \’inet.*global\’ | head -1 | awk \'{print $2}\’|cut -d/-f1)
cat EOF /etc/httpd/conf.d/vhost.conf
目录/testweb1
没有权限覆盖
需要所有权限
/目录
虚拟主机$ip:80
文档根目录/testweb1
服务器名称www.exam.com
/虚拟主机
目录/testweb2
没有权限覆盖
需要所有权限
/目录
虚拟主机$ip:80
文档根目录/testweb2
服务器名称www.test.com
/虚拟主机
结束后
#重启服务器
重新启动systemctl httpd.service
echo \’—-Web服务器现已配置完毕,可以通过www.exam.com/www.test.com在本地访问—-\’
}
# 永久且立即启用Web和DNS服务的防火墙权限
防火墙路径(){
firewall_status=$(systemctl 处于活动状态firewalld.service)
如果[ \’$firewall_status\’=\’active\’ ];那么
防火墙cmd –add-service=httpd –permanent /dev/null
防火墙-cmd –reload /dev/null
防火墙cmd –add-port=53/udp –permanent /dev/null
防火墙-cmd –reload /dev/null
除此之外
systemctl 启用firewalld.service –now /dev/null
防火墙cmd –add-service=httpd –permanent /dev/null
防火墙-cmd –reload /dev/null
防火墙cmd –add-port=53/udp –permanent /dev/null
防火墙-cmd –reload /dev/null
菲
echo \’—-Web和DNS服务防火墙发布完成—-\’
}
#实现DNS服务并提供该环境下的所有主机名解析
dns_服务(){
#创建主DNS配置文件的备份
ls /etc/named.conf.bak /dev/null
如果[ $? -ne 0 ];那么
cp /etc/named.conf /etc/named.conf.bak /dev/null
菲
#更改主机配置文件。首先检查配置文件是否被修改。请检查是否有任何变化。
num=$(grep \’#allow-query\’ /etc/named.conf|wc -l)
#获取DNS IP地址
ip_dns=$(主机名-I | awk \'{print $2}\’)
#获取Web服务器的IP地址
ip_web=$(主机名-I | awk \'{print $1}\’)
如果[ $num -eq 0 ];那么
sed -i \’s/allow-query/#allow-query/\’ /etc/named.conf
sed -i \’s/dnssec-validation/#dnssec-validation/\’ /etc/named.conf
sed -i /监听端口53 { 127.0.0.1;/监听端口53 { 任何;/etc/named.conf
cat EOF /etc/named.conf
区域“test.com”IN{
类型大师。
文件“named.test.com”;
};
区域“exam.com”IN{
类型大师。
文件“named.exam.com”;
};
结束后
#写入区域设置文件
猫\’EOF\’ /var/named/named.test.com
$TTL 1D
@SOA @admin.test.com (
0;系列
1D;
1H;重试
1W已过期
3H);最小
NS1
结束后
猫EOF /var/named/named.test.com
ns1 A $ip_dns
www$ip_web
结束后
猫\’EOF\’ /var/named/named.exam.com
$TTL 1D
@SOA @admin.exam.com (
0;系列
1D;
1H;重试
1W已过期
3H);最小
结束后
猫EOF /var/named/named.exam.com
NS1
ns1 A $ip_dns
www$ip_web
结束后
菲
#重启DNS服务
重新启动名为systemctl
echo \’—DNS服务配置完成,重启完成—-\’
echo \’****dns_ip:$ip_dns;web_ip:$ip_web****\’
}
#修改本地/etc/resolv.conf
更改文件(){
ip_dns=$(主机名-I | awk \'{print $2}\’)
echo \’名称服务器$ip_dns\’ /etc/resolv.conf
echo \’—/etc/resolv.conf DNS地址更改完成—\’
echo \’通过curl www.exam.com 或curl www.test.com 进行测试\’
}
本地存储库
安装软件
网络服务器2
域名解析服务
防火墙路径
更改文件
截屏:
以上关于#[Shell编程小项目]的相关内容来源网络,仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93339.html