Centos 7.7 (1908) de Python 2.7 ile Oracle db ye baglanti saglanmasi.

1 – Önce oracle client yüklenir. Sonra aşağıdaki komutlar çalıştırılır;

yum install libaio
echo "/usr/lib/oracle/11.2/client64/lib" >/etc/ld.so.conf.d/oracle.conf
ldconfig
yum install epel-release
yum install gcc python-pip.noarch python-devel
pip install cx_Oracle

2 – Eğer son satırdaki “pip” paketi yüklü değilse hata verecektir. Paketi aşağıdaki gibi yüklüyoruz;

yum install gcc openssl-devel bzip2-devel
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python2.7 get-pip.py
pip install cx_Oracle

Python ile oracle db ye bağlantının test edilmesi:

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import cx_Oracle
conn_str = "PROXXX/PROXXX@192.168.1.XXX:1521/XX"
conn = cx_Oracle.connect(conn_str)
c = conn.cursor()
c.execute("SELECT * FROM PRO_XXX_RESERVATIONINFO WHERE ROWNUM <= 10")
for row in c:
    print row[0], "-", row[1], "-", row[2], "-", row[3], "-", row[4]
conn.close()

Kaynaklar:

1 – https://tecadmin.net/install-python-2-7-on-centos-rhel/

2 – https://www.mylinuxplace.com/install-cx_oracle-on-centos-7/

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.

Zabbix (3.4.8,Ubuntu) üzerinde Python’dan MSSQL’e bağlantı için pyodbc kurulumu ve test edilmesi.

MSSQL PYODBC kurulumu:
$ git clone https://github.com/mkleehammer/pyodbc.git (Buradaki dosyayı indir ve kok e at, unzip et. oncesinde git yoksa yukle (apt-get install -y git))
$ python3 setup.py build
# python3 setup.py install
Sonrasın test edilmesi (mssql.py);
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import pyodbc
################## TANIMLAR #####################
dsn = ‘MSSQLServer’
user = ‘sa’
password = ‘XXXXXX’
database = ‘MCXXXPOS’
################## TANIMLAR #####################
def kullanici_liste():
con_string = ‘DSN=%s;UID=%s;PWD=%s;DATABASE=%s;’ % (dsn, user, password, database)
con = pyodbc.connect(con_string)
cur = con.cursor()
cur.execute(“SELECT e.firstname, e.lastname,e.posref FROM LOCATION_XXXXX_DB.dbo.EMPLOYEE e”)
while (1):
row = cur.fetchone ()
if row == None:
break
print((‘%s %s ‘ %(row[1],row[2])))
kullanici_liste()
_________________________________________________________________________________________________
Not : çalıştırınca hata alırsan, dsn tanımlamasını yapmalısın.
/etc/odbc.ini dosyasından aşağıdakiler ekle;
[MSSQLServer]
Driver = FreeTDS
Description = Any description
Trace = No
Server = 192.168.XXX.XXX
Port = 1433
TDS version = 0.95
Database = MCXXXPOS

Zabbix (3.4.8,Ubuntu) üzerinde Python’dan Oracle’a bağlantı için cx_Oracle kurulumu ve test edilmesi.

cx_oracle kurulumu
1 – pip kurulumu yapılır:
sudo apt-get install python3-pip python3-dev build-essential
sudo pip install –upgrade pip
sudo pip install –upgrade virtualenv
2 – pip install cx_Oracle

python ile test (oracle.py):

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import cx_Oracle

conn_str = “PROXXX/PROXXX@192.168.XXX.XXX:1521/VX8”
conn = cx_Oracle.connect(conn_str)
c = conn.cursor()
c.execute(“SELECT PG.ADI, PG.SOYADI, PG.VERILENODANO, PG.GELISTARIHI, PG.AYRILISTARIHI FROM PRO_XXX PG ORDER BY PG.VERILENODANO”)
for row in c:
print (row[0], ‘-‘, row[1], ‘-‘, row[2], ‘-‘, row[3], ‘-‘, row[4])
conn.close()