Python作业05

需求:某公司因为网站服务经常出现异常,需要你开发一个脚本对服务器上的服务进行监控;检测目标服务器上是否存在nginx软件(提供web服务的软件),如果不存在则安装(服务器可能的操作系统Ubuntu24/RedHat9);如果nginx软件存在则检查nginx服务是否启动,如果没有启动则启动该服务(为了确认是否启动成功,需要在自己浏览器中访问服务器ip地址对应的URL: h t t p : / / 192.168.0.200 http://192.168.0.200 http://192.168.0.200 是否能看到nginx启动页面)

  • 提示1:检测服务器操作系统,推荐命令:uname -a,从它里面提取关键字检测
  • 提示2:unbutn安装命令apt install 软件名称,redhat安装命令yum install 软件名称
  • 提示3:nginx是一个软件,启动之后就会是一个名称为nginx的服务,提供网站服务-启动之后能在80端口访问到一个默认页面http://192.168.0.200:80等价于http://192.168.0.200,因为http://协议默认端口-80端口;需要注意https://默认端口-443端口
import paramiko
from My_log import Loggerlogger = Logger()# 准备登录信息
host = "192.168.5.128"
username = "root"
password = "041021"
logger.info(f"准备连接远程主机{host}")
logger.info(f"当前登录账号{username}")# 创建 SSH 对象,连接远程服务器
logger.info("准备 SSH 连接")
# 创建 SSH 连接对象
ssh = paramiko.SSHClient()
# 忽略连接警告--known_hosts 提示
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(host, username=username, password=password)try:# 检查是否安装了nginxstdin, stdout, stderr = ssh.exec_command('which nginx')nginx_output = stdout.read().decode().strip()if nginx_output:logger.info("已安装 Nginx。")# 检查 Nginx 服务状态stdin, stdout, stderr = ssh.exec_command("systemctl is-active nginx")result = stdout.read().decode().strip()if result == "active":logger.info("Nginx 服务已启用。")else:logger.info("Nginx 服务未启用,正在启动...")ssh.exec_command("systemctl start nginx")# 确认是否启动成功,通过在本地尝试访问URLstdin, stdout, stderr = ssh.exec_command("curl http://192.168.5.128")access_result = stdout.read().decode().strip()if "Welcome to nginx!" in access_result:logger.info("Nginx 服务启动成功。")else:logger.info("Nginx 服务启动失败,请检查相关配置。")else:logger.info("未安装 Nginx,开始下载安装...")ssh.exec_command("yum -y install nginx")logger.info("Nginx 安装完成,继续检查服务状态...")# 检查新安装的Nginx服务状态stdin, stdout, stderr = ssh.exec_command("systemctl is-active nginx")result = stdout.read().decode().strip()if result == "active":logger.info("Nginx 服务已启用。")else:logger.info("Nginx 服务未启用,正在启动...")ssh.exec_command("systemctl start nginx")# 确认是否启动成功,通过在本地尝试访问URLstdin, stdout, stderr = ssh.exec_command("curl http://192.168.5.128")access_result = stdout.read().decode().strip()if "Welcome to nginx!" in access_result:logger.info("Nginx 服务启动成功。")else:logger.info("Nginx 服务启动失败,请检查相关配置。")except Exception as e:logger.error(f"Error occurred: {e}")# 关闭连接
ssh.close()

My_log

import datetime
import osclass LogLevel:DEBUG = "DEBUG"INFO= "INFO"WARNING = "WARNING"ERROR = "ERROR"class Logger:def __init__(self, log_folder='logs'):self.log_folder = log_folderif not os.path.exists(log_folder):os.makedirs(log_folder)self.log_file = os.path.join(log_folder, f'log_{datetime.datetime.now().strftime("%Y%m%d%H%M%S")}.log')def debug(self, message):self.log(LogLevel.DEBUG, message)def info(self, message):self.log(LogLevel.INFO, message)def warning(self, message):self.log(LogLevel.WARNING, message)def error(self, message):self.log(LogLevel.ERROR, message)def log(self, level, message):timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')log_message = f"[{timestamp}] [{level}] {message}\n"with open(self.log_file, 'a') as f:f.write(log_message)if level in [LogLevel.INFO, LogLevel.WARNING, LogLevel.ERROR]:print(f"[{timestamp}] {message}")elif level == LogLevel.DEBUG:print(f"[{timestamp}] [DEBUG] {message}")logger = Logger()

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

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

相关文章

华为Ensp模拟器配置RIP路由协议

目录 RIP路由详解:另一种视角解读 1. RIP简介:轻松理解基础概念 2. RIP的核心机制:距离向量的魅力 3. RIP的实用与局限 RIP配置实验 实验图 ​编辑 PC的ip配置 RIP配置步骤 测试 结语:RIP的今天与明天 RIP路由详解&…

控制器ThinkPHP6

五、控制器中对数组值的返回 在做接口服务时,很多时候回使用数组作为返回值,那么数组如何返回成 json呢? 在 tp6 中返回json 很简单,直接使用 json 进行返回即可,例如: public function index(){$resarra…

SAFETY LAYERS IN ALIGNED LARGE LANGUAGEMODELS: THE KEY TO LLM SECURITY

目录 概要 背景 大语言模型对齐 对齐大语言模型中的过度拒绝 微调攻击 研究设置 问题定义 对齐的大语言模型 大语言模型的提示模板 安全层的存在和定位 安全层的存在性 1.从余弦相似度说明 2.从向量之间角度差异说明 3.与预训练LLM对比说明 安全层的定位 1.推理…

营销手段的变革:开源 AI 智能名片与 S2B2C 商城小程序在新趋势下的机遇与挑战

摘要:本文探讨了在当今营销环境变化下,企业必须改变传统营销手段的必要性。分析了大环境造就的主流趋势对企业的要求,以及传统营销方式如邮件直投的局限性。着重阐述了移动营销的重要性,并进一步研究开源 AI 智能名片和 S2B2C 商城…

【SpringBoot】公共字段自动填充

问题引入 JavaEE开发的时候,新增字段,修改字段大都会涉及到创建时间(createTime),更改时间(updateTime),创建人(craeteUser),更改人(updateUser),如果每次都要自己去setter(),会比较麻烦&#…

网络安全练习之 ctfshow_web

文章目录 VIP题目限免(即:信息泄露题)源码泄露前台JS绕过协议头信息泄露robots后台泄露phps源码泄露源码压缩包泄露版本控制泄露源码(git)版本控制泄露源码2(svn)vim临时文件泄露cookie泄露域名txt记录泄露敏感信息公布内部技术文档泄露编辑器…

Git_2024/11/16

文章目录 前言Git是什么核心概念工作流程常见术语解读Git的优势 Git与SVN对比SVNGit总结 Git配置流程及指令环境配置获取Git仓库本地初始化远程克隆 工作目录、暂存区、版本库文件的两种状态本地仓库操作远程仓库操作Git分支Git标签IntelliJ IDEA使用Git回滚代码 GitHub配置流程…

游戏引擎学习第八天

视频参考: https://www.bilibili.com/video/BV1ouUPYAErK/ 理解下面的代码 关于虚函数 代码分解 结构体 foo 的定义: struct foo {int32 X;int64 Y;virtual void Bar(int c); };foo 结构体有两个成员变量:X(int32 类型)和 Y&…

蓝桥杯-洛谷刷题-day3(C++)

目录 1.忽略回车的字符串输入 i.getline() ii.逐个字符的识别再输入 2.获取绝对值abs() 3.做题时的误区 4.多个变量的某一个到达判断条件 i.max() 5.[NOIP2016 提高组] 玩具谜题 i.代码 6.逻辑上的圆圈 i.有限个数n的数组 7.数组的定义 i.动态数组 1.忽略回车的字符串输…

不用来回切换,一个界面管理多个微信

你是不是也有多个微信号需要管理? 是不是也觉得频繁切换账号很麻烦? 是不是也想提升多账号管理的效率? 在工作中,好的辅助工具,能让我们的效率加倍增长! 今天, 就给大家分享一个多微管理工具…

Word_小问题解决_1

1.第二页是空白的,但是删不掉 将鼠标弄到第二页最开始的地方打开段落设置行距为固定值0.7磅 2.表格中有文字进入了表格中怎么办 打开段落,将缩进改为0即可

LLM - 计算 多模态大语言模型 的参数量(Qwen2-VL、Llama-3.1) 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/143749468 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 影响 (…

GEE下载ERA5-Land气象数据(1950-至今,降水、温度)

GEE下载ERA5-Land气象数据(1950-至今,降水、温度) ERA5-Land是一个高分辨率的陆地再分析数据集,相比ERA5数据集具有更高的空间分辨率。它是通过重新运行ECMWF ERA5气候再分析系统的陆地分量生成的。 空间分辨率特点: 网格间距…

动态规划-完全背包问题——518.零钱兑换II

1.题目解析 建议先看 322.零钱兑换可以 更加轻松的理解本题 题目来源 518.零钱兑换——力扣 测试用例 2.算法原理 1.状态表示 本题要求返回所有情况,所以dp值就代表所有的方法数,即 dp[i][j]:在[1,i]个硬币中选择不同面值的硬币&#xff0c…

推荐15个2024最新精选wordpress模板

以下是推荐的15个2024年最新精选WordPress模板,轻量级且SEO优化良好,适合需要高性能网站的用户。中文wordpress模板适合搭建企业官网使用。英文wordpress模板,适合B2C网站搭建,功能强大且兼容性好,是许多专业外贸网站的…

使用Java绘制图片边框,解决微信小程序map组件中marker与label层级关系问题,label增加外边框后显示不能置与marker上面

今天上线的时候发现系统不同显示好像不一样,苹果手机打开的时候是正常的,但是一旦用安卓手机打开就会出现label不置顶的情况。尝试了很多种办法,也在官方查看了map相关的文档,发现并没有给label设置zIndex的属性,只看到…

微信小程序 https://thirdwx.qlogo.cn 不在以下 downloadFile 合法域名列表中

授权登录后,拿到用户头像进行加载,但报错提示: https://thirdwx.qlogo.cn 不在以下 downloadFile 合法域名列表中 解决方法一(未完全解决,临时处理):在微信开发者工具将不校验...勾上就可以访问…

【HAProxy09】企业级反向代理HAProxy高级功能之压缩功能与后端服务器健康性监测

HAProxy 高级功能 介绍 HAProxy 高级配置及实用案例 压缩功能 对响应给客户端的报文进行压缩,以节省网络带宽,但是会占用部分CPU性能 建议在后端服务器开启压缩功能,而非在HAProxy上开启压缩 注意:默认Ubuntu的包安装nginx开…

zabbix7.0实操指南:基于麒麟V10操作系统部署zabbix7.0

在当今信息技术飞速发展的时代,企业对于IT基础设施的监控管理需求日益增长。为了确保系统的稳定性和高效性,我们需要一个强大的监控工具来实时监控各种硬件和软件资源的状态。Zabbix作为一个开源的企业级监控解决方案,因其强大的功能和灵活的…

Android笔记(三十七):封装一个RecyclerView Item曝光工具——用于埋点上报

背景 项目中首页列表页需要统计每个item的曝光情况,给产品运营提供数据报表分析用户行为,于是封装了一个通用的列表Item曝光工具,方便曝光埋点上报 源码分析 核心就是监听RecyclerView的滚动,在滚动状态为SCROLL_STATE_IDLE的时…