终于用PYTHON作了一个实用于工作的脚本啦----通过邮件定时发送服务器空闲空间

呵呵,GOOGLE上东拼西凑的东东。找了十来个综合,裁剪成一个。

没有风格,不正规,无注释,只是简单可以运行。PYTHON2.4以上通上。

代码:

 1 #!/usr/bin/env python
 2 # -*- encoding: utf-8 -*-
 3
 4 import os, socket, statvfs
 5 from time import localtime, strftime
 6 from smtplib import SMTP
 7
 8 smtp = SMTP()
 9 #smtp.set_debuglevel(debuglevel)
10 smtp.connect('1.2.3.4', 25)
11 smtp.login('user', 'pass')
12
13 from_addr = "alert<alert@freedisk.com>"
14 to_addr = ["ag@163.com","ae@163.com","af@163.com"]
15
16 # Limit in MiB
17 LIMIT=200000;
18
19 #Define current Time as Fri, 04 Mar 2011 08:47:10
20 TIME = strftime("%d %b %Y", localtime())
21
22 MONITOR = os.statvfs("/")
23 SPACE_LEFT=(MONITOR.f_bavail * MONITOR.f_frsize) / 1048576
24 SPACE_TOTAL = (MONITOR.f_blocks * MONITOR.f_frsize) / 1048576
25
26 if (SPACE_LEFT < LIMIT):
27     STATUS = "Free Disk Space is ALERT!!!ALERT!!!ALERT!!! "
28         SPACE_LEFT=SPACE_LEFT / 1024 #GiB
29         print ( TIME+"\n"+STATUS+"\n"+str(SPACE_LEFT)+" GB left on disk\n"+"Alert Space is:"+str((LIMIT/1024))+"GB")
30         subj = "ALERT!!!ALERT!!!ALERT!!!["+str(SPACE_LEFT)+" GB left]Free disk space on www.163.com "+TIME
31         message_text = TIME+"\n"+STATUS+"\n"+str(SPACE_LEFT)+" GB left on disk\n"+"Alert Space is:"+str((LIMIT/1024))+"GB"
32         msg = "From: %s\nTo: %s\nSubject: %s\nDate: %s\n\n%s" % ( from_addr, to_addr, subj, TIME, message_text )
33         smtp.sendmail(from_addr, to_addr, msg)
34     smtp.sendmail(from_addr, to_addr, msg)
35     smtp.sendmail(from_addr, to_addr, msg)
36         smtp.quit()
37         print ('Done')
38
39 elif (SPACE_LEFT > LIMIT):
40         STATUS = "Free Disk Space is OK on "
41            SPACE_LEFT=SPACE_LEFT / 1024 #GiB
42     SPACE_TOTAL=SPACE_TOTAL / 1024 #GB
43         print ( TIME+"\n"+STATUS+"\n"+str(SPACE_LEFT)+" GB left on disk("+str(SPACE_TOTAL)+"GB)\n"+"Alert Space is:"+str((LIMIT/1024))+"GB")
44     subj = "["+str(SPACE_LEFT)+" GB left]Free disk space on www.163.com "+TIME
45         message_text = TIME+"\n"+STATUS+"\n"+"Total space is :"+str(SPACE_TOTAL)+"GB\n"+str(SPACE_LEFT)+" GB left on disk\n"+"Alert Space is:"+str((LIMIT/1024))+"GB"
46         msg = "From: %s\nTo: %s\nSubject: %s\nDate: %s\n\n%s" % ( from_addr, to_addr, subj, TIME, message_text )
47         smtp.sendmail(from_addr, to_addr, msg)
48         smtp.quit()
49         print ('Done!')
50
51 else:
52         print ("""
53 A serius problem detected with the script.
54 Please check what mount points you monitor and check that they're in the MON_ARRAY aswell.
55 """ )

然后,将其放入/etc/spool/cron/相关用户文件里。

0 1 * * *       python /root/diskspace/freedisk.py

测试截图:

时间: 2024-11-05 14:52:26

终于用PYTHON作了一个实用于工作的脚本啦----通过邮件定时发送服务器空闲空间的相关文章

