Bash Scripting/Ders1 ~CyberX #StajyerAsistanKulübü#

CyberXhackk

Kıdemli Üye
13 Mar 2016
3,132
10
C/C++ Dev.
6a7N6Q.gif


yKPzdN.png


3Eygz0.gif


Merhaba arkadaşlar bu konumda sizlere Bash programlamayı anlatıcam.

Öncelikle bash programlama nedir ondan bahsedelim. Bash bir kabuk programlamadır işletim sistemiyle kullanıcı arasına bir köprü oluşturur. Aslında linux çekirdekli sistemlerde konsola yazdığımız her komut bir Bash komutudur.

Bash komutlarını konsol üzerinden veya Nano editörütünü açarak yazabiliriz.

Örnek verecek olursak konsola
Kod:
echo "TurkHackTeam"
yazarak komut çıktısı olarak TurkHackTeam yazısını alabiliriz.

TyS6CL.png



Nano Editöründe Bash Programlamaya Giriş
3Eygz0.gif


Kod:
nano ilkprogram.sh

Yazarak Bash diline uygun bir program açabiliriz. Başına nano komutunu ekleyerek direk nano editörü üzerinde açarız.

Kodların en başına #!/bin/bash yazmaz isek program çalışmaz. Html dilindeki <html> yazısı olarak veya C# dilindeki kütüphane ekleme olarak düşünebiliriz.

TyS6CL.png



Echo Komutu
3Eygz0.gif


Bu komutu hepimiz biliyoruzdur sanırım. Echo komutu yazdırmaya yarar. Bu komut üzerinde fazla durmaya gerek yok.
Kod:
echo "Merhaba Dünya"

Şeklinde yazdırabiliriz. Burada önemli bir nokta mesela ekrana $CyberX yazdırmak istiyoruz. Bunu
Kod:
echo "$CyberX"
Şeklinde kullanamayız. Çünkü dolar işareti tanımladığımız değişkeni kullandırmaya yöneliktir. Özel karakterleri kullanırken '(Tek tırnak) veya özel karakterden önce \ işareti kullanılır.

Kod:
echo '$CyberX'
echo "\$CyberX"

TyS6CL.png



Cat Komutu
3Eygz0.gif



Cat komutu ise okumaya yarar. Örneğin bulunduğumuz dizin içinde bir txt dosyası mevcut biz o dosyanın başına cat yazarak pratik bir şekilde içeriğini okuruz. Hemen basit bir program yazalım.

Kod:
#!/bin/bash 

echo "CyberXhackk"

Programın adı turkhackteam.sh olsun.

Kod:
cat türkhackteam.sh

Dersek bu komut bize dosyayı çalıştırmaz. Dosyanın içeriğini okur. Yani karşımıza bu çıktıyı verir.

Kod:
#!/bin/bash 

echo "CyberXhackk"

Bizim bu dosyayı açmamız için öncelikle açma iznini vermemiz gerekiyor. İzin demişken başka bir komuta geçiyoruz :)


TyS6CL.png



Chmod Komutu
3Eygz0.gif


chmod komutu izin vermek için kullanılan komuttur. 3 çeşit izin vardır.
Yazma(write) , Okuma(read) , Açma(execute)

Yazma iznini vermek için ;

chmod +w dosyaadı
chmod -w dosyaadı


Okuma iznini vermek için ;

chmod +r dosyaadı
chmod -r dosyaadı

Açma iznini vermek için ;

chmod +x dosyaadı
chmod -x dosyaadı

Her iznin bir puanı vardır. Açma >1 Yazma >2 Okuma >4 gibi
Tüm kullanıcılara tüm yetkileri vermek için
Kod:
chmod 777 dosyaadı

Komutunu kullanırız. 7 4+2+1 den gelir.


TyS6CL.png


Bash Programlamada Değişken Tanımlama
3Eygz0.gif


Bash programlamada değişken tanımlama Python dili ile benzerlik gösterir. Yani kolaydır.

a=kullanıcıadı
b=şifre

Diyerek değişkenleri tanımlarız örnek olarak ;

Kod:
#!/bin/bash

a=RedHat
b=WhiteHat

echo "Merhaba $a "
echo
echo "Merhaba $b"

Şimdi burada anlatmam gereken iki önemli yer daha var. Echo yazdık ve birşey yazmadık. Bunu boş satır olarak kullanıyoruz. Yani bir satır boş görünsün diye. $ 'ı ise değişkenlerden önce kullanıyoruz. Değişkenlerin önüne dolar işareti koymazsak değişkeni tanımaz.

TyS6CL.png



Yorum Satırları
3Eygz0.gif


Her programlama dilinde olduğu gibi Bash dilinde de yorum satırına ihtiyacımız olacaktır.

Kod:
#!/bin/bash

#Bu satır program çalıştığında #görünmeyecektir....

Her satırın başında # işareti olmak zorundadır.

Şu ana kadar ekrana yazdırmayı, değişken tanımlayıp kullanmayı vb. Gördük. Peki ya kullanıcıdan veri almak istersek?

