【shell编程小项目】(shell编程基本步骤)

【shell编程小项目】 目录 一、项目拓扑二、要求三、shell编程 一、项目拓扑 二、要求
环境准备: 准备两个虚拟机,按照环境配置好对应的 IP 地址和对应的主机名和 SSH 密钥登录在 workstat

目录

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

(0)
CSDN的头像CSDN
上一篇 2024年7月6日
下一篇 2024年7月6日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注