Linux Bash Script ile MYSQL’den Değer Alma

Linux üzerinde BASH script ile ufak bir işlem yaptırırken MYSQL üzerinden değer almamız gerektiğinde aşağıdaki kod parçası işinizi görecektir. Aynı zamanda sadece değeri almak istiyorsanız GREP komutundan sonraki kolon adını değiştirmeniz yeterli olacaktır.

$(`mysql DATABASE_NAME -e ‘SELECT COLUMN FROM TABLE_NAME‘ | grep -v “COLUMN“`)

Bash script üzerindeki MYSQL sorgularınızın çalıştırılabilir olması için user bilgilerine ihtiyaç olacaktır.

Bu adresteki kaynak üzerinden detaylara ulaşabilirsiniz..

Python’dan Ufak Kod Parçaları – 1

Python ile normal çalışma zamanı haricinde Debug yaparken bazı noktalarda Print yapmak isterseniz aşağıdaki gibi bir Fonksiyon ile işinizi kolaylaştırabilirsiniz.

import sys
def debug( debug ):
if 'debug' in sys.argv:
print( debug )

Argüment ( parametre ) yöntemi ile yapıyoruz. CLI üzerinde dosyanızı çalıştırıken, dosyaya argüment göndermeniz yeterli.


sudo python test.py debug

Okumaya devam et “Python’dan Ufak Kod Parçaları – 1”

Arada Bir Alt Gr Tuşunun Çalışmaması

Yazılım ile uğraşan herkesin en çok kullandığı kısayol fonksiyon tuşlar vardır elbet. Örneğin PHP kullananlar için $( Dolar ) işareti. Bu karakterler, tuşlar dilden dile farklılık göstermektedir tabi ki. Fakat benim moralimi bozan, sinirlerimi tepeme zıplatan, klavyeyi yumruklama sebebim olan Alt Gr + 4  kısayol fonksiyonu arada bir çalışmıyor. Özellikle de PHP ile geliştirme yaparken en çok ihtiyaç olan karakter kısayolu çalışmayınca insan kendinden geçiyor.

Önce problemin hızlıca nasıl ekarte edebileceğimize bir bakalım sonra da çözümüne bakalım. Okumaya devam et “Arada Bir Alt Gr Tuşunun Çalışmaması”

Home-Office Siber Güvenlik Uygulamaları

Covid-19’un fiziki olarak getirdiği sosyal mesafe kısıtlaması dijital dünyada aksi bir etki yaratarak köklü dijital dönüşümlere sebep oldu. Home-office çalışma modeli şu anda hem resmi hem özel birçok alanda uygulanıyor.

Home-office çalışanların bireysel olarak alacağı siber güvenlik önlemleri kitlesel olarak başarıyla sonuçlanabilecek siber saldırıları engelleyecektir. Beşinci siber saldırı jenerasyonunda olunmasına ve mega saldırıların gerçekleşmesine rağmen insan hatası faktörü bu saldırıların başarılı olmasının arkasındaki en büyük sebeplerden biridir.

İnternet genel olarak şifreli bir altyapıya sahip değildir. Çevrimiçi gerçekleştirilen aktivitelerin birçoğu şifreli değildir. Şifreli iletişim kurmak için şifreli iletişimi sağlayan uygulamalar tercih edilmelidir.

Okumaya devam et “Home-Office Siber Güvenlik Uygulamaları”

MsSql Server Select İçin Türkçe Karakter Çevirme

Entegrasyonunu yaptığımız bir projede karşımıza gelen Türkçe karakter problemi için çözüm arayışına girdiğimde aşağıdakine benzer bir yöntem buldum. Tabiki işe yaradı. Fakat uzun hali ile kısa hali oldukça farklı 🙂

SQL’den SELECT edilen verinin Türkçe karakterler ile geldiği için dosyalama tarafında bozulmalara yol açıyordu. Aşağıdaki Fonksiyon yardımı ile çözüme ulaştık. Fakat bu sırada çözüm arayışı için yardım aldığım yazılımcı bir arkadaş ( İsmail T. )işlemler bittikten sonra bir kod parçası daha gönderdi. Olsun ikiside işe yarıyor 🙂

CREATE FUNCTION tr_replace ( @str_tr NVARCHAR(100) ) RETURNS NVARCHAR(100)
AS
BEGIN
DECLARE @str_x NVARCHAR(100)
set @str_x = @str_tr
set @str_x = REPLACE(@str_x,'ı','i')
set @str_x = REPLACE(@str_x,'ş','s')
set @str_x = REPLACE(@str_x,'ç','c')
set @str_x = REPLACE(@str_x,'ö','o')
set @str_x = REPLACE(@str_x,'ğ','g')
set @str_x = REPLACE(@str_x,'ü','u')
return (@str_x)
END

