Gökhan Tunçkale
ABOUT THE AUTHOR

Gökhan Tunçkale

IdeaSoft'ta Yazılım Geliştirici. Yıldız Teknik Üniversitesi Matematik Mühendisliğinde halen öğrenci. Yazılımla ilgili konularda çalışmayı sever. Hem Beşiktaşlı, hem Barcelona takipçisi.

mysql’deki tablonun olup olmadığını kontrol etmek (php kullanarak)

Php ile çalışırken, mysql’de kullandığımız veritabanı içerisinde, herhangi bir isimdeki tablonun var olup olmadığını kontrol etmenin bir kaç yolu vardır. Bu yazıda onlardan bahsedeceğim.

Bunlardan ilki, SHOW TABLES querysini kullanmaktır.

Örneğin, test isminde bir veritabanımız olsun. İçerisindeki tabloların ismi de, admin, member, log, test1, test2 olsun. Yani mysql’e konsoldan bağlanıp use test dedikten sonra, show tables dediğimizde karşımıza şu çıksın.

+------------------------+         |
| admin                  |
| member                 |
| log                    |
| test1                  |
| test2                  | 
+------------------------+

Şimdi işin Php kısmına geçelim.

// burada mysql'e bağlanmış olalım.

$result = mysql_query( "SHOW TABLES FROM test" );

