centos服务器巡检脚本

服务器巡检脚本

  • 系统负载shell脚本
  • python将txt文件转换成excel,不正常巡检结果标记红色

系统负载shell脚本

#!/bin/bash#文件路径
path="/root/monitor.txt"#yum -y install bc sysstat net-tools lrzsz
#获取主机名
system_hostname=$(hostname | awk '{print $1}')#获取服务器IP
system_ip=$(ip a|grep "global"|awk '{print $2}' |awk -F/ '{print $1}')#获取服务器系统
system=$(cat /etc/os-release | grep "^NAME" | awk -F\" '{print $2}')#获取服务器系统版本
version=$(cat /etc/redhat-release | awk '{print $4$5}')#获取总内存
#free -m|awk '/Mem/ {printf ("%.f\n",$2/1024)}'
mem_total=$(free -m | grep Mem| awk -F " " '{print $2}')#获取已用内存
mem_use=$(free -m | grep Mem| awk -F " " '{print $3}')#获取可用内存
mem_free=$(free -m | grep "Mem" | awk '{print $7}')#取CPU核数
Cpu_num=`grep processor /proc/cpuinfo|wc -l`#cpu使用率
Cpu_use=`top -n 1 -b |grep 'Cpu(s)' |awk '{print $2}'`#获取当前平均一分钟负载
load_1=`uptime | awk '{print $11}' | sed -e 's/\,//g' | awk -F " " '{print $1}'`#获取当前平均五分钟负载
load_5=`uptime | awk '{print $12}' | sed -e 's/\,//g' | awk -F " " '{print $1}'`#获取当前平均十五分钟负载
load_15=`uptime | awk '{print $13}'`#磁盘I/O
disk_io=`iostat -d -x -k 1 1 | grep -Ev "^$|Linux|Device"| grep vda| awk '{print $1,$14"ms"}'`#过滤磁盘使用率大于50%目录,并加入描述
disk_1=$(df -Ph | awk '{if(+$5>50) print "分区:"$1,"总空间:"$2,"使用空间:"$3,"剩余空间:"$4,"磁盘使用率:"$5}')#拆分
disk_fq=$(df -h | grep "root" | awk '{print "分区:"$1}')
disk_to=$(df -Ph | grep "root" | awk '{print "总空间:"$2}')
disk_us=$(df -Ph | grep "root" | awk '{print "使用空间:"$3}')
disk_fe=$(df -Ph | grep "root" | awk '{print "剩余空间:"$4}')
disk_ul=$(df -Ph | grep "root" | awk '{print "磁盘使用率:"$5}')
disk_ux=$(df -Ph | grep "root" | awk '{print $5}')#内存阈值
mem_mo='50'echo -e " " > $path
echo -e "主机名:"$system_hostname >> $path
echo -e "服务器IP:"$system_ip >> $path
echo -e "服务器系统:"$system >> $path
echo -e "服务器系统版本:"$version >> $path
echo -e "总内存:"$mem_total >> $path
echo -e "已使用内存:"$mem_use >> $path
echo -e "可用内存:"$mem_free >> $path
echo -e "cpu核数:"$Cpu_num >> $path
echo -e "cpu使用率:"$Cpu_use >> $path
echo -e "磁盘IO:"$disk_io >> $pathif [[ $(echo $disk_ux | sed s/%//g) -gt 50 ]]
thenecho $disk_fq >>$pathecho $disk_to >>$pathecho $disk_us >>$pathecho $disk_fe >>$pathecho $disk_ul >>$pathecho 磁盘巡检状态:不正常 >>$path
elseecho $disk_fq >>$pathecho $disk_to >>$pathecho $disk_us >>$pathecho $disk_fe >>$pathecho $disk_ul >>$pathecho 磁盘巡检状态:正常 >>$path
fiPERCENT=$(printf "%d%%" $(($mem_use*100/$mem_total)))
PERCENT_1=$(echo $PERCENT|sed 's/%//g')if [[ $PERCENT_1 -gt $mem_mo ]]
thenecho -e 总内存大小:$mem_total MB>> $pathecho -e 已用内存:$mem_use MB >> $pathecho -e 内存剩余大小:$mem_free MB >> $pathecho -e 内存使用率:$PERCENT >> $pathecho -e 内存巡检状态:不正常 >> $path
elseecho -e 总内存大小:$mem_total MB>> $pathecho -e 已用内存:$mem_use MB >> $pathecho -e 内存剩余大小:$mem_free MB >> $pathecho -e 内存使用率:$PERCENT >> $pathecho 内存巡检状态:正常 >> $path
fiecho -e 平均1分钟负载:$load_1"\n"平均5分钟负载:$load_5"\n"平均15分钟:$load_15 >> $path

执行脚本后会在/root 目录生成monitor.txt

python将txt文件转换成excel,不正常巡检结果标记红色

#!/usr/bin/python
# -*- coding: UTF-8 -*-
#使用环境python2.7import xlwt
import datetimestyle = "font:colour_index red; align: wrap on, vert centre, horiz center;"
styleb = xlwt.XFStyle()  # 创建一个样式对象,初始化样式
al = xlwt.Alignment()
al.horz = 0x02      # 设置水平居中
al.vert = 0x01      # 设置垂直居中
styleb.alignment = al
red_style = xlwt.easyxf(style)
title_style = xlwt.easyxf('font: height 200, name Arial Black, colour_index blue, bold on; align: wrap on, vert centre, horiz center;')def getlist():  # 读取txtwith open('/root/monitor.txt', 'r+') as f:s1 = f.readlines()f.close()s2 = []for i in s1:if '\n' in i:s2.append(i[:-1])else:s2.append(i)return s2def fenge():  # 分割list0 = []  # 存贮空格行for num, val0 in enumerate(getlist()):if val0.split(':')[0] == '主机名':list0.append(num)list0.append(len(getlist()))list1 = []   # 存贮内容for num1, val1 in enumerate(list0[1:]):temp = getlist()[list0[num1]:list0[num1+1]]list1.append(temp)return list1def wxls():   # 写入表格title = ['主机名', '服务器IP', '服务器系统', '服务器系统版本', '分区', '总空间', '使用空间', '剩余空间', '磁盘使用率', '磁盘巡检状态', '总内存大小','已用内存', '内存剩余大小', '内存使用率', '内存巡检状态', 'cpu核数', 'cpu使用率', '磁盘IO', '平均1分钟负载', '平均5分钟负载', '平均15分钟', '备注']workbook = xlwt.Workbook(encoding='utf-8')worksheet = workbook.add_sheet('sheet1')for i1, val in enumerate(title):worksheet.write(0, i1, label=val, style=title_style)first_col = worksheet.col(i1)first_col.width = 180 * 20for i2, val2 in enumerate(title):for i3, val3 in enumerate(fenge()):for j in val3:if j.split(':')[0] == val2:if j.split(':')[1] == '不正常':worksheet.write(i3 + 1, i2, label=j.split(':')[1], style=red_style)else:worksheet.write(i3+1, i2, label=j.split(':')[1], style=styleb)name = 'miontior.xls'workbook.save(name)wxls()

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

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

相关文章

大模型面经:SFT和RL如何影响模型的泛化或记忆能力?

监督微调 (SFT) 和强化学习 (RL)都是目前大模型的基础模型后训练技术,像DeepSeek-R1、kimi等的训练方法都将两种技术应用到了极致。 如何去设计训练步骤(先SFT再RL,还是直接RL)都需要对SFT和RL的能力有较深刻的了解。 本篇就以面…

Three.js 快速入门教程【一】开启你的 3D Web 开发之旅

系列文章目录 Three.js 快速入门教程【一】开启你的 3D Web 开发之旅 Three.js 快速入门教程【二】透视投影相机 Three.js 快速入门教程【三】渲染器 Three.js 快速入门教程【四】三维坐标系 Three.js 快速入门教程【五】动画渲染循环 Three.js 快速入门教程【六】相机控件 Or…

安全问答—安全的基本架构

前言 将一些安全相关的问答进行整理汇总和陈述,形成一些以问答呈现的东西,加入一些自己的理解,欢迎路过的各位大佬进行讨论和论述。很多内容都会从甲方的安全认知去进行阐述。 1.安全存在的目的? 为了支持组织的目标、使命和宗…

Navicat Premium17 连接Oracle出现 “未加载 Oracle库

报错信息如下 解决方案: 安装 Navicat for Oracle 12 for Mac 若已经打开任何来源,但运行还是遇到已损坏按照如下操作即可解决! 终端中输入 xattr -cr cr 后面输入一个空格!不要回车!如下图 把 Navicat for Oracle…

Transformer解析——(一)概述

本系列已完结,全部文章地址为: Transformer解析——(一)概述-CSDN博客 Transformer解析——(二)Attention注意力机制-CSDN博客 Transformer解析——(三)Encoder-CSDN博客 Transforme…

Qt的QToolButton的使用

在C中使用QToolButton的详细步骤如下&#xff1a; 1. 包含头文件 #include <QToolButton> #include <QAction> #include <QMenu>2. 创建QToolButton实例 QToolButton *toolButton new QToolButton(parentWidget); // parentWidget为父部件指针3. 基础属性…

Canvas进阶-2、可视化应用

前言 Canvas 可以用来创建各种 数据可视化 图表和图形&#xff0c;通过绘制不同的形状、线条和颜色来展示数据的特征和趋势。 数据可视化的基本原理是将数据转化为可视化的图形元素&#xff0c;以便人们更容易理解和分析数据。这涉及到以下几个方面&#xff1a; 数据映射&…

力扣-回溯-17 电话号码的字母组合

思路 和之前的回溯不同的是&#xff0c;要遍历完所有的数字&#xff0c;并且在单层递归逻辑里需要遍历一整个字符串 代码 class Solution { public:vector<string> letters {"", "", "abc", "def", "ghi", "…

Windows11切换回Windows10风格右键菜单

参考文章&#xff1a;Win11新版右键菜单用不惯&#xff1f;一键切换回Win10经典版&#xff01;-CSDN博客 以管理员权限运行命令行cmd 切换为经典旧版右键菜单&#xff0c;执行 reg.exe add “HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServe…

小米AX3000T 路由器如何开启 SSH 安装 OpenWRT 系统,不需要降级 v1.0.91 (2025)

小米AX3000T 路由器如何开启 SSH 安装 OpenWRT 系统&#xff0c;不需要降级 v1.0.91 &#xff08;2025&#xff09; 本文内容需要你有一定的 Linux 操作基础&#xff0c;最好是程序员那种&#xff0c;英文水平足够用才行。一般人不需要使用这么复杂的路由器操作系统&#xff0c…

Linux自学day23-进程和线程

1. 什么是进程&#xff1f; 进程是程序执行的过程&#xff0c;涵盖创建、调度和消亡阶段&#xff0c;是活的。 而程序是一段数据的集合&#xff0c;是死的。 进程还是操作系统资源分配的最小单元&#xff0c;拥有独立的虚拟地址空间&#xff0c;包括文本段、数据段、系统数据…

python查错误TypeError: bad operand type for unary -: ‘str‘

TypeError: bad operand type for unary -: str​​​ 这个错误表明尝试对一个字符串类型的数据使用一元减号运算符&#xff08;​​-​​&#xff09;&#xff0c;而在 Python 中&#xff0c;一元减号运算符只能用于数值类型&#xff08;如整数、浮点数等&#xff09;&#xf…

常用的性能优化方法和技巧

常用的性能优化方法和技巧 前端性能优化 减少HTTP请求&#xff1a;就好比你去超市买东西&#xff0c;每次请求就像你跑一趟超市。去的次数越多&#xff0c;花在路上的时间就越多。所以把多个小的资源&#xff0c;像图片、脚本这些&#xff0c;合并成一个大的&#xff0c;就能…

网络协议相关知识有哪些?

前言 网络协议的基础是OSI和TCP/IP模型,这两个模型是理解协议分层的关键。 正文(仅是个人理解,如有遗漏望海涵) 网络协议是网络中设备间通信的规则和标准,涉及数据传输、路由、错误控制等多个方面。以下是网络协议相关知识的系统梳理: 一、网络协议分层模型 1、OSI七…

鸿蒙初学者学习手册(HarmonyOSNext_API14)_自定义动画API(@ohos.animator (动画) )

前言 在纯血鸿蒙中最具有用户特色的效果就是自定义的动画效果。在纯血鸿蒙中有多种定义方式&#xff0c;但是今天介绍的是ApI中的自定义动画。 注意: 动画本身具有生命周期&#xff0c;但是不支持在UIAbility的文件使用&#xff0c;简单而言就是不允许在UIAbility生命周期中…

搭建Kubernetes (K8s) 集群----Centos系统

前期准备 准备3台Linux虚拟机&#xff08;CentOS系统&#xff09;&#xff0c;参考 https://carry.blog.csdn.net/article/details/144578009https://carry.blog.csdn.net/article/details/144578009搭建Docker环境&#xff0c;参考 https://carry.blog.csdn.net/article/de…

wps中的js开发

严格区分大小写 /*** learn_js Macro*/ function test() {Range(D7).Value2Selection.Value2; // Selection.formula "100" }function Workbook_SheetSelectionChange(Sh, Target) {if(Sh.Name Sheet1) {test();}}function test2() {// 把I4单元格及其周边有数的单…

第3章 3.2 配置系统 .NET Core配置系统

3.2.1 配置系统的基本使用 .NET Core中的配置系统支持非常丰富的配置源&#xff0c;包括文件&#xff08;JSON、XML、INI等&#xff09;、注册表、环境变量、命令行、Azure Key Vault等&#xff0c;配置系统还支持自定义配置源。 用配置系统开发包Microsoft.Extensions.Confi…

第六届计算机信息和大数据应用国际学术会议(CIBDA 2025)

重要信息 大会官网&#xff1a;www.ic-cibda.org&#xff08;了解会议&#xff0c;投稿等&#xff09; 大会时间&#xff1a;2025年3月14-16日 大会地点&#xff1a;中国-武汉 简介 第六届计算机信息和大数据应用&#xff08;CIBDA 2025&#xff09;将于2025年3月14-16日在中国…

Mac M3/M4 本地部署Deepseek并集成vscode

Mac 部署 使用傻瓜集成平台ollama&#xff0c;ollama平台依赖于docker&#xff0c;Mac的M3/M4 因doesn’t have VT-X/AMD-v enabled 所以VB,VM无法使用&#xff0c;导致docker无法启动&#xff0c;需要使用docker的替代品podman&#xff0c; 它完全兼容docker brew install p…