需要帮助创建磁盘空间脚本

需要帮助创建磁盘空间脚本

我需要帮助来创建脚本将运行一天一次下午收集各分区的信息(磁盘空间,总计和已用) 并将其发送到我的电子邮箱。

请帮助我,我对这个脚本非常陌生。

答案1

为了使脚本运行,您需要设置一个 cron 作业:如何设置 cronjob?

现在,在你的脚本中,你需要执行如下操作:

#!/bin/bash
#script that simply saves the output of df -h to an output file
#which is sent as an attachment to an e-mail

#a) save the output of the command:
temp_file=$(mktemp)

df -h > $temp_file 2> /dev/null

/root/email.py [email protected] "Title here" "Body here. The current date and time is $(date)" "$temp_file"

sleep 3
rm -rf $temp_file

正如你所见,我从你的根路径中调用了一个 python 脚本(不可读,但除了 root 本人之外没有其他人可以读取),它采用以下参数:

“收件人电子邮件” “电子邮件标题” “电子邮件正文” “附件”

这个python脚本是这样的:

#!/usr/bin/python
import os, re
import sys
import smtplib

from email import encoders
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.MIMEText import MIMEText


SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587


sender = '[email protected]'
password = "yourpasswordhere"
recipient = sys.argv[1]
subject = ''
message = sys.argv[3]

def main():
    msg = MIMEMultipart()
    msg['Subject'] = sys.argv[2]
    msg['To'] = recipient
    msg['From'] = sender

    part = MIMEText('text', "plain")
    part.set_payload(message)
    msg.attach(part)

    session = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)

    session.ehlo()
    session.starttls()
    session.ehlo

    session.login(sender, password)

    fp = open(sys.argv[4], 'rb')
    msgq = MIMEBase('audio', 'audio')
    msgq.set_payload(fp.read())
    fp.close()
    # Encode the payload using Base64
    filename=sys.argv[4]
    msgq.add_header('Content-Disposition', 'attachment', filename=filename)
    msg.attach(msgq)
    # Now send or store the message
    qwertyuiop = msg.as_string()



    session.sendmail(sender, recipient, qwertyuiop)

    session.quit()
    os.system('notify-send "Your disk space related email has been sent."')

if __name__ == '__main__':
    main()

当然,你需要提供你的邮箱电子邮件和密码位于脚本顶部(senderpassword变量)。如果您安装了该libnotify-bin包,那么如果电子邮件已成功发送,您将收到桌面通知。

因此,总结一下,你需要使用上面的命令设置一个 cron 任务狂欢脚本。这狂欢脚本将保存临时文件中的输出df -h,该文件将通过Python脚本发送到您选择的收件人电子邮件(据我记得,发件人电子邮件必须是 Gmail)。

PS:上述解决方案将仅显示已安装文件系统的可用和总磁盘空间。如果这是个问题,请通知我,以便我扩展关于如何自动安装所有可用文件系统然后运行的答案df -h

答案2

假设您已在该机器上配置了 MTA 来为您接收和中继邮件(在服务器上应该是这种情况)试试这个:

$ df -h | mail -s "Filesystem usage report for `hostname`" [email protected]

(MTA = Postfix、Exim 等)

通过电子邮件发送的报告示例

如果符合您的需求,请将其添加到您的定时任务每天运行:

$ crontab -e

将打开一个编辑器。添加如下行:

@daily df -h | mail -s ...

保存并关闭。

这将使其与其他日常任务一起运行。如果您需要一天中特定时间的报告或将错误记录到特定地址,请阅读有关 cron 语法的信息(互联网上有很多此类信息 -这里的一个随机网站)。例如:

[email protected]
# at 5 a.m every day:
0 5 * * * mycommand

如果你无法直接在该机器上发送邮件,请阅读或者@hakermania 关于如何做到这一点的回答(还有更多方法)。

答案3

您可以使用此脚本来检查磁盘使用情况

#!/bin/bash

limit=85
[email protected]
host=`hostname`
out=`df -k | grep "^/dev" | awk '{ if($5 > $limit) print "\nDisk space is critial on " $1,$5,$6 "\n"}'`
usr/bin/mail -s "Disk Space Alert on $host: $out" $email

用于cron使脚本自动运行。在线查看cron 生成器帮助您进行设置。

相关内容