if (! $result) {
	echo "Sorguda hata meydana geldi 
"; echo 'mysql error: ' . mysql_error(); } else { $row = array(); while ( $row = mysql_fetch_row( $result ) ) { echo "Tablo ismi : ".$row[0]."
"; } } mysql_free_result( $result );

SHOW TABLES FROM test querysinin ardından, LIKE parametresi ekleyerek, sonucu daraltabiliriz. Ardından da sonuçları php ile parse ederek, aradığımız isimdeki tablonun olup olmadığını kontrol edebiliriz. (SHOW TABLES FROM test LIKE ‘%min%’ gibi)

İkinci yöntemimiz ise, mysql’deki information_schema databasei içerisindeki TABLES tablosundaki bilgiler. Bu tabloda TABLE_SCHEMA sütununda veritabanı isimleri TABLE_NAME sütununda ise tablo isimleri yer almaktadır.

SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = ‘{database ismi}’ AND table_name = ‘{tablo ismi}’ şeklinde çalıştıracağımız sorgudan gelen sonuç ile istediğimizi elde etmiş olacağız. Yapalım;

// burada mysql'e bağlanmış olalım.

$result = mysql_query( "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='test' AND table_name='test1'" );

if (! $result) {
	echo "Sorguda hata meydana geldi 
"; echo 'mysql error: ' . mysql_error(); } else { $count = mysql_num_rows($result); if($count == 1){ // tablo var, gerekli işlemler } else { // tablo yok, gerekli işlemler } } mysql_free_result( $result );

linux ngrep komutu (ağ trafiği işlemleri)

ngrep komutu, bildiğimiz grep komutunun network versiyonudur. Başlıkta da belirttiğim gibi ağ trafiğini inceleme işlemlerinde kullanılır.

Kullanımı sırasında regex işlemlerine izin vermektedir. Yani data paketleri içerisinde arama da yapabiliyoruz. HTTP, SMTP, FTP gibi her türlü ağ trafiğini izlemek ve analiz etmek için kullanılmaktadır. Ayrıca kaynak ve port seçmemize de olanak sağlıyor.

Kurulumu şu şekildedir;

apt-get install ngrep

Kullanımı için bir kaç örnek vermek gerekirse;

ngrep -d any port 80

80. port ile ilgili tüm trafiği ekrana basacaktır. -d parametresi host üzerinde bulunan tüm network interfaceleri üzerindeki trafiği görmek için eklenmiştir, özelleştirmek için -d eth0 diyerek özel bir interface üzerindeki trafiği görebiliriz.

Çıktıları gözümüze biraz karmaşık gelebilir. O yüzden, çıktıları satır satır görmek için, -W Byline parametresini de ekleyebiliriz.

ngrep -d any -W Byline port 80

Detayları için bu sayfayı ziyaret edebilirsiniz : http://ngrep.sourceforge.net/usage.html

linux hardware bilgileri detayları (inxi)

inxi, donanımınız ile ilgili detayları gösteren bir shell scriptdir.

Bir shell script olduğu için, bu scripti kullanıcılara ait programların olduğu dizine (usr/local/bin) koyarak, kurulumunu yapmış oluruz. Kullanabilmek için ek olarak gawk paketini de kurmamız gerekmekte.

Aşağıdaki komutları uyguladığımızda kurulum tamamlanır;

apt-get install gawk
cd /usr/local/bin && wget -Nc smxi.org/inxi && chmod +x inxi

Kullanımı ise şu şekilde; eğer tüm sistem bileşenleri ile ilgili bilgiyi aklmak istiyorsak inxi -F , sadece CPU bilgisini almak istiyorsak inxi -f , network adaptörü ile ilgili bilgiyi almak istiyorsak inxi -n , kullandığımız makinenin bilgilerini almak istiyorsak inxi -M komutları ile görebiliyoruz.

Parametre listesinin tamamı burada mevcut; https://code.google.com/p/inxi/wiki/inxi

Linux terminalde temel network komutları

Dosya indirirken, kullandığımız network üzerindeki işlemleri incelerken, istatistiklerine bakarken, network problemlerine göz atarken kullandığımız arayüzü gelişmiş programlar veya internet siteleri var. Tabi bunların her biri için kullanabildiğimiz birer linux komutları da var, genel olarak onlardan bahsetmek istedim.

curl & wget

curl veya wget, internet üzerinden dosya indirmemize yarar. curl kullanıyorsanız -O parametresi ile, wget kullanıyorsanız parametresiz bir şekilde bulunduğunuz dizine dosyayı indirebilirsiniz.

curl -O website.com/file
wget website.com/file

ping

ping komutu ECHO_REQUEST paketleri göndererek, bilgisayarınızın yazdığınız ip adresi veya domain ile iletişime geçip geçemediğini size bildirir. Ancak bunu kullanırken bazı sistemlerin ping komutuna yanıt verebilecek şekilde yapılandırılmadığını da göz önünde bulundurmalısınız.

Windowstaki ping komutu belirli sayıda paket göndererek size yanıtları gösterir, ancak Linux üzerinde siz sonlandırana kadar paket göndermeye ve size sonuç göstermeye devam eder. Bu yüzden Linuxta ping komutuna parametre olarak -c ve paket adedini yazarak kaç paket ile ping atılacağını yönetebilirsiniz.

ping -c 5 dubluve.net

tracepath & traceroute

tracepath komutu ile traceroute komutu birbirine benzer işlemler yapmaktadırlar. (tracepath Ubuntu’da kurulu olarak gelmektedir.) Eğer internet ağınızda bir yavaşlama veya bir problem varsa, bu komut size nerede hata olduğunu göstermektedir.

tracepath dubluve.net

mtr

Mtr komutu, gitmek istediğimiz ip adresine / domaine ulaşıncaya kadar geçtiğimiz ağları tanılamaya yarayan komuttur. Detayları için buradaki yazıyı inceleyebilirsiniz. Windowstaki kullanımı için de (tracert) buradaki yazıyı inceleyebilirsiniz.

mtr dubluve.net

(Çıkış yapmak için q veya ctrl-c kullanabilirsiniz.)

host

Domain kullanarak ip adresi öğrenebilen komuttur.

host dubluve.net

whois

whois komutunu kullanarak websitesinin kimin adına kayıtlı olduğunu, name serverlarını vs. birçok bilgiyi öğrenebiliriz.

whois dubluve.net

Ubuntu’da whois kurulu olarak gelmemektedir, sudo apt-get install whois diyerek install edebilirsiniz.

ifplugstatus

ifplugstatus Ubuntu’da kurulu olarak gelmemektedir, sudo apt-get install ifplugd komutu ile install ediniz.

ifplugstatus komutu size network interface üzerindeki statusları gösterir.

ifplugstatus

Çıktısı şu şekilde olur;

eth0: unplugged
lo: link beat detected
wlan0: link beat detected

link beat detected demek, bağlı olduğunu gösterir, unplugged ise olmadığını gösterir.

ifconfig

ifconfig ağ üzerindeki bir çok bilginizi görmeye yarar. IP adresiniz, bağlantı türünüz, kullandığınız network arayüzü, aktif arayüzler vs.

ifconfig

dhclient

dhclient komutu bilgisayarınızın ip adresinden yeni bir DHCP server yaratır. DCHP serverın ne olduğu hakkında bilgi edinmek için buradaki yazıyı okuyunuz.

dhclient Ubuntu’da root olmanızı istemektedir, eğer ip adersinizin aynı kalmasını istiyorsanız -r parametresi ile kullanınız.

sudo dhclient -r
sudo dhclient

netstat

netstat komutu network arayüzünüzle ilgili bir çok bilgiyi sunmaktadır.

netstat

-p parametresi ile programların ilişkili olduğu socketleri görüntülersiniz.

netstat -p

-s parametresi ile portların detaylı istatistiklerini görüntülersiniz.

netstat -s

ubuntu’da statik ip adresi ayarları

Ubuntu’da komut satırından statik ip ve dns adreslerini ayarlama işlemleri şu şekilde olmaktadır;

İlk olarak network interface ayarlarımızı düzenliyoruz. Herhangi bir text editörü kullanarak bu işlemi yapabiliriz, örneğin nano ile yapmak için;

sudo nano /etc/network/interfaces

Açtığınız dosyanın içerisinde şunları göreceksiniz;

auto lo eth0
iface lo inet loopback
iface eth0 inet dynamic

Eğer birden fazla network kartınız varsa, hangi network interface üzerinde ayar yaptığınıza dikkat etmelisiniz.
Dosyanın içerisini şu şekilde düzenliyoruz, ardından kaydediyoruz;

auto lo eth0
iface lo inet loopback
iface eth0 inet static
        address xxx.xxx.xxx.xxx(buraya ip adresini yazıyoruz)
        netmask xxx.xxx.xxx.xxx
        gateway xxx.xxx.xxx.xxx(buraya router ip adresini yazıyoruz)

Ardından DNS ayarlarımızı değiştiriyoruz. Bunun için /etc/resolv.conf dosyasını düzenliyoruz.

sudo nano /etc/resolv.conf

Dosyayı açtıktan sonra içerisini şu şekilde düzenleyip kaydediyoruz;

nameserver xxx.xxx.xxx.xxx(dns server ip'si)
nameserver xxx.xxx.xxx.xxx(alt dns server ip'si)

Son olarak network interface için restart yapıyoruz;

sudo /etc/init.d/networking restart

Eğer isterseniz ifconfig yazarak yaptığınız ayarları kontrol edebilirsiniz.

Kaynak : http://www.howtoforge.com/linux-basics-set-a-static-ip-on-ubuntu