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

1 – Aşağıdaki komutları çalıştrıyoruz. En alttaki satirda hata verirse “pip” paketini kuruyoruz (sitede nasıl kurulduğu vardır).

yum install unixODBC unixODBC-devel
yum install gcc-c++
yum install python-devel
pip install pyodbc

2 – Python ile mssql db ye baglantinin test edilmesi;

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

import pyodbc

################## TANIMLAR #####################
dsn = 'mssql_server'
user = 'db_username'
password = 'db_password'
database = 'MXXXXXXS'
################## 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_ACTIVITY_DB.dbo.EMPLOYEE e")
	
	while (1):
		row = cur.fetchone ()
		if row == None:
			break
		print "%s %s " %(row[1],row[2])

kullanici_liste()

Centos 7.7 (1908) de MSSQL baglatisi icin FreeTDS, ODBC kurulumu ve Php 5.4 ile baglantinin saglanmasi.

1 – “yum -y update” ile güncelleme yapalım.

2 – ” yum -y install php-odbc php-pdo unixODBC unixODBC-devel” ile odbc paketlerini kuralım.

3 – Aşağıdaki komutlarla epel ve freetds kuralım;

yum install epel-release
yum check-update
yum install freetds freetds-devel

4 – “/etc/freetds.conf” dosyasını açıp en alta aşağıdaki kodu yapıştıralım;

# Mssql server
[mssql_server]
host = 192.168.1.XXX
port = 1433
tds version = 7.4

5 – Bağlanacağımız sql server ile bağlantımızın olup olmadığını telnet ile kontrol etmekte fayda var;

“telnet 192.168.1.XXX 1433” yazdığımızda servera bağlantı yapabiliyorsak devam ediyoruz. Sistemde telnet yüklü değilse, “yum install -y telnet” ile yüklüyoruz.

6 – ” /etc/odbcinst.ini” dosyasını açıp en alta aşağıdaki kodu yapıştıralım;

[ODBC]
Trace = No
TraceFile = /tmp/sql.log
ForceTrace = No
 
[FreeTDS]
Driver = /usr/lib64/libtdsodbc.so.0
FileUsage = 1 

7 – “/etc/odbc.ini” dosyası varsa açalım, yoksa biz oluşturalım ve dosyanın içine aşağıdaki kodu ekleyelim;

 # Ms sql baglantisi
 [mssql_server]
 Description = mssql baglanti
 Driver = FreeTDS
 Trace = No
 Server = 192.168.1.XXX
 Database = MXXXXXXS (Databese adı)
 Port = 1433

8 – Centos’ta selinux aktif ise (default aktif), aşağıdaki komutlarla http üzerinden mssql bağlantısına izin verelim;

setsebool -P httpd_can_network_connect on
setsebool -P httpd_can_network_connect_db on

9 – Komut satırıyla bağlantının test edilmesi;

osql -S MyMSSQLServerName -U myusername -P mypassword

PHP ile baglantinin test edilmesi:

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
	
$baglanti = odbc_connect("mssql_server","db_username","db_password"); 	
	
 if ($baglanti)
    	    echo "<span style='color:green'>Baglandi</span>"."</br>"; 	
	
$sorgu = odbc_exec($baglanti,"SELECT e.firstname, e.lastname,e.posref FROM LOCATION_ACTIVITY_DB.dbo.EMPLOYEE e");

while( $row = odbc_fetch_array($sorgu) ){
  echo $row["firstname"]." ".$row["lastname"]."<br>";
}

?>

Kaynaklar :

1 – https://fotografia.clerigo.pt/how-to-install-freetds-unixodbc-on-centos-7-with-php-5-6-to-access-sql-server-databases/

2 – http://www.stevepiercy.com/articles/how-to-install-and-configure-freetds-as-an-odbc-connector-to-microsoft-sql-server-on-centosrhel-for-lasso-9/

Centos 7.7 (1908) de Oracle client (11.2) kurulumu ve Php 5.4 ile baglanti saglanmasi.

Oracle client kurulumu:

1- Oncelikle https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html sayfasindan kurulacak versiyonun belirlenmesi.

11.2 versiyonunun basic, devel ve sqlplus paketlerini indirip centos’un /tmp klasorune kopyaliyoruz.

2- Putty ile Centos’a bağlanıp, tmp klasöründeki oracle client rpm dosyalarını kuruyoruz;

rpm -Uvh oracle-instantclient11.2-*

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.

3- /etc/php.ini dosyasi acilir ve extension kısmına “extension=oci8.so” satırı eklenir, kaydedilip kapatılır.

4- “systemctl restart httpd” ile apache restart edilir.

5- Extensionun kurulup kurulmadığı “phpinfo.php” çalıştırılarak kontrol edilir. phpinfo.php içeriği;

