结合钉钉机器人用python写监控打印机碳粉状态程序
点击查看代码
from pysnmp.hlapi import *
import requests
import json
# 配置信息
PRINTER_IP = '1.1.1.1' # 打印机IP
COMMUNITY_STRING = 'public' # SNMP团体名
DINGTALK_WEBHOOK = 'https://oapi.dingtalk.com/robot/send?test' # 替换成钉钉机器人Webhook地址
# 理光打印机OID信息
TONER_OIDS = {
'黑色': '1.3.6.1.2.1.43.11.1.1.9.1.1',
'青色': '1.3.6.1.2.1.43.11.1.1.9.1.2',
'品红色': '1.3.6.1.2.1.43.11.1.1.9.1.3',
'黄色': '1.3.6.1.2.1.43.11.1.1.9.1.4',
'black_max': '1.3.6.1.2.1.43.11.1.1.8.1.1',
}
def get_snmp_value(oid):
"""获取SNMP值并处理异常"""
try:
error_indication, error_status, error_index, var_binds = next(
getCmd(SnmpEngine(),
CommunityData(COMMUNITY_STRING),
UdpTransportTarget((PRINTER_IP, 161)),
ContextData(),
ObjectType(ObjectIdentity(oid)))
)
if error_indication:
print(f"SNMP错误: {error_indication}")
return None
elif error_status:
print(f"SNMP错误: {error_status.prettyPrint()}")
return None
return var_binds[0][1] if var_binds else None
except Exception as e:
print(f"SNMP查询异常: {str(e)}")
return None
def send_dingtalk_message(message):
"""发送消息到钉钉机器人"""
headers = {'Content-Type': 'application/json'}
payload = {
"msgtype": "markdown",
"markdown": {
"title": "打印机碳粉状态",
"text": message
}
}
try:
response = requests.post(DINGTALK_WEBHOOK,
data=json.dumps(payload),
headers=headers,
timeout=5)
response.raise_for_status()
print("状态已发送至钉钉")
except requests.exceptions.RequestException as e:
print(f"钉钉消息发送失败: {str(e)}")
def get_toner_status():
"""获取并格式化碳粉状态"""
print("正在获取打印机状态...")
# 构建消息内容
status_report = [
"### 理光IMC2000碳粉状态报告",
f"**IP地址**: {PRINTER_IP} \n", # 换行符用于钉钉markdown格式
"|颜色|剩余量|\n|-|-|"
]
for color, oid in TONER_OIDS.items():
if 'max' in color:
continue # 跳过最大容量值
value = get_snmp_value(oid)
if value is not None:
status_report.append(f"|{color.upper()}|{value}%|")
else:
status_report.append(f"|{color.upper()}|获取失败|")
# 发送钉钉通知
send_dingtalk_message("\n".join(status_report))
if __name__ == "__main__":
get_toner_status()
结合钉钉机器人用python写监控打印机碳粉状态程序的更多相关文章
- 用python写一个定时提醒程序
身体是革命的本钱,身体健康了我们才有更多精力做自己想做的事情,追求女神,追求梦想.然而程序员是一个苦比的职业,大部分时间都对着电脑,我现在颈椎就不好了,有时候眼睛还疼,我还没20阿,伤心...于是乎写 ...
- Python 脚本 监控数据库状态
打算用这个脚本通过zabbix 监控Mariadb的,无奈要等Mariadb完全上线才行,所以先写一个粗略大致功能的版本. #coding:utf-8 #author:shiyiwen #versio ...
- 用python写一个hello world程序
1,http://www.python.org/download/ 下载windows安装包, 2,python环境变量配置 (1)设置环境变量:我的电脑-右键-属性-高级-环境变量 在Path中加入 ...
- python写的屏保程序
__author__ = 'ChenYan' from random import randint from tkinter import * class Randball(): def __init ...
- Python 写了个小程序,耗时一天,结果才100多行
from selenium import webdriver import selenium.webdriver.support.ui as ui from selenium.webdriver.co ...
- 用python写一个预警机器人(支持微信和钉钉)
背景 线上的系统在运行中,发生故障时怎么及时的通过手机通知到相关人员?当然这是个很简单的需求,现有的方法有很多,例如: 如果我们用的云产品,那么一般都会有配套对应的监控预警功能,根据需要配置一下即可, ...
- 钉钉机器人-实现监控通知功能-python
1. 首先得创建有 一个 钉钉群.(因为只能发群通知) 2. 添加机器人,得到一个url: 3. 开始写Python脚本: # -*- coding: utf-8 -*- ""&q ...
- python 小脚本升级-- 钉钉群聊天机器人
一则小脚本(工作中用) 在这篇文章中写的监控的脚本,发送监控的时候 是利用的邮箱,其实在实际,邮箱查收有着不方便性,于是乎升级, 我们工作中,经常用钉钉,那么如果要是能用到钉钉多好,这样我们的监控成功 ...
- python监控服务器应用日志,推送钉钉机器人,实时关注日志异常
生产环境多台服务器上部署了多个应用,日志出现报错时,无法及时反馈到开发人员.部署一个大型的运维监控应用,不但耗资源,而且配置也不简单. 简简单单写个python脚本来监控服务器日志就简单多了,废话不多 ...
- aws cloudwatch监控怎么通过钉钉机器人报警
最近在完善海外业务在aws服务的CloudWatchh监控,发现CloudWatch报警通知要通过aws的sns服务,直接支持的通道有短信和邮件,但是我们想推到钉钉群里面的群机器人里面这个就要借助aw ...
随机推荐
- OS:RAID
什么是RAID? 独立磁盘冗余阵列[磁盘阵列](Redundant Arrays of Independent Disks,RAID) 磁盘阵列: 由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用 ...
- ctfshow--web14 sql注入利用``的清奇的绕过
输入c=3就会跳出来这个url 复制并访问,看这个页面应该是sql注入 有注释可看,看看他过滤了哪些东西 点击查看代码 if(preg_match('/information_schema\.tabl ...
- Idea报错 【cannot access com.xxx】的【解决办法】
正常操作代码,一个类突然标红,提示 cannot access com.xxx . 执行下面操作,执行完后项目变为正常 但是如果是你代码存在异常,可不是清缓存就能解决了,就要靠自己了哈哈 第一步Fil ...
- 更换Linux系统镜像源
更换Linux系统镜像源 切换镜像源通常是为了提高软件包下载的速度和稳定性.以下是CentOS 7切换镜像源的一般步骤: 一.安装wget(如果尚未安装) 首先,需要确保系统中安装了wget工具,因为 ...
- Zabbix Proxy安装及替换Zabbix阿里云源脚本
zabbix proxy安装步骤 说明: Zabbix Proxy使用的是独立的数据库实例,如果放在一起数据容易遭到破坏;Proxy仅仅是一个数据采集的作用,其他的依然是依靠Server端实现,这就会 ...
- JUC并发—2.Thread源码分析及案例应用
大纲 1.什么是线程以及并发编程 2.微服务注册中心案例 3.以工作线程模式开启微服务的注册和心跳线程 4.微服务注册中心的服务注册功能 5.微服务注册中心的心跳续约功能 6.微服务的存活状态监控线程 ...
- 「原创」Xiaomi-R3 免刷Openwrt实现路由器锐捷认证 (含网络守护脚本)
引言 没有路由器 宿舍人均用网络月末苦不堪言,搭建一台路由器燃眉之急!! 设备选择 初代小米路由器产品均为OpenWrt深度定制后的产物,免去设备刷入固件时机器变砖的风险,本片记录的使用型号为 MIR ...
- 开源EFCore 对比实体与实际数据库结构的工具-GZY.EFCoreCompare
前言 GZY.EFCoreCompare 是一个用于 对比数据库结构和 EF Core 代码中的 DbContext 的库. 它基于 EF Core 的 Scaffolding 机制,生成 Datab ...
- JUC并发—8.并发安全集合一
大纲 1.JDK 1.7的HashMap的死循环与数据丢失 2.ConcurrentHashMap的并发安全 3.ConcurrentHashMap的设计介绍 4.ConcurrentHashMap的 ...
- 【COM3D2Mod 制作教程(4)】实战!制作身体部分(上)
[COM3D2Mod 制作教程(4)]实战!制作身体部分(上) 教程介绍 现在正式进入实战教程环节,我会以我的实际制作过程详尽的教授每个细节,也因此受限于篇幅大小,"实战!制作身体部分&qu ...