服务器作业4

[root@localhost ~]# vim 11.sh

#关闭防火墙

systemctl stop firewalld
setenforce  0


#1.接收用户部署的服务名称
read -p "服务名称:(nginx)" server_name
if [ $server_name != nginx ];then
    echo "输入的不是nginx,脚本退出"
    exit 1
fi


# 判断是否安装了指定服务

#command -v和rpm -q 可能无法精确识别服务是否安装,可能是已经安装识别为未安装

#可能未安装识别为已安装

#上面两个命令应该是可以识别,但不知道为什么无法像which一样精确识别

#systemctl status 服务名:当服务未安装是,返回会显示Unit [服务名].service could not be found.

#a=`systemctl status $server`
#if [ $a ==  "Unit $server.service could not be found." ];

#这个命令可能出现“==”号附近会报错

#或者无法精确识别
#if `command -v $service_name &>/dev/null`; then
#if `rpm -q  $service_name &>/dev/null`; then

#&>:是一种重定向操作符。它将标准输出(stdout)和标准错误输出(stderr)合并到一起进行重定向

#which nginx &>/dev/null:这个命令主要用于检查系统中是否能找到nginx命令,并且在检查过程中不显示任何与查找相关的输出内容,脚本可以根据这个命令的退出状态码(如果能找到nginx命令,退出状态码为 0;否则为非 0)来进一步判断nginx是否已安装或者在系统路径中有正确的配置

if which nginx &>/dev/null; then

    #已安装;自定义网站配置路径为/www;并创建共享目录和网页文件;重启服务
        echo "nginx已安装"
        #web_path配置路径
        web_path="/www"
        mkdir -p $web_path
        #配置文件路径
        config_path="/etc/nginx/conf.d"
        #配置文件
        touch $config_path/new_test.conf
        config_path_file="$config_path/new_test.conf"
#配置文件配置

#通过

#cat << EOF > 文件名

#内容

#EOF

#的方式向文件中写入内容
cat << EOF > $config_path_file
server{
        listen 80;
        root $web_path;

}

EOF
        # 创建共享目录和网页文件
        #共享目录
        shared_path="$web_path/shared"
        mkdir -p $shared_path
        #网页文件
        #往网页文件里写入内容,测试用
        echo "this is a test" > $web_path/index.html
        #重启nginx服务
        systemctl restart $server_name
else
    echo "nginx未安装"
    mount /dev/sr0 /mnt
        dnf install nginx -y
        echo "nginx安装成功"
        #web_path配置路径
        web_path="/www"
        mkdir -p $web_path
        #配置文件路径
        config_path="/etc/nginx/conf.d"
        #配置文件
        touch $config_path/new_test.conf
        config_path_file="$config_path/new_test.conf"
#配置文件配置
cat << EOF > $config_path_file
server{
        listen 80;
        root $web_path;

}

EOF
        # 创建共享目录和网页文件
        #共享目录
        shared_path="$web_path/shared"
        mkdir -p $shared_path
        #网页文件
        #往网页文件里写入内容,测试用
        echo "this is a test" > $web_path/index.html
        #重启nginx服务
        systemctl restart $server_name


fi
# 测试服务是否成功运行

#systemctl is-active 服务名

#查看服务是否运行,如果运行返回“active”
live=`systemctl is-active $server_name`
if [ $live == active ];then
    echo "服务成功运行,下面是网站内容"
#已运行,访问网站
    curl `hostname -I`
else
#未运行,提示服务未启动,并显示自定义的配置文件内容
    echo "服务未启动"
    echo "下面是nginx主配置文件内容"

#cat 文件名

#查看文件内容
    cat $config_path_file
fi

echo "我是朱家乐" | mail -s "作业4" -a 11.sh 15380914067@163.com

邮箱配置:
#挂载
[root@localhost ~]# mount /dev/sr0 /mnt
#安装s-nail邮箱服务
[root@localhost ~]# dnf install s-nail -y
#在配置文件的末尾添加配置
[root@localhost ~]# vim /etc/s-nail.rc 

