Para tornar o script em execução, você precisará configurar um cron job com ele: Como configuro um cronjob?
Agora, dentro do seu script, você precisará fazer algo assim:
#!/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
Como você pode ver, eu estou chamando um script python de dentro do seu caminho raiz (não legível, mas ninguém mais, mas ele próprio root), que leva os seguintes argumentos:
"destinatário-email" "título-de-email" "corpo-de-email" "anexo"
Este script python é este:
#!/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()
É claro que você precisará fornecer seu e-mail e senha do gmail na parte superior do script ( sender
e password
variables). Se você instalar o pacote libnotify-bin
, se o email foi enviado com sucesso, você será notificado com uma notificação na área de trabalho.
Então, resumindo, você precisará configurar uma tarefa cron com o script bash acima. Este script bash salvará a saída de df -h
dentro de um arquivo temporário, que será enviado por meio de um script python para um email de destinatário de sua escolha (até onde eu lembre-se, o e-mail do remetente deve ser gmail).
PS: A solução acima mostrará o espaço livre e total em disco apenas dos seus sistemas de arquivos montados. Se isso for um problema, por favor me avise para estender minha resposta sobre como montar automaticamente todos os sistemas de arquivos disponíveis e então executar df -h
.