<?php
phpinfo();
?>

Çıkan listede “oci8” varsa, extension kurulmuştur.

Son aşama olarak php den oracle db ye bağlanma ve test edilmesi;

<?php

	ini_set('display_errors', 1);
	ini_set('display_startup_errors', 1);
	error_reporting(E_ALL);

	$db = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.XXX)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XX)))";
	if($conn = OCILogon("PROISV", "PROISV", $db))
	{
		echo "Bağlandı.<br>";
	}
	else
	{
		$err = OCIError();
		echo "Bağlanamadı. " . $err[text];
	}
	
$stid = oci_parse($conn, 'SELECT * FROM XXX_XXX_RESERVATIONINFO WHERE ROWNUM <= 10');
oci_execute($stid);

while (($row = oci_fetch_array($stid, OCI_BOTH)) != false) {
	echo "$row[2] $row[3] $row[5] $row[6] $row[7] $row[8] $row[9] $row[10]<br>";
  
}
oci_free_statement($stid);
oci_close($conn);
?>

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”

Kaynak : https://developer.oracle.com/dsl/technote-php-instant.html

Phpmyadmin #1045 – Access denied for user ‘admin’@’localhost’ (using password: YES) sorunun çözümü

1 – Komut satırında; “service mysql stop”

2 – “sudo mysqld_safe --skip-grant-tables &"

3 – “mysql -u root"  >> mysql şifresi girilir.

4 – “use mysql;”

5 – “UPDATE mysql.user SET authentication_string=PASSWORD(‘yeni_sifre’) WHERE User=’root’;” veya diğer bir komut : ”

update user set password=PASSWORD("yeni_sifre") where User='root';"

6 – “flush privileges;”

7 – “quit;”

8 – “service mysql start” ve phpmyadmin root-yeni şifre ile kullanıma hazır…

Pfsense(FreeBSD) usb flash disk mount adımları

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.

 

Raspberry Pi ile sıcaklık derece ölçüm ve raporlama sistemi

Merhaba,

Bu kısımda Raspberry Pi ile yapılan derece ölçüm sistemi ve raporlarması anlatılmaktadır.

Derece ölçüm sisteminin adı “AutoTEMP” dir.

Ortam derecesini 5 dakikada bir ölçer, ölçülen derece üst ve alt limiti geçmişse size mail ve sms ile anında bildirir.

MAİL VE SMS ÖRNEĞİ:

 

Bu arada ölçüm dakikasını siz belirleyebiliyorsunuz. Yönetim panelinden 5 dakikada bir olan ölçüm periyodunu dakikada bir yada 10 dakikada bir gibi değiştirebilirsiniz.

Sistemde ölçüm sensörü olarak “DS18B20” sensörü kullanılmıştır. Sensörün uçları Raspberry Pi üzerindeki GPIO daki gerekli yerlere bağlanarak ölçümler gerçekleştirilmiştir. Ölçümü gerçekleştiren yazılım Python’da yazılmıştır.

Raspberry Pi yi açtığınız andan itibaren artık sistem dereceleri ölçmeye başlar. Dereceleri yönetim panelinden de görebilirsiniz

YÖNETİM PANELİ GİRİŞ EKRANI:

Yönetim paneline giriş yapmak için, internet tarayıcıya Raspberry Pi nin adresini yazmak yeterlidir. Ardından yukarıda gördüğünüz giriş ekranı çıkmaktadır. Kullanıcı adı “admin” , şifre ise sizin yönetim panelinden belirlediğiniz şifredir.

YÖNETİM PANELİ DURUM EKRANI:

Giriş yaptıktan sonra yönetim paneli durum ekranı gelir. Aşağıdaki gibidir ve son 3 saatin dereceleri gösterilir.

YÖNETİM PANELİ SENSÖR AYAR EKRANI:

Bu ekranda ise, Raspberry Pi ye bağlı olan ve dereceleri ölçen sensörün ayarları mevcuttur. Sensörün ismi, minimum ve maksimum derece limitleri, mail ve sms gönderimi yapılıp yapılmayacağı gibi ayarlar bu ekrandan yapılır.

YÖNETİM PANELİ RAPORLAR EKRANI:

İki tarih aralığında ölçülen derecelerin raporlandığı kısımdır.

 

YÖNETİM PANELİ GENEL AYARLAR EKRANI:

Derecelerin kaç dakikada bir ölçüleceği, mail ve sms gönderim ayarları, mail ve sms lerin kimlere gideceği, ne zaman ve hangi günlerde gideceği gibi ayarların yapıldığı ekrandır.

AutoNET Hakkında

Merhaba,

