Python运维(三)--Linux交互、邮件及监控模块

一、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监控项目属性变动

回到总目录

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值