首页
Search
1
GPU硬件直通
190 阅读
2
Ceph集群换盘
183 阅读
3
Ceph 简单维护命令详解与示例
176 阅读
4
Centos7源
143 阅读
5
Centos7 网络聚合
123 阅读
默认分类
闲话
登录
Search
标签搜索
Ceph
Python
Ranyuan
累计撰写
16
篇文章
累计收到
0
条评论
首页
栏目
默认分类
闲话
页面
搜索到
16
篇与
的结果
2024-12-20
python监控ssl证书时间
import socket import ssl from datetime import datetime import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders import os import xlsxwriter # Author: ran # 获取域名SSL证书到期时间 def get_ssl_expiry_date(domain, port=443): context = ssl.create_default_context() with socket.create_connection((domain, port)) as sock: with context.wrap_socket(sock, server_hostname=domain) as ssl_sock: cert = ssl_sock.getpeercert() expiry_date = datetime.strptime(cert['notAfter'], '%b %d %H:%M:%S %Y %Z') return expiry_date # 计算证书剩余天数 def get_days_until_expiry(expiry_date): return (expiry_date - datetime.now()).days # 检查多个域名的SSL证书到期时间,并生成Excel文件 def check_ssl_expiry(domains, excel_path): data = [] for domain in domains: try: expiry_date = get_ssl_expiry_date(domain) days_left = get_days_until_expiry(expiry_date) status = "正常" if days_left >= 15 else "即将到期" if days_left >= 0 else "已过期" data.append([domain, expiry_date.strftime('%Y-%m-%d %H:%M:%S'), days_left, status]) except Exception as e: data.append([domain, "无法获取证书信息", "N/A", f"错误: {e}"]) # 创建Excel文件 with xlsxwriter.Workbook(excel_path) as workbook: worksheet = workbook.add_worksheet("SSL到期状态") headers = ["域名", "证书到期时间", "剩余天数", "状态"] worksheet.write_row(0, 0, headers) for row_num, row_data in enumerate(data, start=1): worksheet.write_row(row_num, 0, row_data) return data # 发送带附件的邮件 def send_email(smtp_config, subject, body, attachment_path): msg = MIMEMultipart() msg['From'] = f"{smtp_config['from_name']} <{smtp_config['from_email']}>" msg['To'] = f"{smtp_config['to_name']} <{smtp_config['to_email']}>" msg['Subject'] = subject # 添加邮件正文 msg.attach(MIMEText(body, 'plain', 'utf-8')) # 添加附件 with open(attachment_path, 'rb') as file: part = MIMEBase('application', 'octet-stream') part.set_payload(file.read()) encoders.encode_base64(part) part.add_header( 'Content-Disposition', f'attachment; filename="{attachment_path.split("/")[-1]}"' ) msg.attach(part) # 发送邮件 try: with smtplib.SMTP_SSL(smtp_config['smtp_server'], smtp_config['smtp_port']) as server: server.login(smtp_config['smtp_user'], smtp_config['smtp_password']) server.sendmail(smtp_config['from_email'], smtp_config['to_email'], msg.as_string()) print("邮件发送成功!") except Exception as e: print(f"邮件发送失败: {e}") # 主函数 if __name__ == "__main__": domains = [ "www.baidu.com", "www.google.com", ] # SMTP配置 smtp_config = { "smtp_server": "smtp.163.com", "smtp_port": 465, "smtp_user": "stmp账号", "smtp_password": "授权码", "from_email": "发信人", "from_name": "SSL监控", "to_email": "接收文件", "to_name": "管理员", } # Excel文件路径 excel_path = "/tmp/ssl_status.xlsx" # 检查SSL状态并生成Excel ssl_data = check_ssl_expiry(domains, excel_path) # 准备邮件内容 expiring_domains = [row[0] for row in ssl_data if row[3] == "即将到期"] body = "以下是SSL证书检查结果:\n\n" body += "\n".join([f"域名: {row[0]}, 到期时间: {row[1]}, 剩余天数: {row[2]}" for row in ssl_data]) if expiring_domains: body += f"\n\n注意: 以下域名的SSL证书即将到期:\n{', '.join(expiring_domains)}" # 发送邮件 send_email(smtp_config, "SSL证书到期提醒", body, excel_path) # 删除附件 if os.path.exists(excel_path): os.remove(excel_path) print(f"附件 {excel_path} 已删除。") 增加了stmp邮件通知和表格附件发送
2024年12月20日
2 阅读
0 评论
0 点赞
2024-12-16
winpe如何注入网卡驱动
安装 Windows ADK 和 WinPE Add-ons:访问微软官方文档下载和安装适合你的 Windows 版本的 ADK 和 WinPE 加载项。安装完成后,你将获得 Deployment and Imaging Tools Environment 以及创建 WinPE 镜像的工具。启动开发环境:在开始菜单中找到 "Windows Kits" > "Windows ADK" > "Deployment and Imaging Tools Environment"右键选择“以管理员身份运行”。创建 WinPE 基础镜像创建 WinPE 工作目录:copype.cmd amd64 C:\WinPE_amd64b 提交修改并生成最终介质卸载并提交镜像修改:Dism /Unmount-Image /MountDir:C:\WinPE_amd64\mount /Commit创建 WinPE ISO 映像(可选):MakeWinPEMedia /ISO C:\WinPE_amd64 C:\WinPE_amd64\WinPE.iso挂载winpe镜像*:C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools>Dism /Mount-Image /ImageFile:C:\Users\admin\Desktop\boot.wim /index:1 /MountDir:C:\Users\admin\Desktop\123 部署映像服务和管理工具 版本: 10.0.26100.2454 正在安装映像 [==========================100.0%==========================] 操作成功完成。 网卡驱动安装:C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools>Dism /Image:C:\Users\admin\Desktop\123 /Add-Driver /Driver:C:\Users\admin\Desktop\641\rt640x64.inf 部署映像服务和管理工具 版本: 10.0.26100.2454 映像版本: 10.0.17763.107 找到 1 个要安装的驱动程序包。 正在安装第 1 个,共有 1 个 - C:\Users\admin\Desktop\641\rt640x64.inf: 驱动程序包已成功安装。 操作成功完成。 C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools>Dism /Image:C:\Users\admin\Desktop\123 /Add-Driver /Driver:C:\Users\admin\Desktop\64\ws640x64.inf 部署映像服务和管理工具 版本: 10.0.26100.2454 映像版本: 10.0.17763.107 找到 1 个要安装的驱动程序包。 正在安装第 1 个,共有 1 个 - C:\Users\admin\Desktop\64\ws640x64.inf: 驱动程序包已成功安装。 操作成功完成。查看已安装的网卡: C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools>Dism /Image:C:\Users\admin\Desktop\123 /Get-Drivers 部署映像服务和管理工具 版本: 10.0.26100.2454 映像版本: 10.0.17763.107 正在从驱动程序存储中获得第三方驱动程序列表... 驱动程序包列表: 已发布的名称 : oem0.inf 原始文件名 : b57nd60a.inf 内置驱动程序 : 否 类名称 : Net 提供程序名称 : Broadcom 日期 : 2016/2/3 版本 : 17.4.0.0 已发布的名称 : oem1.inf 原始文件名 : e1r62x64.inf 内置驱动程序 : 否 类名称 : Net 提供程序名称 : Intel 日期 : 2016/12/8 版本 : 12.13.27.0 已发布的名称 : oem2.inf 原始文件名 : e1q62x64.inf 内置驱动程序 : 否 类名称 : Net 提供程序名称 : Intel 日期 : 2015/5/26 版本 : 12.7.28.0 已发布的名称 : oem3.inf 原始文件名 : e1r62x64.inf 内置驱动程序 : 否 类名称 : Net 提供程序名称 : Intel 日期 : 2012/11/15 版本 : 12.4.36.0 已发布的名称 : oem4.inf 原始文件名 : ixt62x64.inf 内置驱动程序 : 否 类名称 : Net 提供程序名称 : Intel 日期 : 2012/3/30 版本 : 2.11.114.0 已发布的名称 : oem5.inf 原始文件名 : netkvm.inf 内置驱动程序 : 否 类名称 : Net 提供程序名称 : Red Hat Inc. 日期 : 2013/1/22 版本 : 61.64.104.5200 已发布的名称 : oem6.inf 原始文件名 : vioscsi.inf 内置驱动程序 : 否 类名称 : SCSIAdapter 提供程序名称 : Red Hat, Inc. 日期 : 2019/4/12 版本 : 100.77.104.17100 已发布的名称 : oem7.inf 原始文件名 : viostor.inf 内置驱动程序 : 否 类名称 : SCSIAdapter 提供程序名称 : Red Hat, Inc. 日期 : 2013/1/22 版本 : 61.64.104.5200 已发布的名称 : oem8.inf 原始文件名 : rt640x64.inf 内置驱动程序 : 否 类名称 : Net 提供程序名称 : Realtek 日期 : 2024/3/12 版本 : 10.71.312.2024 已发布的名称 : oem9.inf 原始文件名 : ws640x64.inf 内置驱动程序 : 否 类名称 : Net 提供程序名称 : Realtek 日期 : 2024/3/12 版本 : 10.71.312.2024 操作成功完成。6.写回imageC:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools>Dism /Unmount-Image /MountDir:C:\Users\admin\Desktop\123 /Commit 部署映像服务和管理工具 版本: 10.0.26100.2454 正在保存映像 [==========================100.0%==========================] 正在卸载映像 [==========================100.0%==========================] 操作成功完成。
2024年12月16日
7 阅读
0 评论
0 点赞
宝塔面板与 GitLab 集成实现 DevOps 流程
2024年12月04日
19 阅读
0 评论
0 点赞
2024-12-04
宝塔面板与 GitLab 集成实现 DevOps 流程1. 环境准备服务器:一台安装了宝塔面板的服务器(IP: 192.168.1.1,端口: 8888)。GitLab:一个 GitLab 仓库(URL: http://gitlab.test.com/v1/project.git)。项目路径:本地项目路径为 /www/wwwroot/test.com,远程服务器路径为 /www/wwwroot/test.com。2. 安装宝塔面板安装宝塔面板:yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh登录宝塔面板:打开浏览器,访问 http://192.168.1.1:8888,使用安装时生成的用户名和密码登录。登陆进行LAMP或者LNMP环境安装安装宝塔Webhook3. 配置 GitLab 仓库创建 GitLab 仓库:登录 GitLab,创建一个新的仓库(例如:project)。配置 Git 认证:生成一个 GitLab 访问令牌(Token),用于自动化脚本中的 Git 操作。4. 配置 Webhook配置 Webhook 脚本:在宝塔面板中,创建一个新的 Webhook 脚本,用于处理 GitLab 的推送事件。将自动化脚本填写在其中创建 Webhook:在 GitLab 仓库的设置中,找到 Webhooks 选项。添加一个新的 Webhook,URL 为 http://192.168.1.1:8888/你的Webhook路径,触发来源选择推送http://192.168.1.1:8888/webhook。5. 自动化脚本我们将编写一个 Bash 脚本,用于自动拉取 GitLab 仓库的最新代码,并使用 rsync 将代码同步到远程服务器。#!/bin/bash set -x # 启用调试模式,输出详细执行信息 LOGFILE="/var/log/webhook_doc.log" GIT=$(which git) echo "" >> $LOGFILE echo "=====================================" >> $LOGFILE echo "Webhook triggered at $(date "+%Y-%m-%d %H:%M:%S")" >> $LOGFILE # Git 认证信息 GIT_USER="username" GIT_TOKEN="passwd" # 替换为你的实际访问令牌 # Git项目路径 projectPath="/www/wwwroot/test.com" gitHttp="http://gitlab.test.com/v1/project.git" # 替换为你的实际 Git 仓库地址 # 远程服务器信息 REMOTE_USER="root" REMOTE_HOST="192.168.1.1" REMOTE_DIR="/www/wwwroot/test.com" REMOTE_PORT="22" # 远程服务器的SSH端口 # 检查项目路径是否存在 if [ ! -d "$projectPath" ]; then echo "项目根路径 $projectPath 不存在" >> $LOGFILE echo "新建项目根目录" >> $LOGFILE mkdir -p $projectPath || { echo "创建项目根目录失败" >> $LOGFILE; exit 1; } chown -R www:www $projectPath || { echo "设置项目根目录权限失败" >> $LOGFILE; exit 1; } fi cd $projectPath || { echo "无法进入目录 $projectPath" >> $LOGFILE; exit 1; } # 判断 .git 目录是否存在 if [ ! -d ".git" ]; then echo "项目尚未克隆,开始克隆 Git 仓库" >> $LOGFILE # 配置 Git 认证信息 git config --global url."https://${GIT_USER}:${GIT_TOKEN}@gitlab.test.com".insteadOf "https://gitlab.test.com" git clone $gitHttp . || { echo "Git clone 失败" >> $LOGFILE; exit 1; } chown -R www:www $projectPath || { echo "设置项目根目录权限失败" >> $LOGFILE; exit 1; } else echo "项目已经克隆,直接拉取最新代码" >> $LOGFILE fi # 拉取最新的项目文件 if [ -d ".git" ]; then echo "拉取最新的项目文件" >> $LOGFILE git fetch --all 2>&1 | tee -a $LOGFILE || { echo "Git fetch 失败" >> $LOGFILE; exit 1; } git pull origin main 2>&1 | tee -a $LOGFILE || { echo "Git pull 失败" >> $LOGFILE; exit 1; } echo "Git 状态:" >> $LOGFILE git status >> $LOGFILE 2>&1 || { echo "获取 Git 状态失败" >> $LOGFILE; exit 1; } else echo "不是一个有效的 Git 仓库" >> $LOGFILE exit 1 fi # 确保文件权限正确 chown -R www:www $projectPath || { echo "设置项目根目录权限失败" >> $LOGFILE; exit 1; } # 设置目录权限为 755,文件权限为 644 find $projectPath -type d -exec chmod 755 {} \; find $projectPath -type f -exec chmod 644 {} \; # 使用 rsync 将代码推送到远程服务器 echo "开始将代码同步到远程服务器..." >> $LOGFILE rsync -avz --delete --no-perms -e "ssh -p $REMOTE_PORT" $projectPath/ $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/ >> $LOGFILE 2>&1 if [ $? -eq 0 ]; then echo "代码同步到远程服务器成功" >> $LOGFILE else echo "代码同步到远程服务器失败" >> $LOGFILE exit 1 fi echo "End" >> $LOGFILE exit 0注意点 因为我提前配置了远程服务器的ssh免密登陆 所以这里不需要再输入密码 git pull方式为http 如果未初始化本地仓库建议可以先Git Clone到本地 输出日志目录也可以自定义总结通过上述步骤,你可以使用宝塔面板和 GitLab 实现一个简单的 DevOps 流程。通过 Webhook 自动触发代码部署,并使用 rsync 将代码同步到远程服务器。这样可以确保代码的自动更新和部署,提高开发效率。
2024-11-21
VXLAN 教程:使用 Open vSwitch (OVS) 配置 VXLAN 隧道
1. 什么是 VXLAN?VXLAN(Virtual Extensible LAN) 是一种网络虚拟化技术,主要用于在现有网络基础设施上扩展二层网络(即数据链路层)的规模。VXLAN 通过将以太网帧封装在 UDP 包中,使得不同物理网络上的虚拟机或容器能够像在同一个二层网络中通信。VXLAN 特点:扩展性:通过 24-bit 的 VNI(VXLAN Network Identifier),支持多达 1600 万个独立的虚拟网络。跨节点通信:允许在不同物理主机上的虚拟机或容器在同一个二层网络中通信。基于 UDP:VXLAN 使用 UDP 端口 4789 进行封装,适合在现有 IP 网络上运行。2. 环境准备前提条件:两台或多台 Linux 主机,用于模拟不同的网络节点。每台主机上安装 Open vSwitch (OVS) 和 常用网络工具(如 tcpdump, ping, arp 等)。安装 Open vSwitch:在每台主机上安装 Open vSwitch。以 CentOS 为例:# 安装 Open vSwitch sudo yum install -y epel-release sudo yum install -y openvswitch # 启动并启用 OVS 服务 sudo systemctl start openvswitch sudo systemctl enable openvswitch对于 Ubuntu,可以使用以下命令安装 OVS:# 安装 Open vSwitch sudo apt-get update sudo apt-get install -y openvswitch-switch # 启动 OVS 服务 sudo systemctl start openvswitch-switch sudo systemctl enable openvswitch-switch3. 配置步骤步骤 1:创建 OVS 网桥和端口在每个节点上创建 OVS 网桥 ovs-tun,并添加 VXLAN 类型的端口。创建 OVS 网桥:# 创建网桥 br0 sudo ovs-vsctl add-br br0添加 VXLAN 端口:假设我们有以下两个节点:节点 A:IP 地址为 10.41.10.2节点 B:IP 地址为 10.41.10.3在 节点 A 上,添加一个 VXLAN 端口,指向 节点 B 的 IP 地址,并指定 VNI(例如 408):sudo ovs-vsctl add-port br0 vxlan-408 -- set Interface vxlan-408 type=vxlan options:remote_ip=10.41.10.3 options:key=408在 节点 B 上,同样添加一个 VXLAN 端口,指向 节点 A 的 IP 地址:sudo ovs-vsctl add-port br0 vxlan-408 -- set Interface vxlan-408 type=vxlan options:remote_ip=10.41.10.2 options:key=408步骤 2:为网桥分配 IP 并启动为 br0 分配一个 IP 地址,并将其连接到主机的网络命名空间,以便流量可以通过该网桥。为网桥分配 IP 地址:sudo ip addr add 192.168.1.1/24 dev br0 sudo ip link set br0 up在 节点 B 上:sudo ip addr add 192.168.1.2/24 dev br0 sudo ip link set br0 up验证网桥状态:# 查看 OVS 网桥状态 sudo ovs-vsctl show # 查看网桥接口状态 ip addr show br0步骤 3:验证 VXLAN 隧道查看 VXLAN 端口状态:# 查看 VXLAN 端口状态 ip link show type vxlan检查 OVS 流表:# 查看 OVS 流表 sudo ovs-ofctl dump-flows br0测试连通性:在 节点 A 上:ping 192.168.1.2在 节点 B 上:ping 192.168.1.1如果能够互相 ping 通,说明 VXLAN 隧道已经正常工作。4. 配置 OVS 流表规则根据需要,可以通过 ovs-ofctl 添加流表规则来控制流量。例如:允许所有流量通过:sudo ovs-ofctl add-flow br0 "priority=0,actions=NORMAL"限制特定流量:可以根据 IP、MAC 地址、VLAN ID 等限制特定流量:# 允许特定 VLAN 流量通过 sudo ovs-ofctl add-flow br0 "priority=100,in_port=1,dl_vlan=10,actions=NORMAL"5. 故障排除1. 检查 VXLAN 状态确保 VXLAN 端口状态是 UP:ip link show type vxlan2. 检查 ARP 表确保节点之间的 ARP 解析正常:arp -a如果 ARP 条目不正确,可以手动添加:sudo arp -s 192.168.1.2 XX:XX:XX:XX:XX:XX3. 抓包分析使用 tcpdump 抓包分析 VXLAN 流量:# 抓取 VXLAN 流量 sudo tcpdump -i any host 10.41.10.2 and vxlan4. 检查 OVS 流表查看 OVS 流表,确保流量被正确处理:sudo ovs-ofctl dump-flows br05. 检查防火墙和路由确保防火墙没有阻止流量,并且路由表正确:# 查看防火墙状态 sudo firewall-cmd --list-all # 查看路由表 ip route6. 总结通过本教程,你应该能够使用 Open vSwitch 配置 VXLAN 隧道,并在不同节点之间建立虚拟二层网络通信。关键步骤包括:安装并配置 Open vSwitch。创建 OVS 网桥和 VXLAN 端口。为网桥分配 IP 并验证连通性。根据需要配置 OVS 流表规则。通过抓包、流表、ARP 表等工具进行故障排除。
2024年11月21日
85 阅读
0 评论
0 点赞
2024-10-30
通过ipmitools获取服务器电量
1. 安装 ipmitool首先,你需要确保系统上已经安装了 ipmitool。如果没有安装,可以使用以下命令进行安装:在 CentOS/RHEL 上:sudo yum install ipmitool在 Ubuntu/Debian 上:sudo apt-get install ipmitool2. 获取电源消耗信息使用 ipmitool 获取服务器的电源消耗信息。以下是命令的基本格式:ipmitool -I lanplus -H <IPMI_IP> -U <IPMI_USER> -P <IPMI_PASSWORD> sdr get "Pwr Consumption"-I lanplus: 使用 LAN 接口进行连接。-H <IPMI_IP>: IPMI 接口的 IP 地址。-U <IPMI_USER>: IPMI 用户名。-P <IPMI_PASSWORD>: IPMI 密码。sdr get "Pwr Consumption": 获取电源消耗信息。例如:ipmitool -I lanplus -H 192.168.1.1 -U root -P 123456 sdr get "Pwr Consumption" [root@localhost ~]# ipmitool -I lanplus -H 192.168.1.1 -U root -P 123456 sdr get "Pwr Consumption" Sensor ID : Pwr Consumption (0x77) Entity ID : 7.1 (System Board) Sensor Type (Threshold) : Current (0x03) Sensor Reading : 84 (+/- 0) Watts Status : ok Nominal Reading : 658.000 Normal Maximum : 672.000 Upper critical : 1218.000 Upper non-critical : 1106.000 Positive Hysteresis : Unspecified Negative Hysteresis : Unspecified Minimum sensor range : Unspecified Maximum sensor range : 3556.000 Event Message Control : Per-threshold Readable Thresholds : unc ucr Settable Thresholds : unc Assertion Events : Assertions Enabled : unc+ ucr+ Deassertions Enabled : unc+ ucr+ 详细解释 Sensor ID: Pwr Consumption (0x77): 传感器ID,表示这是一个电源消耗传感器,ID为0x77。 Entity ID: 7.1 (System Board): 实体ID,表示这个传感器位于系统主板上。 Sensor Type (Threshold): Current (0x03): 传感器类型,表示这是一个电流(功率)传感器。 Sensor Reading: 84 (+/- 0) Watts: 当前传感器读数,表示当前电源消耗为84瓦特,误差为0瓦特。 Status: ok: 传感器状态,表示传感器当前状态正常。 Nominal Reading: 658.000: 标称读数,表示传感器设计时的标称功率消耗。 Normal Maximum: 672.000: 正常最大值,表示传感器在正常工作范围内的最大功率消耗。 Upper critical: 1218.000: 上临界值,表示传感器读数超过此值时,系统将进入临界状态。 Upper non-critical: 1106.000: 上非临界值,表示传感器读数超过此值时,系统将进入非临界状态。 Positive Hysteresis: Unspecified: 正滞后值,表示传感器读数从正常状态到非正常状态的滞后值未指定。 Negative Hysteresis: Unspecified: 负滞后值,表示传感器读数从非正常状态回到正常状态的滞后值未指定。 Minimum sensor range: Unspecified: 传感器最小测量范围,表示传感器能够测量的最小功率消耗未指定。 Maximum sensor range: 3556.000: 传感器最大测量范围,表示传感器能够测量的最大功率消耗为3556瓦特。 Event Message Control: Per-threshold: 事件消息控制,表示事件消息是基于每个阈值触发的。 Readable Thresholds: unc ucr: 可读阈值,表示传感器可以读取的阈值包括非临界值(unc)和临界值(ucr)。 Settable Thresholds: unc: 可设置阈值,表示传感器可以设置的阈值为非临界值(unc)。 Assertion Events: (空): 断言事件,表示当前没有断言事件。 Assertions Enabled: unc+ ucr+: 启用的断言事件,表示非临界值(unc)和临界值(ucr)的断言事件已启用。 Deassertions Enabled: unc+ ucr+: 启用的解除断言事件,表示非临界值(unc)和临界值(ucr)的解除断言事件已启用。 3. 编写监控脚本为了定期监控电源消耗,你可以编写一个简单的 Bash 脚本。以下是一个示例脚本:#!/bin/bash # 定义IPMI连接信息 IPMI_HOST="192.168.1.1" IPMI_USER="root" IPMI_PASS="123456" # 定义报警阈值 CRITICAL_THRESHOLD=1100 WARN_THRESHOLD=800 # 获取当前功率消耗 power=$(ipmitool -I lanplus -H $IPMI_HOST -U $IPMI_USER -P $IPMI_PASS sdr get "Pwr Consumption" | grep "Sensor Reading" | awk '{print $3}') echo "Current power consumption: $power Watts" # 检查功率是否超过阈值 if [ "$power" -ge "$CRITICAL_THRESHOLD" ]; then echo "CRITICAL: Power consumption is too high!" # 这里可以添加发送警报或执行其他操作的代码 elif [ "$power" -ge "$WARN_THRESHOLD" ]; then echo "WARNING: Power consumption is approaching critical levels." # 这里可以添加发送警告的代码 fi将这个脚本保存为 check_power.sh,然后通过 chmod +x check_power.sh 赋予执行权限。4. 设置定时任务你可以使用 cron 定时任务来定期执行这个脚本。以下是一个示例,每 5 分钟执行一次:crontab -e在打开的编辑器中添加以下行:*/5 * * * * /path/to/check_power.sh >> /var/log/power_monitor.log 2>&1保存并退出编辑器。这样,脚本将会每 5 分钟执行一次,并将输出记录到 /var/log/power_monitor.log 文件中。5. 查看日志你可以通过查看日志文件 /var/log/power_monitor.log 来检查脚本的执行结果和电源消耗情况。
2024年10月30日
57 阅读
0 评论
0 点赞
1
2
...
4