Python检查磁盘大于80%时发送钉钉

Python利用subprocess模块检查磁盘空间

当磁盘/目录大于80%时,执行命令,并用钉钉发送

  • 实例脚本:
import os
import socket
import subprocess
#声明钉钉机器人
from ddrobot import *
def run_cmd(cmd):
    process = subprocess.Popen(cmd,shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    result_f,error_f = process.stdout,process.stderr
    errors = error_f.read()
    if errors:
        pass
    result = result_f.read().decode()
    if result_f:
        result_f.close()
    if error_f:
        error_f.close()
    return result

def disk_check():
    subject = ''
    result = run_cmd(cmd1)
    content =  cmd1 + '\n' + result
    result = result.split('\n')
    #print(result)
    for line in result:
        if 'G ' in line or 'M ' in line:
            line = line.split()
            for i in line:
                if '%' in i and int(i.strip('%')) > 80:
                    subject = 'gitlab-runer [WARNING] SERVER FILESYSTEM USE% OVER ' + i + ', PLEASE CHECK!'
                    #当磁盘空间大于80%时,执行cmd2命令
                    result1 = run_cmd(cmd2)
                    result2 = run_cmd(cmd3)
                    #content =  cmd2 + '\n' + result1
                    #result1 = result1.split('\n')
                    #print(result1)
    #print(result)
    if subject:
    #    send_mail(receiver,subject,content)
    #    print('email sended')
        #利用钉钉机器人模块
        drobot.dingmessage(subject)
    else:
        print('Everything is ok, keep on monitor.')

if __name__ == '__main__':
    cmd1 = 'df -h| grep -w "/"|grep -v "aliyun"'
    cmd2 = 'echo "y" | docker system prune -a'
    cmd3 = 'docker volume rm $(docker volume ls -qf dangling=true)'
    disk_check()

此方法暂时不用,改为docker volume rm $(docker volume ls -qf dangling=true)

shell rm_disk.sh 脚本

#!/usr/bin/env bash
DIR=/var/lib/docker/overlay2
DIR1=/var/lib/docker/volumes
#查找当前docker正在运行的容器挂载的目录,并利用tr将换行符替换为"|",并用sed将最后一个字符("|")去掉
DF=`df -h | grep overlay | awk '{print $NF}' | awk -F \/ '{print $6}'| tr "\n" "|"| sed 's/.$//'`
DB=metadata.db
#删除overlay2时,要谨慎
#cd $DIR
##利用(sed "s#^#$(pwd)/#")显示文件全路径
#for line in `ls $DIR|grep -Ev "$DF" | sed "s#^#$(pwd)/#"`
#do
#   rm -rf $line
#done
cd $DIR1
for line1 in `ls $DIR1 | grep -Ev "$DF"|grep -v "$DB" | sed "s#^#$(pwd)/#"`
do
   rm -rf $line1
done

   转载规则


《Python检查磁盘大于80%时发送钉钉》 helen 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录