PfSense 5651 loglarının Python ile maille gonderimi.

Bu script ile günlük alınan 5651 logların maile gönderilmesini sağlayacağız.

Sisteme python3 yüklüyoruz. Not : Burada anlatılanlar 2.4.4-RELEASE (amd64) sürümü için geçerlidir. Anlatılanlar diğer sürümlerde farklılık gösterebilir.

Komut satırından “pkg update && pkg install -y python3 ” ile python3 yüklenir.

“/var/TIB5651Tr/PFSenseTIB5651.pl” altındaki dosya açılır ve 62.satırdaki “$call_MAIL = “/usr/local/bin/perl /var/TIB5651Tr/PFSenseMAIL.pl”;” satırı silinir veya başına “#” işareti konur.

Ve alt satıra “$call_MAIL = “/usr/local/bin/python3 /var/TIB5651Tr/mail5651.py”;” satırı eklenir. Burada Python3 ün sistemdeki yerini uzun yol ile yazdır. Sizin python3 ün sistemdeki yeri neresi ise onu yazınız (Not : Sistemdeki yerini “find / -name python3 yazarak bulabilirsiniz).

Burada “mail5651.py” adında bir dosya çalıştırılacağa benziyor. Bu dosya logları maille gönderecek dosyadır. mail5651.py içeriği ise aşağıdaki gibidir;

#!/usr/bin/env python
# encoding: latin5
“””

Python3 ile 5651 loglarinin maille gonderilmesi.

Bu script Python 3.x ile calisir.

“””

import os
import smtplib
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart

COMMASPACE = ‘, ‘

def mail_gonder():
sender = ‘mail_adresi@xxx.com’
gmail_password = ‘mail_sifresi’
recipients = [‘alici_adresi@yyy.com’]

# Create the enclosing (outer) message
outer = MIMEMultipart()
outer[‘Subject’] = ‘TIB5651-Günlük analiz raporu’
outer[‘To’] = COMMASPACE.join(recipients)
outer[‘From’] = sender
outer.preamble = ‘You will not see this in a MIME-aware mail reader.\n’

# List of attachments
attachments = [‘/var/TIB5651Tr/Tib5651_Admin/FormTIB5651_Admin.txt’,’/var/TIB5651Tr/Tib5651_Yasal/FormTIB5651.txt’]

# Add the attachments to the message
for file in attachments:
try:
with open(file, ‘rb’) as fp:
msg = MIMEBase(‘application’, “octet-stream”)
msg.set_payload(fp.read())
encoders.encode_base64(msg)
msg.add_header(‘Content-Disposition’, ‘attachment’, filename=os.path.basename(file))
outer.attach(msg)
except:
print(“Hata: “, sys.exc_info()[0])
raise

composed = outer.as_string()

# Send the email
try:
with smtplib.SMTP(‘mail.sunucu.com’, 587) as s:
s.ehlo()
s.starttls()
s.ehlo()
s.login(sender, gmail_password)
s.sendmail(sender, recipients, composed)
s.close()
print(“Email gonderildi!”)
except:
print(“Email gonderilemedi. Hata : “, sys.exc_info()[0])
raise

################## ANA BLOK ################

mail_gonder()

Scriptteki mail gönderimi için gerekli yerleri doldurarak (sunucu adres, mail adres ve şifre) logları maille gönderebilirsiniz. Bu scriptte  2 tane dosya gönderiliyor (/var/TIB5651Tr/Tib5651_Admin/FormTIB5651_Admin.txt’,’/var/TIB5651Tr/Tib5651_Yasal/FormTIB5651.txt’)

Bu arada 5651 perl scriptlerini açarak perl’in sistemdeki yolunu yazalım (Benim sistemde perlin uzun yolu : “/usr/local/bin/perl”).

Örnek “PFSenseTIB5651.pl” dosyasını açın ve 58.satırı şöyle yapın : “$call_dailyREFRESH = “/usr/local/bin/perl /var/TIB5651Tr/PFSenseDAILY.pl”;” gibi..

Bunu neden yapıyoruz; çünkü farklı sürümlerde perl’in sistemdeki yeri değişiyor bu nedenle de scriptler çalışmıyor.

Scriptler çalışmazsa python veya perlin sistemdeki yerlerini kontrol ederek adım adım hataları gideriyoruz. Son olarak, pythonun kullandığı scriptin başındaki “import” ve “from” kütüphaneleri, sisteminizde yüklü değilse yükleyiniz.

Logları python ile göndermemizin sebebi ise, sisteme python kurulduktan sonra mail gönderme yanında birçok islemi python yardımıyla kolayca yapabilirsiniz. Çünkü python, perl’e göre anlaşılması, program yazılması daha kolay ve popüler bir dildir.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s