3- “export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib/” komutuyla link olusturuyoruz.
4- /usr/lib/oracle/11.2/client64/bin/sqlplus PROISV/PROISV@//192.168.1.XXX:1521/XX komutuyla oracle clientin çalışıp çalışmadığını test ediyoruz. Eğer aşağıdaki gibi bir ekran geldiyse oracle client kurulumu tamamdır;
oracle client test baglantisi.
Php oci8 kurulumu:
1- Şimdi sıra, php den oracle db ye bağlanabilmemiz için oci8 paketini kurmaya geldi. Bunun için https://pecl.php.net/package/oci8 adresinden oci8-1.4.7.tgz paketini indirip centos /tmp klasorune kopyalayin.
2- Aşağıdaki komutları uygulayarak paketi kuralım;
tar -xzf oci8-1.4.7.tgz cd oci8-1.4.7 phpize (eğer burda hata verirse, “php-devel” paketi kurulması gerekir kurulum komutu : yum install -y php-devel) ./configure –with-oci8=instantclient,/usr/lib/oracle/11.2/client64/lib make install
Not : Son satırda kurulumda hata alırsanız, muhtemelen sistemde “gcc” yüklü değildir, “yum install -y gcc” ile yükleyebilirsiniz.
Kod çalıştırıldığında ekrana 10 adet kayıt geliyorsa, Centos 7 ye kurduğumuz oracle client 11.2 ve php 5.4 ile bağlantımız tamamlanmıştır :))
Not1 : Centosta Selinux aktif ise, oracle bağlantıda hata verebilir. Eğer hata verirse aşağıdaki komutla bağlantı sağlanabilir;
setsebool -P httpd_can_network_connect on
veya; “sestatus” ile selinux durumuna bakılır. Current mode enforcing ise, “setenforce 0” ile selinux disable edilebilir. Tekrar enable etmek : “setenforce 1”
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.
“/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
# 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.
Problem tanımı : Pfsense de 5651 log alma scriptini kurdunuz ancak 5 dk.da bir alınan arp listesi ve gece 23:59 da alınan loglar alınamıyorsa scriptte tanımlı perl ve sh yolları hatalıdır.
Komut satırında “find / -name perl” ile perlin yüklü olduğu dizin bulunur. Muhtemelen o dizin “/usr/local/bin/perl” dir.
Komut satırında “find / -name arp” ile arp nin yüklü olduğu dizin bulunur. Muhtemelen o dizin “/usr/sbin/arp” dir.
1 – Command line da komut : “camcontrol devlist” >> komut sonrasinda makinaya takili usb cihazlar listelenir. Bu kısımda usb genelde “da0” olarak gozukur.
2 – “gpart list da0” ile usb nin detaylarına bakılabilir ancak mount etmek için bu adam önemli değildir.
3 – Rootta iken “mkdir usb_sandisk_8gb” ile bir klasor olusturulur.
4 – “mount /dev/da0 /usb_sandisk_8gb” veya “mount_msdosfs /dev/da0s1 /usb_32gb_toshiba/” komutuyla usb mount edilir. Usb deki dosyalara bakmak istersek “ls /usb_sandisk_8gb” yazmamız yeterlidir.