点击查看代码
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. 详细剖析Java动态线程池的扩容以及缩容操作

    前言 在项目中,我们经常会使用到线程来处理加快我们的任务.但为了节约资源,大多数程序员都会把线程进行池化,使用线程池来更好的支持我们的业务. Java线程池ThreadPoolExecutor有几个比 ...

  2. react中类似vue的插槽this.props.children的用法

    父组件 <TestHanderClick bg="blue"> <p> 如果我要显示的话,父组件是双标签,子组件中有this.props.children& ...

  3. C# 深度学习框架 TorchSharp 原生训练模型和图像识别-手写数字识别

    目录 开始使用 Torch 准备 下载数据集 显示图片 加载数据集 定义网络 优化模型参数 训练模型 保存和加载模型 使用模型识别图片 教程名称:使用 C# 入门深度学习 作者:痴者工良 教程地址:h ...

  4. Google 常用语法说明

    Google 常用语法说明 背景 Google Hacking,作为一种利用谷歌搜索引擎的强大能力来挖掘互联网中敏感或未公开信息的技巧,已成为安全研究.漏洞挖掘及信息搜集领域的重要工具. 通过精心构造 ...

  5. 从cos下载文件

    新建test.sh脚本 #!/bin/bash set -e cospath=https://11111.cos.ap-beijing.myqcloud.com/emr/hive/script/202 ...

  6. docker镜像是上传与下载

    docker也有自己的镜像仓库,官方仓库网站是https://hub.docker.com/.   如果需要将自己的镜像上传至镜像仓库,首先需要在DockerHub创建账号,地址:https://hu ...

  7. ingsollrang英格索兰IC直流电动拧紧控制器维修

    随着智能装配的概念逐渐在行业内推广,质量管理已成为实现智能装配过程中的一个重要环节,许多客户都有着数据记录.扭矩检测的需求,英格索兰的多种拧紧工具配合控制器,可以满足从基本拧紧到质量管理的一系列需求, ...

  8. MybatisPlus - [08] RestFul

    编号 接口 请求方式 请求路径 请求参数 返回值 1 新增用户 POST /users 用户表单实体 无 2 删除用户 DELETE /users/{id} 用户id 无 3 根据id查询用户 GET ...

  9. win - [01] 修改网络连接名称(网络1、网络2...网络10)

    修改网络连接的名称 1.打开运行窗口:Windows 键 + R 2.在运行窗口输入 regedit,打开注册表编辑器 3.在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsof ...

  10. Spark core 总结

    Spark RDD五大特性 1.RDD由一组partition组成 2.每一个分区由一个task来处理 3.RDD之间有一些列依赖关系 4.分区类算子必须作用在kv格式得RDD上 5.spark为ta ...