AutoNET, Raspberry Pi üzerinde çalışan, networke tanımlı cihazların çalışıp çalışmadığını kontrol eden (pingleyen), networku  yabancı cihazlara karşı denetleyen ve sonuçlarını MAİL ve SMS ile gönderen bir sistemdir.

Örnek olarak, büyük bir işyerinde, Fabrikada, Hastanede yada Otelde ağda çalışan birçok cihaz vardır (access point, ip kamera, ip printer, server, pc, otomasyon v.b.).

Ve bu cihazların sürekli çalışmasını isteriz. Zaman zaman bu cihazların çalışıp çalışmadığını kontrol etmek için ağ taraması yaparız. Ancak bunu her zaman yapamayız. Bu işi bizim yerimize bir sistemin düzenli olarak yapması ne kadar kolaylık sağlardı değil mi?

İşte bu noktada AutoNET devreye giriyor.

AutoNET, tanımladığınız cihazları sizin belirlediğiniz periyotlarda kontrol eder ve eğer cihazlar kapalıysa size MAİL ve SMS ile bildirir.

Sizde, cihazların kapalı olması nedeniyle ortaya çıkabilecek problemler büyümeden sisteme müdahale edebilirsiniz.

Aynı zamanda AutoNET, networkte tanımladığınız cihaz dışında başka bir cihaz görürse (ağa sızıntı varsa) yine size MAİL ve SMS ile bildirir.

Diğer önemli bir özelliği ise, eğer networkte “ip çakışması” varsa yine size MAİL ve SMS ile bildirim yapar.

AutoNET Raspberry Pi cihaz içinde çalışmaktadır. Kontrol kısmı Pythonda, arayüz ise PHP de yazılmıştır.

Arayüzün anlatımı aşağıdadır;

 GİRİŞ EKRANI:

Cihazın varsayılan ip adresi 192.168.1.40 dır. tarayıcıdan adres yazıldığında aşağıdaki gibi bir giriş ekranı gelmektedir. Varsayılan kullanıcı adı “admin” , şifre ise “123” dür.  Şifreyi yönetim panelinden değiştirebilirsiniz.

GENEL AYARLAR EKRANI :

Giriş yaptıktan sonra ekrana aşağıdaki “GENELAYARLAR” ekranı gelir. Program ayarları kısmında raporların hangi mail adresine ve cep telefon numarasına gideceği, cihazların kaç dakikada bir kontrol edileceği, mail ve sms gönderim aktif/pasif etme ve raporların hangi gün/saatlerde gideceği ve mail server ayarları  yapılır.

Kullanıcı ayarları kısmında da giriş şifresi değiştirilir.

Altta “NETWORKTE TANIMLI CİHAZ LİSTESİ” bulunmaktadır. Bu listeden cihazlara isim verebilir, mail ve sms gönderimlerini aktif/pasif yapabilirsiniz.

En altta “NETWORKTE YABANCI CİHAZ LİSTESİ” vardır. Eğer ağda sizin tanımladığınız cihaz dışında yabancı bir cihaz var o cihaz burada gözükür.

NETWORK AYARLARI EKRANI:

Kotrol etmek istediğiniz ağ aralığını buradan girebilirsiniz. Autonet’in kontrol edebileceği ağ aralığında/cihaz sayısında herhangi bir üst limiti yoktur.

“NETWORK IP TABLOSUNU LİSTELE” kısmında dolu ve boş ip adresleri listelenmektedir. Bu sayede ip çakışması yapmadan boştaki ip adreslerini rahatça kullanabilirsiniz.

En altta ise AutoNET’in ip adres bilgileri vardır.

AutoNET ağları kontrol edebilmesi için her ağdan 1 tane ip adresi verilir.

Örnek olarak 192.168.1.0/24 lük ağınız varsa AutoNET’e bu ağdan 1 tane ip verilir => 192.168.1.40 gibi,

Örnek olarak 172.16.0.0/16 lık ağınız varsa AutoNET’e bu ağdan 1 tane ip adresi verilir => 172.16.0.40 gibi…

 PİNG RAPORLARI EKRANI:

Bu ekranda cihazların kapalı olduğu zamanlar listelenir. Aynı zamanda bu ekranda log silme de yapılır.

SIZINTI RAPORLARI EKRANI:

Bu ekranda ağda rastlanan yabancı cihazların raporu alınur.

Aynı zamanda çakışma yapan cihazlar gösterilir.

Bir diğer rapor ise “Son 10 gündür kapalı olan cihazlar” raporudur.

Bu ekranda da logları silebilirsiniz.

 RAPORLARIN MAİLLE VE SMS İLE GELMESİ:

Cihazların durumu aşağıdaki gibi maille gelmektedir;

Raporun sms ile gelmesi;