Kullanım;

SELECT dbo.tr_replace('diplomasız mühendis')

SELECT username, dbo.tr_replace( fullname ), email FROM users;

Diğer yöntem ise aşağıdaki kaynakta yer alıyor. Bu Fonksiyonu kullanırken  “‘TRANSLATE’ is not a recognized built-in function name.” benzer bir hata alırsanız Fonksiyon tanımlı olmadığından yapıyor olabilir.

Kaynak 

Kullanım : SELECT TRANSLATE(string, ‘ĞÜŞİÖÇğüşıöç’, ‘GUSIOCgusioc’) FROM dual;

Fonksiyon tanımlamak için buradaki kaynağı kullanabilirsiniz veya farklı kaynakları tercih edebilirsiniz. Sql server versiyonunuza dikkat etmenizi öneririm

 

Windows Server PHP Session Temizleme

Windows sunucu da IIS üzerinde PHP ile web servislerimiz mevcut. PHP ile MSSQL server bağlantıları olduğu için Windows üzerinde PHP koşturuyoruz. Belirli bir zaman sonra sunucunun diski dolması, PHP’nin ağır bir şekilde cevap vermesi gibi problemleri yaşamaya başladıktan sonra araştırmalarımızın verdiği sonuç PHP nin SESSION dosyalarının baya gelişi güzel birikmiş olması. Problem ise session dosyalarının silinmemesinden kaynaklı. Silinmemesinin sebebi ise windowsun kullanıcı – dosya yetkilendirmelerinde problem olmasıymış.

Bu problemi az buçuk araştırma sonucu çözmek yerine aşağıdaki .bat dosyasına yazdığımız kodlarla hızlı bir şekilde çözdük. Problemi çözmek yerine dosyaları silmek çok sağlıklı olmayabilir ama en azından sessionların search and find metodunda daha hızlı çalışmasını sağlıyor. 🙂

.bat dosyasının windows bash kodları;

DEL /F /S /Q /A "C:\Windows\Temp\sess_*"
rd /s /q %systemdrive%\$Recycle.bin -y

 

PHP sessionlarının ayarlarından dolayı farklı bir klasör altında saklanıyor ise komuttaki dosya yolunu değiştirmeyi unutmayın.

.bat dosyasını Zamanlanmış Görevlere ekleyerek her gece veya saat başı gibi opsiyonlarla çalıştırılması sonucu yaklaşık 3 senedir herhangi disk, gecikme problemi yaşanmadan çalışmaktadır. 🙂

 

JQuery İle Sanal Klavye

Ödeme sistemlerinde genellikle kullanılan sanal klavyeleri görmüşsünüzdür. Merakımızın sonucu olarak aşağıdaki gibir bir yapı oluştu. Merak edenler için ödeme sistemlerinde kullanılan sanal klavyenin yapım aşamaları aşağıdadır. Sanal klavyenin çözümünü, tasarımını ve sanal klavye üzerinde tuş basım yani keypress olayının tetiklenmesi aşağıdaki gibidir. Bu arada farklı yöntemlerde mevcuttur.

Şimdi olayın yapım aşamasında aşağıdaki gibi bir yapı kullandık.

Okumaya devam et “JQuery İle Sanal Klavye”

Linux Bash Script’de JSON formatıyla Web Servise CURL etmek

Linux üzerinde işlem yaptırıp web servise de bunu iletmek istiyorsanız aşağıdaki bash script kod parçacıkları işinize yarayabilir. Bizim projemizde backup / yedekleme sonrası servislerin ve backupların durumlarını kontrol edebilmek amaçlı olarak bir noktadan kontrol ve analiz edilebilmesi için kullanılmıştır. Yani olay sıralaması şu şekilde;

Sistem tarafında backuplar alınıyor. Sonrasında ise backupın alınıp alınmadı bilgisi ise web servise CURL ediliyor. JSON formatında hazırlanan bilgi web servis tarafında ise JSON olarak karşılanmaktadır.

Backup alma işlemleri ile ilgili örnekleri daha öncesinde paylaşmıştım, şu linkten bulabilirsiniz. Şimdi ise bu backupların durumlarını analiz edebilmek için aşağıdaki kod parçasını kullanacağız.

post_data()
{
# linux un hostname ini almak için.
hostname=$(hostname)
# linux un saat ve tarihi almak
date_time=$(date "+%Y-%m-%d %H:%M:%S")
cat <<EOF
{
"parametre1" : "deger1",
"parametre2" : "deger2",
"hostname" : "$hostname",
"date_time" : "$date_time"
}
EOF
}


