本文主要介绍Python自动化运维的常用模块,比如:psutil、Dnspython、smtplib等。
1. psutil模块
- 安装psutil模块
1 | # pip install psutil 推荐使用pip安装 |
- 获取系统信息
1 | #!/usr/bin/env python |
2. dnspython模块
- 安装IPy模块
1 | # pip install dnspython |
使用dnspython模块
1
2
3
4
5
6
7
8
9
10
11
12
13#!/usr/bin/env python
#-*-coding:utf8-*-
import dns.resolver
domain = raw_input('请输入一个域名:')
ans = dns.resolver.query(domain, "A")
# ans = dns.resolver.query(domain, "CNAME")
# ans = dns.resolver.query(domain, "NS")
for i in ans.response.answer:
print i.to_text()
3. smtplib模块
smtplib模块发送邮件
1 | #!/usr/bin/env python |
4. difflib模块
文件内容差异比对方法:
1 | #### 比较2个字符串 |
单个文件比较:
语法:filecmp.cmp(f1.f2[,shallow])
比较f1和f2,相同返回true,不同返回false,shallow默认为true,会根据os.stat()比较,不会比较文件内容;反之则会比较内容。
1 | import filecmp |
5. pycurl模块
pycurl模块是一个用C语言编写的libcurl P python实现,功能非常强大,支持的协议有FTP、HTTP、HTTPS、TELNET等,可以理解成linux下curl命令功能的python封装。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53#!/usr/bin/env python
# -*- coding:utf8 -*-
import os,sys
import time
import sys
import pycurl
URL="http://www.baidu.com"
c = pycurl.Curl()
c.setopt(pycurl.URL,URL)
c.setopt(pycurl.CONNECTTIMEOUT,5)
c.setopt(pycurl.TIMEOUT,5)
c.setopt(pycurl.NOPROGRESS,1)
c.setopt(pycurl.FORBID_REUSE,1)
c.setopt(pycurl.MAXREDIRS,1)
c.setopt(pycurl.DNS_CACHE_TIMEOUT,30)
indexfile = open(os.path.dirname(os.path.realpath(__file__))+"/content.html","wb")
c.setopt(pycurl.WRITEHEADER,indexfile)
c.setopt(pycurl.WRITEDATA,indexfile)
try:
c.perform()
except Exception,e:
print "connection error:"+str(e)
indexfile.close()
c.close()
sys.exit()
NAMELOOKUP_TIME = c.getinfo(c.NAMELOOKUP_TIME)
CONNECT_TIME = c.getinfo(c.CONNECT_TIME)
PRETRANSFER_TIME = c.getinfo(c.PRETRANSFER_TIME)
STARTTRANSFER_TIME = c.getinfo(c.STARTTRANSFER_TIME)
TOTAL_TIME = c.getinfo(c.TOTAL_TIME)
HTTP_CODE = c.getinfo(c.HTTP_CODE)
SIZE_DOWNLOAD = c.getinfo(c.SIZE_DOWNLOAD)
HEADER_SIZE = c.getinfo(c.HEADER_SIZE)
SPEED_DOWNLOAD = c.getinfo(c.SPEED_DOWNLOAD)
print "HTTP状态码:%s" %(HTTP_CODE)
print "DNS解析时间:%.2f ms" %(NAMELOOKUP_TIME*1000)
print "建立连接时间:%.2f ms" %(CONNECT_TIME*1000)
print "准备传输时间:%.2f ms" %(PRETRANSFER_TIME*1000)
print "传输开始时间:%.2f ms" %(STARTTRANSFER_TIME*1000)
print "传输结束总时间:%.2f ms" %(TOTAL_TIME*1000)
print "下载数据包大小:%d bytes/s" %(SIZE_DOWNLOAD)
print "HTTP头部大小:%d byte" %(HEADER_SIZE)
print "平均下载速度:%d bytes/s" %(SPEED_DOWNLOAD)
indexfile.close()
c.close()