结合钉钉机器人用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 ...
随机推荐
- flow pg walkthrough Intermediate
nmap nmap -p- -A -T4 -sS 192.168.114.104 Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-07 03 ...
- GD32F103C8T6入门——GPIO配置点亮LED
1.硬件 GD32F103C8T6最小系统板 ST-LINK V2下载器 2.GPIO说明 每个通用I/O端口都可以通过两个32位的控制寄存器(GPIOx_CTL0/ GPIOx_CTL1)和两个32 ...
- 天翼云CDN全站加速产品对websocket协议的支持
本文分享自天翼云开发者社区<天翼云CDN全站加速产品对websocket协议的支持>,作者:郭****迎 1.背景介绍 HTTP 协议有一个缺陷:通信只能由客户端发起.这种单向请求的特点, ...
- JMeter中使用嵌套变量方法
JMeter中使用嵌套变量方法 在使用JMeter进行接口测试时,经常遇到需要动态生成变量名并引用其值的情况.在JMeter中,嵌套变量的使用可以帮助我们实现这一目标.本文将详细介绍如何在JMeter ...
- Django设置跨域请求解决方案
Django设置跨域请求解决方案 在现代Web开发中,跨域资源共享(CORS,Cross-Origin Resource Sharing)是一个常见的需求.尤其是在前后端分离的开发模式下,Django ...
- MySQL主从复制-原理实战
一.原理 主从复制架构图:主从复制原理: Mysql 中有一种日志叫做 bin 日志(二进制日志).这个日志会记录下所有修改了数据库的SQL 语句(insert,update,delete,creat ...
- .NET Core内存结构体系(Windows环境)底层原理浅谈
物理内存与虚拟内存 物理内存(Physical Memory) 定义:物理内存是计算机硬件中的实际RAM(如DDR5内存条),直接通过总线与CPU连接,用于临时存储运行中的程序和数据. 虚拟内存(Vi ...
- [SDOI2015] 星际战争 题解
假如将所有激光武器放在一边,所有机器人放在一边,激光武器向它可以伤害的机器人连边,再加超级源/汇点,这就是一个网络流问题. 考虑激光武器向机器人连的边容量无限,而机器人向超级汇点连的边容量为机器人的装 ...
- Typecho防黑安全加固-修改后台路径
删除安装文件 成功安装后删除install.php文件.install/文件夹. 修改后台地址 把admin修改为黑客猜不到的名字,例如pipixia,防止黑客穷举密码. 修改admin文件夹名称 修 ...
- openEuler 24.03 SP1下载clang-18的办法(RISC-V版)
距离openEuler 24.03 SP1发版已经过去了一段时间了,值得注意的是,在这个新的发行版中,可以直接通过命令行下载clang18了!之前的发行版中clang的版本是17,可以直接dnf ...