TyS6CL.png



Read Komutu
3Eygz0.gif


read komutu kullanıcıdan veri almamızı sağlayan komuttur.

Örnek verecek olursak ;
Kod:
#!/bin/bash
echo "Adınızı Giriniz :"
read isim
echo merhaba $isim

Read komutu ile kullanıcıdan veri almayı sağladık. Aynı zamanda bu komutla bir değişken tanımladık. Echo ile merhaba yazdırdık devamında da $ işareti ile değişkeni koyduk.

TyS6CL.png



Sistemde Bulunan Değişkenler
3Eygz0.gif


Değişkenleri kendimiz tanımlıyorduk değil mi. Linux sistemlerde hazır değişkenler bulunmakta Örnek verecek olursak $SHELL değişkeni sistemin kendisinde bulunuyor. Yani ;

Kod:
#!/bin/bash

echo $SHELL

Yazarsak kendimiz değişken tanımlamaya gerek kalmadan direk olarak çıktı alırız. Sistem değişkenleri direk konsola yazılabilir. Bu arada yukarıdaki kodun çıktısı /bin/bash olacaktır.

TyS6CL.png



Karşılaştırma Operatörleri
3Eygz0.gif


Ondan önce şundan bahsedeyim arkadaşlar. Linuxta Bash dilinde 0 doğru 1 yanlış demektir. Bir programı çalıştırdıktan sonra echo $? yaptığımızda konsol bize 0 diyorsa program hatasız çalışmış demektir. Mantık hatası yoktur. Eğer bize 1 diyorsa kodlarda veya mantıkta hata vardır.

Mesela yazdığımız programda 15>13 varsa bunun çıktı değeri 0 olarak yani doğru olarak çıkar. Bununla ilgili bir örnek yazalım.

Kod:
#!/bin/bash

ilksayı=10
ikincisayı=20

[[ $ilksayı > $ikincisayı ]]

echo $?

Bu programın çıktısı bize 1 yazacaktır. Çünkü 10>20 dedik. Bu da yanlış bir ifade

Karşılaştırma operatörleri 5 tanedir. Diğer programlama dilleriyle aynıdır bunlar.

> Büyüktür
< Küçüktür
>= Büyüktür veya eşittir
<= Küçüktür veya eşittir
== Eşittir
!= Eşit değildir


TyS6CL.png



İf-Else Komutları
3Eygz0.gif


Gelelim her programlama dilinin belkemiği olan if-else komutuna :)
Bash dilinde de kullanımı diğer programlara benzer aslında.

İf diyoruz yanına da bir komut söylüyoruz. Eğer o komut gerçekleşirse
İf komutunun altında yazdıklarımız gerçekleşiyor. Gerçekleşmezse else komutunun altındakiler gerçekleşiyor.

Örnek olarak bir program yazalım;

Kod:
#!/bin/bash

echo -n "Bir sayı girin :"
read sayı

if [ $sayı = 5 ]
      then
echo "Ekrana 5 yazdırdınız"

fi

Mantığını göstermek amaçlı basit bir program yazdık. Şimdi ne yaptığımızı anlatayim. Kullanıcıdan bir sayı girmesi için read komutunu kullandık. Kullanıcı sayı girdi. Eğer sayı 5 ise konsola "Ekrana 5 yazdırdınız" ifadesini gösterdik. Eğer 5 yazmamışsa karşısına bişey çıkmadı. Şimdi bi login giriş scripti oluşturalım;

Kod:
#!/bin/bash

echo "Lütfen Kullanıcı Adı ve Şifre yazın."
echo
echo
echo -n "Kullanıcı Adı:"
read id 
echo -n "Şifre:"
read -s pass

if [ $id = cyberx && $pass = turkhackteam ];
then
echo "Sisteme Başarıyla Giriş Yaptınız.."

else
echo "Yanlış şifre girdiniz.."
fi


Şimdi burada naptık. İd ve pass girişi için kullanıcıdan veri aldık. Pass kısmındaki -s parametresi onun gizli olduğunu belirtiyor. Yani konsolda şifremizi yazarken görünmemesini sağlıyor. Neyse konumuza dönelim. Biz burada dedik ki eğer kullanıcın id girişi cyberx ise ve (&&) pass girişi turkhackteam ise Giriş yapıldı yazsın. Eğer bunlardan farklı ise Yanlıi şifre yazsın.

= yerine -eq parametresini de kullanabilirdik.

Fi komutuna gelince ise fi komutu if komutunu bitirmemize yarayan komuttur.


Bu ders burada son buluyor arkadaşlar
Sonraki derste Döngüler İşlem yapma ve Basit bir hesap makinesi yapıcaz..
İyi forumlar...


kali-linux-1508669328.png







 
Son düzenleme:

'Taipan

Kıdemli Üye
30 Haz 2015
3,847
71
Eline sağlık seri ilerlerse ve tek konuda seriler toplanırsa link olarak sabitlik güzel bir konu olur
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.