本篇目录
一、LINUX交互
1.1 subprocess模块
功能:调用shell命令,并接收命令状态返回值(0为执行成功)
- 常用
import subprocess cmd = 'cd /home; mkdir test; cd test; touch test1' # 返回元组,前一个是状态,后面命令执行的输出结果(字符串类型) # 若有多个输出,则累加到c_str中 c_stat,c_str = subprocess.getstatusoutput(cmd) if c_stat == 0: 语句块 #只返回命令执行的输出结果(字符串类型) c_str_out = subprocess.getoutput(cmd)
1.2 pexpect模块
- 功能:让脚本代替人与程序交互
- 常规格式
import pexpect #通过spawn类启动和控制子应用程序 child = pexpect.spawn('ssh root@192.168.99.132') #expect方法用来判断子程序产生的输出,判断是否匹配相应字符串 child.expect('password:') # escape_character:就是当用户输出这里指定的字符以后表示 # 自己的操作完成了,将控制权重新交给 pexpect child.interact(escape_character='back_to_expect\n', \ input_filter=None, \ output_filter= None) # send:发送命令,不回车; # sendline:发送命令,回车; # sendcontrol:发送控制符,如:sendctrol('c')等价于‘ctrl+c' child.sendline('123456') child.expect('#') child.sendline('ls -lh') child.expect('#') child.sendline('exit') print('ftp connect terminated.')
二、邮件模块smtplib
- 功能:用自己的QQ邮箱发邮件,也可以发给自己,服务器上自动给自己发提醒信息
2.1 模板
- sendemail.py
# 做成一个命令 import sys # smtplib 用于邮件的发信动作 import smtplib # email 用于构建邮件内容 from email.mime.text import MIMEText # 用于构建邮件头 from email.header import Header # Python 文件名.py 接收方邮箱 邮件内容 script, to_addr, c_subject, c_context = sys.argv # 发信方的邮箱(自己邮箱)-----这处要改 from_addr = 'xxx@qq.com' # 需要在自己邮箱开通(搜索QQ邮箱开启POP3/SMTP服务)----这处要改 password = '你的授权码数字' # 发信服务器 smtp_server = 'smtp.qq.com' # 邮箱正文内容:第一个参数为内容 # 第二个参数为格式(plain 为纯文本) # 第三个参数为编码 msg = MIMEText(c_context ,'plain','utf-8') # 邮件头信息 msg['From'] = Header(from_addr) msg['To'] = Header(to_addr) msg['Subject'] = Header(c_subject) # 开启发信服务,这里使用的是加密传输 server = smtplib.SMTP_SSL() server.connect(smtp_server,465) # 登录发信邮箱 server.login(from_addr, password) # 发送邮件 server.sendmail(from_addr, to_addr, msg.as_string()) # 关闭服务器 server.quit()
注:除以上两处要改,其他可以不动,据说频繁发邮件,会被QQ拦截
2.2 使用
- 代码示例
to_addr = 'xxx@qq.com' subject = '这是一封测试邮件' context = ''' 这是多行正文 可一次填写 ''' python3 sendemail.py to_addr subject context
注:sendmail.py要放在Linux系统搜索路径下(echo $PATH)
三、pyinotify模块
功能:监测文件系统的变化,依赖于Linux内核的inotify功能
缺点:监控目录不超过两层,Samba文件监控混乱,远远差于inotifywait,仅做了解
3.1 安装
pip3 install pyinotify
3.2 测试
python3 -m pyinotify 目录或文件
- 以下是监控/tmp目录所输出的结果(开两个终端,一个接收信息,一个做操作)
3.4 事件标志
- 事件列表
事件标志 事件含义 IN_ACCESS 监控项目被访问 IN_MODIFY 监控项目被修改 IN_OPEN 监控项目被打开 IN_CREATE 监控目录中创建项目 IN_DELETE 监控目录中删除文件或目录 IN_MOVE 文件被移动(包含以下两个) IN_MOVE_FROM 移出监控区 IN_MOVE_TO 移入监控区 IN_CLOSE 文件被关闭(包含以下两个) IN_CLOSE_WRITE 内容修改并关闭 IN_CLOSE_NOWRITE 内容未修改即关闭 IN_ATTRIB 监控项目属性变动