DEVOPS04 - 邮件和JSON、request模块、zabbix编程

一、邮件和JSON

1.1 邮件编程

1.1.1 SMTP概述

1. SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,使用TCP协议25端口
2. 这种协议用来控制信件的中转方式
3. python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装

1.1.2 SMTP对象

1. Python发送邮件,第一步是创建SMTP对象
import   smtplib    
smtp_obj   =  smtplib.SMTP(    [host    [,    port    [,    local_hostname]]]    )

2. 创建SMTP对象也可以不给定参数,之后再通过对象的其他方法进行绑定

1.1.3 设置邮件

1. 标准邮件需要三个头部信息
–  From:发件人
–  To:收件人
–  Subject:主题

msg['From']=Header('root','utf8')
msg['To']=Header('zhangsan','utf8')
msg['Subject']=Header('py email test','utf8')

1.1.4 sendmail方法

1. Python SMTP 对象使用 sendmail 方法发送邮件

SMTP.sendmail(from_addr,    to_addrs,    msg[,    mail_opPons,    rcpt_opPons])    

2.  sendmail方法三个必须的参数有:
–  收件人
–  发件人
–  消息主体msg是一个字符串,表示邮件

3.将准备好的邮件发送

sender='root'
receivers=['zhangsan','root']
smtp_obj=smtplib.SMTP('localhost')
smtp_obj.sendmail(sender,receivers,msg.as_string())

1.1.5 通过本机发送邮件

1.  创建bob和alice帐户
2.  编写发送邮件件程序,发件人为root,收件人是本机的bob和alice帐户。【前提是本机搭建了postfix服务】

import smtplib
from email.mime.text import MIMEText
from email.header import Header

msg=MIMEText('Python发送邮件测试\n','plain','utf8')
msg['From']=Header('root','utf8')
msg['To']=Header('zhangsan','utf8')
msg['Subject']=Header('py email test','utf8')
sender='root'
receivers=['zhangsan','alice']
smtp_obj=smtplib.SMTP('localhost')
smtp_obj.sendmail(sender,receivers,msg.as_string())

1.1.6 SMTP认证

1. 如果本机没有SMTP功能,也可以使用第三方的邮件服务器
2. 第三方邮件服务器往往需要认证

1.1.7 通过互联网服务器发送邮件

1. 通过自己互联网注册的邮箱,为女票邮箱发邮件

import smtplib   #相当于邮件客户端
from email.mime.text import MIMEText
from email.header import Header
import getpass

def send_mail(server,sender,passwd,receivers,msg):
    smtp_obj = smtplib.SMTP()
    smtp_obj.connect(server,25)
    smtp_obj.login(sender,passwd)
    smtp_obj.sendmail(sender,receivers,msg.as_string())


msg=MIMEText('Python发送邮件测试\n','plain','utf8')
msg['From']='[email protected]'
msg['To']='[email protected]'
msg['Subject']=Header('py email test','utf8')
sender='[email protected]'
receivers=['[email protected]']
password=getpass.getpass()
send_mail('smtp.163.com',sender,password,receivers,msg)

1.2 JSON

1.2.1 JSON概述

1. JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式

2.易于人阅读和编写,同时也易于机器解析和生成

1.2.2 dumps方法

1. 使用json.dumps()方法对简单数据类型进行编码,使简单数据类型编程JSON格式

>>>    import    json    
>>>    json.dumps(100)    
'100'    
>>>    json.dumps([1,    2,    3])    
'[1,    2,    3]'    
>>>    json.dumps({'name':    'zzg'})    
'{"name":    "zzg"}'

1.2.3 loads方法

1.使用json.loads()对象对JSON对象进行解码,得到原始数据。

>>>    import    json    
>>>    number    =    json.dumps(100)    
>>>    json.loads(number)    
100    

1.2.4 天气预报查询

–  实况天气获取:http://www.weather.com.cn/data/sk/城市代码.html
–  城市信息获取:http://www.weather.com.cn/data/cityinfo/城市代码.html
–  详细指数获取:http://www.weather.com.cn/data/zs/城市代码.html

1.  运行程序时,屏幕将出现你所在城市各区县名字
2.  用户指定查询某区县,屏幕上将出现该区县当前的气温、湿度、风向、风速等

import json
from urllib import request

html=request.urlopen('http://www.weather.com.cn/data/sk/101240508.html')
data=html.read()
data=json.loads(data)

print("%s %s" % (data.get('weatherinfo').get('city'),data.get('weatherinfo').get('temp')))

html = request.urlopen('http://www.weather.com.cn/data/cityinfo/101010100.html')
data = html.read()
print(json.loads(data))

二、requests模块

2.1 requests基础

2.1.1 requests简介

1. Requests是用Python语言编写的、优雅而简单的HTTP库
2.  Requests内部采用来urillib3
3.  Requests使用起来肯定会比urillib3更简单便捷
4.  Requests需要单独安装

2.1.2 GET和POST

1. 通过requests发送一个GET请求,需要在URL里请求
的参数可通过params传递
r    =    requests.get(url="",    params={},    headers={},    cookies={})    

2. 与GET不同的是,POST请求新增了一个可选参数
data,需要通过POST请求传递的body里的数据可以
通过data传递
r    =    requests.post(url="",    data    ={},    params={},    file={},    headers={},    cookies={})    

2.1.3 请求参数

1.当访问一个URL时,我们经常需要发送一些查询的字段作为过滤条件

2.当利用python的requests去发送一个需要包含这些参数键值对时,可以将它们传给params

import requests

mapResult=requests.get('http://www.baidu.com/s',params={'wd':'中国地图'})
with open('/tmp/baiduMap.html','wb') as fobj:
    fobj.write(mapResult.content)

2.1.4 设定头部

1. 用户也可以自己设定请求头,模拟自己是firefox浏览器

import requests

header={'User-Agent':'Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0'}
mapResult=requests.get('http://127.0.0.1/',headers=header)

print(mapResult.status_code)

2.2 requests应用

2.2.1 响应内容

1. 读取服务器响应的内容

# pip3 install requests
>>> import requests
>>> r = requests.get('http://www.baidu.com/')
>>> r.text   返回网页的字符串,因为编码问题,中文可能是乱码
>>> r.encoding   # Request默认是ISO-8859-1
>>> r.encoding = 'utf8'  #修改默认编码是utf8
>>> r.text
>>> data = r.content   # 返回网页的bytes类型
>>> type(data)

2.2.2 其他响应内容格式

1. 用字节的方式访问请求响应体,尤其是非文本请求(如图片)

>>> r2 = requests.get('http://www.weather.com.cn/m/i/legend.jpg')
>>> with open('/tmp/tq.jpg', 'wb') as fobj:
...   fobj.write(r2.content)

2.Requests 中还有一个内置的 JSON 解码器,助你处理 JSON 数据

>>> r1 = requests.get('http://www.weather.com.cn/data/sk/101010100.html')
>>> r1.encoding = 'utf8'
>>> r1.json()   # 对json格式数据进行解码

2.2.3 响应状态码

1. 检测响应状态码

>>> r4.status_code

2.用python代码标识状态码

>>> requests.codes.not_found  # requests模块将状态码都起了一个有意义的名字
>>> requests.codes.forbidden
>>> requests.codes.ok

三、Zabbix编程

https://www.zabbix.com/documentation/current/manual/api

 

猜你喜欢

转载自blog.csdn.net/qq_36441027/article/details/82995958