############################
#网易邮箱@163.com
#smtp-auth-password要开启网易邮箱的IMAP/SMTP服务,得到的授权码
set  from=15380914067@163.com
set  smtp=smtp.163.com
set  smtp-auth-user=15380914067@163.com
set  smtp-auth-password=JBntypapSgHPrMX5
set  smtp-auth=login
#                                         自己的邮箱

命令格式:

 #-a  文件名;把文件发送通过邮箱发送

echo "我是朱家乐" | mail -s "作业4" -a 11.sh 15380914067@163.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/62523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二,[ACTF2020 新生赛]Include1感谢 Y1ng 师傅供题。

进入靶场后&#xff0c;发现tips可以点击 点击后进入此页面 猜测此为文件包含漏洞,构造payload&#xff0c;并成功得到base64编码后的源码 详解payload&#xff1a; php://filter/readconvert.base64-encode/resourceflag.php 1.php://filter是PHP中的一个流封装协议&#xf…

APP聊天项目介绍

项目结构说明 res/layout目录&#xff1a;存放布局相关的 XML 文件&#xff0c;用于定义界面的外观&#xff0c;包含activity_main.xml&#xff08;主界面布局&#xff09;和message_item.xml&#xff08;聊天消息项布局&#xff09;。 res/drawable目录&#xff1a;存放一些…

vue3.0 根据富文本html页面生成压缩包(含视频在线地址、图片在线地址、前端截图、前端文档)

vue3.0生成压缩包&#xff08;含在线地址、前端截图、前端文档&#xff09; 需求描述效果开始下载插件包基本代码构造 点击下载按钮1.截图content元素&#xff0c;并转化为pdfcanvas putImageData、getImageDatagetImageData 获取指定矩形区域的像素信息putImageData 将这些数据…

图像小波去噪与总变分去噪详解与Python实现

目录 图像小波去噪与总变分去噪详解与实现1. 基础概念1.1 噪声类型及去噪问题定义1.2 小波去噪算法基础1.3 总变分去噪算法基础2. 小波去噪算法2.1 理论介绍2.2 Python实现及代码详解2.3 案例分析3. 总变分去噪算法3.1 理论介绍3.2 Python实现及代码详解3.3 案例分析4. 两种算法…

单细胞细胞通讯全流程分析教程,代做分析和辅导

0. 分析参数文件和细胞通讯的演示数据 0.1 细胞通讯分析总的参数文件&#xff0c;后面部分细胞通讯分析模块会用到 分析参数文件 参数文件名称&#xff1a;total_analysis_params_demo.xlsx &#xff0c;很多分析模块都是这个总的参数文件&#xff0c;我的这个总的参数文件如…

auto与decltype

auto: 1.定义&#xff1a; 在C中&#xff0c; auto 是一个类型说明符&#xff0c;它让编译器在编译阶段自动推导变量的类型&#xff0c;其类型取决于初始化表达式的类型。auto 在声明变量时使用&#xff0c;编译器会根据变量初始化表达式自动推断类型。 #include<iostrea…

[Code]R2U-Net中的眼部血管分割

DenseUnet.py import torch import torch.nn as nn import torch.nn.functional as F# 定义一个名为Single_level_densenet的类,继承自nn.Module,它构建了一个单层级的DenseNet结构 class Single_level_densenet(nn.Module):def __init__(self, filters, num_conv=4):super…

Java中的“封装“详解

封装&#xff08;Encapsulation&#xff09;是面向对象编程&#xff08;OOP&#xff09;的四大基本特性之一。它通过将数据和操作数据的方法绑定在一起&#xff0c;并隐藏对象的内部实现细节&#xff0c;只提供有限的访问接口来实现。这种机制不仅提高了代码的安全性&#xff0…

深度学习常用方法(一)

1. Dropout 的原理 Dropout 是一种防止神经网络过拟合&#xff08;学习得过于复杂&#xff0c;导致泛化能力差&#xff09;的方法。 原理&#xff1a;在每次训练时&#xff0c;随机“丢弃”一部分神经元&#xff08;即暂时让它们失效&#xff0c;设置为零&#xff09;&#x…

C++趣味编程:基于树莓派Pico的模拟沙漏-倾斜开关与LED的互动实现

