最近测试了python
脚本执行钉钉机器人发消息和邮件发送,本想集成到上一篇文章中的脚本里,奈何想不到比较实用的场景。
突然想到自己的台式电脑是来电自动开机的设置,略有所思后想到把开关机事件自动发送邮件。
本人平生不知道注册多少个邮箱,想到163邮箱用的很少,所有就用它。登陆后发现里头有很多未读邮件,有安全提示和各种广告,都是几年前的了,估计是邮箱被盗用,全球各地的IP地址登陆和某位苹果玩家拿我邮箱修改了Apple ID……
一顿操作后把授权码弄出来了(1毛短信费),这个钉钉机器人就不记录操作步骤了,搜索引擎遍地都是,下面记录电脑开关机事件自动发送邮件过程。
获取邮箱授权码
这个步骤各大在线邮箱都差不多,基本都能在设置中找到
安装yagmail库
这是个第三方库,看到搜索引擎上满满的手写一大段代码填写邮件参数,这玩意儿还能这么不智能,不就是跟foxmail客户端一样填那几样参数么,所以使用yagmail,简单
pip install yagmail
代码
由于是两个不同的事件邮件,我分两个python脚本
auto_email_strtup.py
import yagmail
from datetime import datetime
# 连接服务器
yag = yagmail.SMTP(user="一三九啤酒白酒葡萄酒@163.com", password="此处填写授权码",host='smtp.163.com')
# 编辑邮件内容
time_str = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
content = [f'时间:{time_str}', '事件:台式电脑开机']
# 发送邮件,to = 收件人邮箱
yag.send(to = '一三八吃吧吃吧吃吧吃吧@139.com', subject='电脑开关机事件', contents = content)
auto_email_shutdown.py
import yagmail
from datetime import datetime
# 连接服务器
yag = yagmail.SMTP(user="一三九啤酒白酒葡萄酒@163.com", password="此处填写授权码",host='smtp.163.com')
# 编辑邮件内容
time_str = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
content = [f'时间:{time_str}', '事件:台式电脑关机']
# 发送邮件,to = 收件人邮箱
yag.send(to = '一三八吃吧吃吧吃吧吃吧@139.com', subject='电脑开关机事件', contents = content)
由于是windows电脑,还需要编写两个bat脚本中转运行以上代码
auto_email_strtup.bat
python F:\xxxx\auto_email_startup.py
auto_email_shutdown.bat
(需手动指定python解释器路径)
C:\Python3.x.x\python.exe F:\xxxx\auto_email_shutdown.py
window设置计划任务和组策略
开机自动邮件的设置
关机自动邮件的设置
dingtalkchatbot插件
夹带钉钉机器人发消息的代码,使用到以上这个库,具体见dingtalkchatbot插件
首先登陆钉钉,创建一个群,添加机器人,记录生成的webhook等参数
可以把以下代码组装成一个可传参的函数,调用的时候传递参数msg
可以设置各种条件发送不同的msg
电脑和手机已卸载钉钉,就没截图了
from dingtalkchatbot.chatbot import DingtalkChatbot, ActionCard, CardItem
# WebHook地址
webhook = 'WebHook地址'
secret = 'secret' # 可选:创建机器人勾选“加签”选项时使用
# 初始化机器人小丁
# xiaoding = DingtalkChatbot(webhook) # 方式一:通常初始化方式
xiaoding = DingtalkChatbot(webhook, secret=secret) # 方式二:勾选“加签”选项时使用(v1.5以上新功能)
# xiaoding = DingtalkChatbot(webhook, pc_slide=True) # 方式三:设置消息链接在PC端侧边栏打开(v1.5以上新功能)
# Text消息是否@所有人
res = xiaoding.send_text(msg='DSB,我就是小丁,小丁就是我!', is_at_all=False)
# 返回结果显示
print(res)
最后
如果网络环境允许的话,可以编写python脚本探测设备的可达性、根据设备的告警阀值触发邮件发送和机器人信息发送,或其他条件触发
欢迎“
来电”来函探讨