Нужна помощь в создании скрипта дискового пространства

Мне нужна помощь в создании сценария , который будет запускать один раз в день днем ​​и собирать информацию о каждом разделе ( Дисковое пространство, общее и использованное ). ) и отправьте его на мою электронную почту.

Пожалуйста, помогите мне очень, очень новичку в этом сценарии.

2
задан 16 September 2012 в 11:29

3 ответа

При условии, что на этом компьютере настроен MTA для приема и пересылки почты для вас (на сервере, который должен иметь место), попробуйте следующее:

$ df -h | mail -s "Filesystem usage report for `hostname`" myemail@domain.tld

(MTA = Postfix, Exim, и т.

$ crontab -e

Откроется редактор. Добавьте следующую строку:

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

Сохраните и закройте.

Это заставит его работать с другими ежедневными задачами. Если вам нужен отчет о конкретном времени дня или регистрация ошибок по конкретному адресу, пожалуйста, прочитайте о синтаксисе cron (многое из этого есть в Интернете - здесь - один случайный сайт). Например:

MAILTO=myerroraddress@domain.tld
# at 5 a.m every day:
0 5 * * * mycommand

Если вы не можете отправлять почту на эту машину напрямую, прочитайте этот или ответ @hakermania о том, как это сделать (существует много других способов. ).

0
ответ дан 16 September 2012 в 11:29

Для создания сценария, выполняющего Вас, должен будет установить задание крона с ним: Как я устанавливаю 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 recipient@gmail.com "Title here" "Body here. The current date and time is $(date)" "$temp_file"

sleep 3
rm -rf $temp_file

Как Вы видите, я называю сценарий Python из Вашего корневого пути (не читаемый, но никто больше, но корень сам), который берет следующие аргументы:

"тело электронной почты" "заголовка электронной почты" "электронной почты получателя" "вложение"

Этот сценарий 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 = 'youremailhere@gmail.com'
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()

Конечно, необходимо будет предоставить ему электронную почту Gmail и пароль наверху сценария (sender и password переменные). Если Вы устанавливаете libnotify-bin пакет, затем, если электронное письмо было успешно послано, Вы будете уведомлены с настольным уведомлением.

Так, подводя итог, необходимо будет установить задание крона с вышеупомянутым сценарием удара. Этот сценарий удара сохранит вывод df -h во временном файле, который будет отправлен с помощью сценария Python в электронное письмо получателя по Вашему выбору (насколько я помню, электронная почта отправителя должна быть Gmail).

PS: вышеупомянутое решение покажет бесплатное и общее дисковое пространство только Ваших смонтированных файловых систем. Если это - проблема, сообщите мне, чтобы расширить мой ответ о том, как автоматически смонтировать все доступные файловые системы и затем работать df -h.

4
ответ дан 16 September 2012 в 11:29

Вы можете использовать этот скрипт для проверки использования диска.

#!/bin/bash

limit=85
email=you@domain.com
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 , чтобы помочь вам в его настройке.

0
ответ дан 16 September 2012 в 11:29

Другие вопросы по тегам:

Похожие вопросы: