点击查看代码
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写监控打印机碳粉状态程序的更多相关文章

  1. 用python写一个定时提醒程序

    身体是革命的本钱,身体健康了我们才有更多精力做自己想做的事情,追求女神,追求梦想.然而程序员是一个苦比的职业,大部分时间都对着电脑,我现在颈椎就不好了,有时候眼睛还疼,我还没20阿,伤心...于是乎写 ...

  2. Python 脚本 监控数据库状态

    打算用这个脚本通过zabbix 监控Mariadb的,无奈要等Mariadb完全上线才行,所以先写一个粗略大致功能的版本. #coding:utf-8 #author:shiyiwen #versio ...

  3. 用python写一个hello world程序

    1,http://www.python.org/download/ 下载windows安装包, 2,python环境变量配置 (1)设置环境变量:我的电脑-右键-属性-高级-环境变量 在Path中加入 ...

  4. python写的屏保程序

    __author__ = 'ChenYan' from random import randint from tkinter import * class Randball(): def __init ...

  5. Python 写了个小程序,耗时一天,结果才100多行

    from selenium import webdriver import selenium.webdriver.support.ui as ui from selenium.webdriver.co ...

  6. 用python写一个预警机器人(支持微信和钉钉)

    背景 线上的系统在运行中,发生故障时怎么及时的通过手机通知到相关人员?当然这是个很简单的需求,现有的方法有很多,例如: 如果我们用的云产品,那么一般都会有配套对应的监控预警功能,根据需要配置一下即可, ...

  7. 钉钉机器人-实现监控通知功能-python

    1. 首先得创建有 一个 钉钉群.(因为只能发群通知) 2. 添加机器人,得到一个url: 3. 开始写Python脚本: # -*- coding: utf-8 -*- ""&q ...

  8. python 小脚本升级-- 钉钉群聊天机器人

    一则小脚本(工作中用) 在这篇文章中写的监控的脚本,发送监控的时候 是利用的邮箱,其实在实际,邮箱查收有着不方便性,于是乎升级, 我们工作中,经常用钉钉,那么如果要是能用到钉钉多好,这样我们的监控成功 ...

  9. python监控服务器应用日志,推送钉钉机器人,实时关注日志异常

    生产环境多台服务器上部署了多个应用,日志出现报错时,无法及时反馈到开发人员.部署一个大型的运维监控应用,不但耗资源,而且配置也不简单. 简简单单写个python脚本来监控服务器日志就简单多了,废话不多 ...

  10. aws cloudwatch监控怎么通过钉钉机器人报警

    最近在完善海外业务在aws服务的CloudWatchh监控,发现CloudWatch报警通知要通过aws的sns服务,直接支持的通道有短信和邮件,但是我们想推到钉钉群里面的群机器人里面这个就要借助aw ...

随机推荐

  1. 056_带标签的break和continue 057_方法的定义_形参_实参_返回值_语句块 058_方法的重载overload 059_递归算法详解_递归和迭代效率测试

    056_带标签的break和continue(替代被取消的goto语句) 加个计数器: /** * 带标签的Break和Continue * * @author * */public class Te ...

  2. Luogu P11363 NOIP2024 树的遍历 题解 [ 紫 ] [ 树形 dp ] [ 组合计数 ] [ adhoc ]

    树上遍历:CCF 难得一遇的好题! 参考了洛谷的第一篇题解,所以思路会有点相似. 部分分 当 \(k=1\) 时,显然方案总数为 \(\prod_{i=1}^{n}(d_i-1)!\),因为进入一个子 ...

  3. Luogu P4425 转盘 题解 [ 黑 ] [ 线段树 ] [ 贪心 ] [ 递归 ]

    转盘:蒟蒻的第一道黑,这题是贪心和线段树递归合并的综合题. 贪心 破环成链的 trick 自然不用多说. 首先观察题目,很容易发现一个性质:只走一圈的方案一定最优.这个很容易证,因为再绕一圈回来标记前 ...

  4. 正则表达式匹配邮箱,IP地址,URL

    参考链接: http://urlregex.com/ 1. 邮箱匹配正则表达式 C# ^(?(")(".+?(?<!\\)"@)|(([0-9a-z]((\.(?! ...

  5. [SHOI2017] 摧毁“树状图”

    首先只要得到 \(x=0\) 时的答案,就可以 \(AC\) 本题.这是很重要的. 考虑由于不能有重复经过的边,所以两路径交点数量 \(\le 1\). 容易想到设 \(dp_u\) 表示以 \(u\ ...

  6. [Ynoi2016] 镜中的昆虫 题解

    难度在最近遇到的题里相对较高,在这里写一篇珂学题解. (以下是学校给的部分分) \(20\%\):直接暴力枚举. 另外 \(20\%\):假如我们取 \(pre\),对于 \(pre<l\) 的 ...

  7. 【博客搭建】Hexo使用笔记

    [博客搭建]Hexo 使用笔记 Hexo 是一款前端博客框架,可以自动根据基于 Markdown 的文章生成博客网站代码. 基本概念 项目结构 目录 描述 _config.yml 网站的配置信息 th ...

  8. 傻妞教程——如何获取天行数据服务的Key

    在傻妞插件列表中,比如油价查询.舔狗语录等需要申请天行KEY,才能使用 1.打开 天行数据官网注册登录 2.在控制台首页完成实名认证 3.在左侧数据管理里面获取你的秘钥Key 4.回到傻妞已安装的插件 ...

  9. C/C++跨平台开发1-windows和linux中的类库

    基本概念: 什么是库: 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 静态库:在程序链接的时候使用,链接器会将程序中使 ...

  10. Elasticsearch搜索引擎学习笔记(三)

    索引的一些操作 集群健康 GET /_cluster/health 创建索引 PUT /index_test { "settings": { "index": ...