python实现的系统实用log类实例

  本文实例讲述了python实现的系统实用log类.分享给大家供大家参考.具体如下: 每个系统都必不可少会需要一个log类,方便了解系统的运行状况和排错,python本身已经提供了一个logger了,很强大,只要稍微封装一下就可以放到自己的系统了,下面是我自己的log类 文件名:logger.py ? 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 3

Python实现的一个自动售饮料程序代码分享_python

写这个程序的时候,我已学习Python将近有一百个小时,在CSDN上看到有人求助使用Python如何写一个自动售饮料的程序,我一想,试试写一个实用的售货程序.当然,只是实现基本功能,欢迎高手指点,新手学习参考. 运行环境:Python 2.7 # encoding=UTF-8 loop=True money=0 while loop:     x = raw_input('提示:请投入金币,结束投币请按"q"键')     if x=='q':         if money==0:

Python实现的一个找零钱的小程序代码分享_python

Python写的一个按面值找零钱的程序,按照我们正常的思维逻辑从大面值到小面值的找零方法,人民币面值有100元,50元,20元,10元,5元,1元,5角,1角,而程序也相应的设置了这些面值.只需要调用函数时传入您想要找零的金额,程序会自动算各个面值的钱应该找多少张.如传入50元,则系统自动算出找零50元一张面值,如果传入60块7毛,则程序自动算出该找零50元一张,10元一张,5角一张,1角两张. # encoding=UTF-8   def zhaoqian(money):     loop=T

Python随机生成一个6位的验证码代码分享

 这篇文章主要介绍了Python随机生成一个6位的验证码代码分享,本文直接给出代码实例,需要的朋友可以参考下     1. 生成源码   代码如下: # -*- coding: utf-8 -*-   import random def generate_verification_code(): ''' 随机生成6位的验证码 ''' code_list = [] for i in range(10): # 0-9数字 code_list.append(str(i)) for i in range

Python写的一个简单监控系统

  这篇文章主要介绍了Python写的一个简单监控系统,本文讲解了详细的编码步骤,并给给出相应的实现代码,需要的朋友可以参考下 市面上有很多开源的监控系统:Cacti.nagios.zabbix.感觉都不符合我的需求,为什么不自己做一个呢 用Python两个小时徒手撸了一个简易的监控系统,给大家分享一下,希望能对大家有所启发 首先数据库建表 建立一个数据库"falcon",建表语句如下: ? 1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE `stat` ( `

python通过定义一个类实例作为ftp回调方法

  本文实例讲述了python通过定义一个类实例作为ftp回调方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 class Writer: def __init__(self, file): self.f = open(file, "w") def __call__(self, data): self.f.write(data) self.f.write('n') print data FILENAME = "AutoI

python-初学Python,问一个关于数组取值的问题

问题描述 初学Python,问一个关于数组取值的问题 定义了一个tuple,初始化: name=('ada','bob','jack') 为什么取数组值的时候会报错? name(1) 解决方案 认真点,虽然你定义的不是list,是tuple,但是取值的时候还是要用name[1],而不是name(1). 解决方案二: 定义是定义,但是取值,有自己的语法规范name[1].不需要跟他爸爸长一样的.( )

python 怎么实现一个excel表中,多个sheet中数据相加?

问题描述 python 怎么实现一个excel表中,多个sheet中数据相加? 把多个sheet中对应单元格中的数据相加,求大神帮忙,谢谢 我有一个excel,其中有多个单元格,现在需要把所有sheet中对应单元格的数据相加. 解决方案 你读取每个字段的数据,然后加法不就可以了. 或者直接yexcel自带的sum 解决方案二: import xlrd def readExcel(excelFile): sum = 0 book = xlrd.open_workbook(excelFile) fo

python 线程的一个小问题

问题描述 python 线程的一个小问题 源代码如下: import threadfrom time import sleep ctimeloops = [4 2]def loop(nloop nsec lock): print 'start loop' nloop ' at: ' ctime() sleep(nsec) print 'loop' nloop 'at: ' ctime() lock.release()def main(): print 'starting at: ' ctime(