邮件
-
smtp( Simple Mail Transfer Protocol)即简单邮件传输协议,使用TCP协议25端口
-
它是一组用于由源地址到目的地址传送邮件的规则, 由它来控制信件的中转方式
-
python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装
-
SMTP对象:Python发送邮件,第一步是创建SMTP对象
import smtplib
smtp_obj= smtplib. SMTP( [host [ port [ local_hostname]]
创建SMTP对象也可以不给定参数,之后再通过对象 的其他方法进行绑定
- 标准邮件需要三个头部信息
- From:发件人
- To:收件人
- Subject:主题
'''示例,本机邮件'''
from email.mime.text import MIMEText
from email.header import Header
import smtplib
# 准备邮件,plain表示纯文本邮件
msg = MIMEText('Python email test.\n', 'plain', 'utf8')
msg['From'] = Header('root', 'utf8')
msg['To'] = Header('tom', 'utf8')
msg['Subject'] = Header('py test')
# 发送邮件
smtp = smtplib.SMTP('localhost')
smtp.sendmail('root', ['tom', 'jerry'], msg.as_bytes())
'''网络邮件'''
from email.mime.text import MIMEText
from email.header import Header
import smtplib
from getpass import getpass
def send_email(body, sender, receivers, subject, server, passwd):
# 准备邮件,plain表示纯文本邮件
msg = MIMEText(body, 'plain', 'utf8')
msg['From'] = Header(sender, 'utf8')
msg['To'] = Header(receivers[0], 'utf8')
msg['Subject'] = Header(subject)
# 发送邮件
smtp = smtplib.SMTP()
smtp.connect(server)
# smtp.starttls() # 类似于https,如果服务器要求加密,则启用此语句
smtp.login(sender, passwd)
smtp.sendmail(sender, receivers, msg.as_bytes())
if __name__ == '__main__':
body = 'Python发送邮件测试\n'
sender = '103635xxxx@qq.com'
receivers = ['138xxxxxxxx@163.com', '103635xxxx@qq.com']
subject = 'py test'
server = 'smtp.qq.com'
passwd = getpass()
send_email(body, sender, receivers, subject, server, passwd)
JSON
- JSON(JavaScript Object Notation)是一种轻量级的数据交换格式
- 易于人阅读和编写,同时也易于机器解析和生成
- 基于 JavaScript Programming Language
- JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,++,c#,ava, JavaScript,perl, Python等)
- 这些特性使JSON成为理想的数据交换语言
- 方法:
>>> import json
>>> d1 = {'name': 'tom', 'age': 20}
# 发送字典前,先将它转成json字符串
>>> data = json.dumps(d1)
>>> type(data)
<class 'str'>
>>> data
'{"name": "tom", "age": 20}'
>>>
# 接收的json字符串通过loads转成相应的数据类型
>>> jdata = json.loads(data)
>>> type(jdata)
<class 'dict'>
>>> jdata['name']
'tom'
>>> jdata['age']
20
# 访问json数据
# 中国天气网api地址
# 实况天气获取: http://www.weather.com.cn/data/sk/城市代码.html
# 城市信息获取: http://www.weather.com.cn/data/cityinfo/城市代码.html
# 详细指数获取: http://www.weather.com.cn/data/zs/城市代码.html
# 城市代码通过搜索引擎搜索
>>> url3 = 'http://www.weather.com.cn/data/sk/101010300.html'
>>> r = requests.get(url3)
>>> r.json() # 乱码
>>> r.encoding # 查看当前编码
'ISO-8859-1'
>>> r.encoding = 'utf8' # 修改字符编码
>>> r.json()
{'weatherinfo': {'city': '朝阳', 'cityid': '101010300', 'temp': '28.4', 'WD': '东南风', 'WS': '小于3级', 'SD': '27%', 'AP.6hPa', 'njd': '暂无实况', 'WSE': '<3', 'time': '17:55', 'sm': '1.7', 'isRadar': '1', 'Radar': 'JC_RADAR_AZ9010_JB'}}
requests模块
- Requests是优雅而简单的HTTP库
- Requests内部采用urillib3
- Requests使用起来会比urillib3更简单便捷
- Requests需要单独安装
特性:
- 支持keep -alive-的连接池
- 支持通用的域名以及URL地址
- 支持使用 cookie
- 支持使用类似浏览器的SSL验证
- 文件上传、下载
[root@localhost day02] pip3 install requests
>>> import requests
# 访问文本类型的数据
>>> url1 = 'http://www.163.com'
>>> r = requests.get(url1)
>>> r.text
# 访问非文本文件数据,如图片、压缩包
>>> url2 = 'http://pic.kaixin001.com/pic/app/2/26/2_45022680_diary.jpeg'
>>> r = requests.get(url2)
>>> r.content
>>> with open('/tmp/cat.jpg', 'wb') as fobj: # 保存到文件
... fobj.write(r.content)
使用阿里云api
- http://www.aliyun.com -> 云市场 -> api市场
- 在api市场购买某一产品,如[杭州网尚科技的天气预报]后,点击“管理控制台”进
入,可以查看APPCODE
>>> url = 'http://jisutqybmf.market.alicloudapi.com/weather/query' #地址
>>> headers = {'Authorization': 'APPCODE 你的APPCODE'} #请求头
>>> params = {'citycode': '101010300'} #参数
>>> r = requests.get(url, headers=headers, params=params)
>>> r.json()
>>> url4 = 'http://icalendar.market.alicloudapi.com/ai_metaphysics/calendar/elite'
>>> headers = {'Authorization': 'APPCODE 你的APPCODE'}
>>> params = {'STRING': '20200325150330'}
>>> r = requests.get(url4, headers=headers, params=params)
>>> r.json()
钉钉机器人
- https://www.jianshu.com/p/a3c62eb71ae3
- https://im.dingtalk.com/ 钉钉web版 -> 创建群 -> 创建群聊机器人 -> 自定>义webhook类型
- 说明文档:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
Zabbix编程
- zabbix官方文档
- Zabbix apia允许你以编程方式检索和修改 Zabbix的 配置,并提供对历史数据的访问。
- 它广泛用于
- 创建新的应用程序以使用 Abbi
- 将 Zabbix与第三方软件集成
- 自动执行常规任务