沙漏,作为一种古老的计时工具,利用重力让沙子通过狭小通道,形成了计时效果。在现代,我们可以通过电子元件模拟沙漏的工作原理。本项目利用树莓派Pico、倾斜开关和LED,实现了一个电子沙漏。以下是项目的详细技术解析与C++代码实现。 一、项目概述 1. 项目目标 通过倾斜开关…

【Oracle】个人收集整理的Oracle常用SQL及命令

【建表】 create table emp( id number(12), name nvarchar2(20), primary key(id) ); 【充值一】 insert into emp select rownum,dbms_random.string(*,dbms_random.value(6,20)) from dual connect by level<101; 【充值二】 begin for i in 1..100 loop inser…

RAG (Retrieval Augmented Generation) 检索增强和生成

1 RAG技术简介 1.1 RAG技术概述 RAG&#xff08;Retrieval Augmented Generation&#xff09; 是一种结合了检索&#xff08;Retrieval&#xff09;和生成&#xff08;Generation&#xff09;的技术&#xff0c;旨在通过利用外部知识库来增强大型语言模型&#xff08;LLMs&am…

Android 编译和使用libheif

项目中需要使用libheif,libde265,libyuv。一下是相应的cmakelist.txt。这里直接使用了静态库。 里面涉及到c包的链接&#xff0c;需要stdc。 ${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/liblibde265.a这个路径由于操作过程中copy出现问题&#xff0c;多了一层路径&…

【无标题】多模态对齐

第一章 绪论 1.1 研究背景和意义 在现实生活中,人类往往是以事件为单位来认识和理解世界的,一个事件包 含了时间、地点、参与者等多个静态因素。将这些事件信息从非结构化数据中提 取出来,已逐渐成为信息抽取领域的关键任务之一。事件通常并非孤立存在,而 是彼此关联,它…

DIY-Tomcat part 3 实现对动态资源的请求

实现ServletRequest package connector;import javax.servlet.RequestDispatcher; import javax.servlet.ServletInputStream; import javax.servlet.ServletRequest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i…

黑马程序员Java笔记整理(day05)

1.面向对象编程 2.用法 3.对象是什么 4.对象在计算机中是啥 5.无参与有参构造器 小结: 6.this的作用 7.小结 8.封装 9.小结 10.实体类 11.小结 12.static 13.小结 14.static修饰方法 15.static应用前景 16.几个注意事项 17.java中可以直接用类的名字创建数组&#xff0c;如: M…

Perforce SAST专家详解:自动驾驶汽车的安全与技术挑战,Klocwork、Helix QAC等静态代码分析成必备合规性工具

自动驾驶汽车安全吗&#xff1f;现代汽车的软件包含1亿多行代码&#xff0c;支持许多不同的功能&#xff0c;如巡航控制、速度辅助和泊车摄像头。而且&#xff0c;这些嵌入式系统中的代码只会越来越复杂。 随着未来汽车的互联程度越来越高&#xff0c;这一趋势还将继续。汽车越…

《Python基础》之数据加密模块hashlib的用法

目录 一、简介 二、用法 步骤一、导入hashlib库 步骤二、创建哈希对象 步骤三、往哈希对象中传值 1、可以在创建对象的时候传值 2、使用updata传值 步骤四、获取经过哈希对象加密后的值 三、注意事项 1、编码问题 2、安全性 3、多次传值 四、总结 一、简介 hashli…

QT实战--qt各种按钮实现

本篇介绍qt一些按钮的实现&#xff0c;包括正常按钮&#xff1b;带有下拉箭头的按钮的各种实现&#xff1b;按钮和箭头两部分分别响应&#xff1b;图片和按钮大小一致&#xff1b;图片和按钮大小不一致的处理&#xff1b;文字和图片位置的按钮 效果图如下&#xff1a; 详细实现…

恶补英语初级第12天,《描述进行中的动作》

对话 Where’s Sally, Jack? She’s in the garden, Jane. What’s she doing? she’s sitting under the tree. Is Tim in the garden, too? Yes, he is. He’s climbing the tree. I beg your pardon? Who’s climbing the tree? Tim is. What about the dog? The dog’…