curl -i \
-H "Accept: application/json" \
-H "Content-Type:application/json" \
-X POST --data "$(post_data)" "http://webservisadresiniz"

Dinamik olarak sunucuya ait bilgileri almak için 2 adet örnek değişken örneği verdim. Siz ihtiyacınız olan parametreleri toplayın JSON formatındaki diziye yerleştirip otomatik olarak gönderimini sağlayabilirsiniz. Backup sistemlerinde şu bilgiler ihtiyaç oluyor genellikle; Disk kullanımı, dosya adı, dosya boyutu, backup başlangıç-bitiş zamanları, ftp upload olmuş mu vb. Bu bilgiler sayesinde PHP tarafında aldığınız bilgileri veritabanına veya farklı bir yere yazarak geçmişe dönük olarak ve sunucularınızın son hallerinin disk vb. durumlarını toplayabilirsiniz. Raporlar çıkartıp olası durumları öncesinden düzeltebilirsiniz. Genellikle disk dolma durumu ile karşı karşıya kalınmaktadır.

webservisadresiniz üzerinde ise aşağıdaki işlemi yaparak post edilen bilgileri alabilirsiniz. Daha öncesinde ise şuradaki yazımda anlamıştım..


function input_post_json()
{
$data = json_decode(file_get_contents('php://input'), true);
$data[ 'ip' ] = $_SERVER[ 'REMOTE_ADDR' ];
return $data;
}

$post = input_post_json();

Web servis tarafımızda gelen bilgileri bir şekilde veritabanı veya başka bir yerde sakladık. İlla da saklamanız gerekmemektedir. Mail olarak da haber veren bir uygulama yapabilirsiniz. Gerisi sizin ihtiyaçlarınıza ve hayal dünyanıza kalmıştır. Birden fazla sunucunuz var ise tüm backuplar alındıktan sonra kendinize rapor ve analiz maili atabilirsiniz. Hayat kurtarır benden size söylemesi 🙂

Bu tarz uygulamalar sistem tarafındaki manuel olarak her bir sunucuya tek tek girip yedek almak, bakım yapmak, disk kontrolü vb. işlemleri sağlamadaki harcamış olduğunuz zamanı yarıdan daha aza indirgemektedir.

Asıl amacım linux üzerinde JSON formatını web servise CURL olarak göndermeyi anlatmaktı ama olay biraz amatörce backup monitoring’e kaçtı sanırım. 🙂

PHP Ufak Tefek Fonksiyonlar – 2

PHP üzerinde ufak tefek fonksiyonlarımdan paylaşmaya devam ediyorum. Bir önceki yazıma buradan ulaşabilirsiniz.

Bootstrap gibi HTML / CSS frameworkleri kullanıyorsanız veya kullanmıyorsanız da uyarı ( alert ) sistemlerini kullanıyorsunuzdur.  Bootstrap üzerinden örnek vermek gerekirse ALERT için ufak bir fonksiyon ile hızlıca uyarı sistemlerinizi geliştirebilirsiniz. Ek olarak bütün uyarılarınız tek bir fonksiyon üzerinden çıkacağı için durumu yani status değeri “danger” olanları başka bir yerde loglamak gibi basit bir örnek verebilirim.

function alert( $message, $status = '', $close = false, $back_link = false )
{
$x = ( $close ) ? '<button type="button" class="close" data-dismiss="alert">×</button>' : null ;
$y = ( $back_link ) ? '<a href="javascript:history.back()" class="btn btn-'.$status.'"><i class="fa fa-back"></i>Geri Dön</a>' : null ;
$html = '<div class="alert alert-'.$status.'">
'.$x.' '. $message .' '.$y.'
</div>';
return $html;
}
    • $message değişkeni
      • Gösterilecek olan mesaj
    • $status değişkeni
      • Bootstrap kullanıyorsanız .alert .alert-info gibi değerleri sadece info, danger, warning, success gibi değerler alır
    • $close değişkeni
      • Alert nesnesine kapatma butonu ekler
    • $back_link değişkeni
      • Alert nesnesine Geri Dön butonu ekler

 

Rastgele şifre oluşturma fonksiyonu;

function random_password( $length = 7 )
{
$chars = 'qwertyuiopasdfghjklzxcvbnm0123456789';
$new = '';
for( $i = 0; $i < $length; $i++ )
$new .= $chars[ rand( 0, strlen( $chars ) ) ];
return $new;
}

$length değişkeni sayesinde istenilen uzunlukta rastgele şifreler oluşturabilirsiniz. Bu tarz fonksiyonlar daha çok şifre hatırlat, sms ile onay kodu gibi sistemlerde hızlıca bir şifre üretmek amaçlı kullanılabilir.