Bash Scripting/Ders2 ~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 Bash programlamanın ikinci bölümü ile karşınızdayım. Bölüme geçen bölümdeki iflerin eksik kalan kısmıyla devam etmek istiyorum.

İfin birinci kullanımını göstermiştik. İkinci bir kullanımı daha mevcut.
Kod:
#!/bin/bash

echo -n "Bir sayı girin:"
read a
if $a -gt 9 ;then
echo "Girdiğiniz sayı iki basamaklı"
else 
echo "Girdiğiniz sayı tek basamaklı"
fi

Ne yaptık burada ondan bahsedelim. Parantez yerine ; kullandık. = kullanmadık bunn sebebine gelelim. = dışında çeşitli parametreler ile anlatmak istediğimizi koda getirebiliriz :)

Bu parametrelere örnek verelim ;
-gt Büyüktür
-lt Küçüktür
-eq Eşittir
-ge Büyük eşittir
-lt Küçük eşittir


İlk derse gördüğümüz karşılaştırma operatörleri yerine bu parametreleri kullanabiliriz.

TyS6CL.png


Pipe İşareti
3Eygz0.gif



Şimdi gelelim Linuxun olmazsa olmazı pipe işaretine Türkçesi boru demektir. Aslında boru işlevi görür. Bir komutu başka komuta taşır. Basit bir mantıkla anlatayim.

Konsola dedikki bana dizindeki dosyaları sırala. Bu şekikde yazarsak sıralayıp konsola yazdırıcaktır. Biz konsola yazmasın istiyoruz.

Kod:
ls -l | cyberx.txt

Bu şekilde dizindeki dosyaların listesini cyberx.txt dosyasına yazdık.

Biraz daha teknik anlatıcak olursak sol taraftan gelen outputu(çıktı) sağ tarafa input(girdi) olarak yazdı.


TyS6CL.png


Wc Komutu
3Eygz0.gif



Wc komutu bildiğimiz sayaçtır arkadaşlar kelimeleri , satırları vb. sayar.
Parametrelerini görelim;

-w Kelimeleri sayar
-l Satırları sayar
-L En uzun satırı çıktı olarak verir



Az önce öğrendiğimiz pipe ile birleştirelim bu komutu ;

Kod:
ls -l | wc -l

Dediğimiz zaman ls -l bulunduğumuz dizindeki dosyaları listeledi. Bunun çıktısını output olarak elinde tuttu. Wc -l komutuna input olarak girdi ve sonuçta dizinimizde kaç dosya olduğunu öğrenmiş olduk.

TyS6CL.png



İşlem Yapma
3Eygz0.gif



İşlem yapmak da çok basittir. Değişken tanımlayıp $(( )) şeklinde de yapabiliyoruz işlemlerimizi. Ama ben basit olanını göstericem.

Kod:
#!/bin/bash

a=5 b=3
echo expr $a + $b
echo expr $a - $b
echo expr $a \* $b
echo expr $a / $b
echo expr $a % $b

Expr komutunu yazmazsak kabuk bunun matematiksel bir işlem olduğunu anlamayacaktır. * Özel bir karakter olduğundan dolayı önüne \ koyarak belirtmemiz gerekiyor.

Burada fazla uzyn tutmayacağım. 3. Ders matematik işlemleri üzerine olacak büyük ihtimalle :)


TyS6CL.png



Çevresel Değişkenler ve Süslü Parantez
3Eygz0.gif



Burada çok işlevsel şeyler yapabiliriz. Öncelikle süslü parantez kullanımını görelim.

Kod:
echo cyberx{1,2,3}

Şeklinde yazarsam ekrana ;
cyberx1 cyberx2 cyberx3

Şeklinde yazdırıcak. Yani kelime türetmede kullanabiliriz.



$ değişkenleri ;
3Eygz0.gif



$* --> yazdığımız taktirde dosyadaki bütün verileri gösterecektir.

$# --> bu değişken ise verilerdeki harfleri saymaya yarayacaktır.

$? --> shellde yazılan son komutun çıktısını öğrenmek için kullanılır.

$$ --> shell ID sini gösterir

$0 --> shell adını gösterir


TyS6CL.png



Case Komutu
3Eygz0.gif



Casenin mantığı if gibidir. Kali Linux bir çok toolun scriptinde rol oynar aslında. Çok kullanışlı bir komuttur. Gelelim nasıl kullanıldığına ;

Kod:
#!/bin/bash

echo -n "Sayı girin:"
read a
case $a in 
1)echo "Bir girdiniz";;
2)echo "İki girdiniz";;
3)echo "Üç girdiniz";;
esac

Şimdi neler yaptığımızdan bahsedelim. Echo -n le sayı girin diye bir yazı yazdırdık. Read komutu ile kullanıcıdan input aldık. Bu a değeri aynı zamanda bizim değişkenimizdi. Bu değişkeni case komutuna atadık. Case komutunda da 1,2,3 girildiğinde ne olsun şeklinde satırlar oluşturduk. Her satırın sonuna ;; ekledik satırın bittiğini belirtmek amacıyla. Programın sonuna da casenin tersi olan esacı yazdık.

Şimdi gelin case ile bir giriş panel scripti yazalım ;

Kod:
#!/bin/bash

echo -n "Lütfen Şifrenizi Giriniz:"
read -s a
case $a in

cyber)echo "Başarıyla giriş yapıldı";;
*)echo "Yanlış şifre girdiniz";;

esac

Şimdi burada ne yaptık. Kullanıcıdan input aldık. Bu input çıktısı konsolda gözükmedi çünkü -s parametresini kullandık. Case komutuyla eğer cyber girdiysem bana o satırdaki echo çıktısını ver dedik. Eğer herhangi birşey girdiysem ( *) diğerleri anlamında yani else) o satırdaki çıktıyı vermesini istedim.

TyS6CL.png



Kali Linuxtaki setoolkiti incelersek ;


Karlımıza 8 seçenek sunuyır araç Bir değişken tanımlıyor. Case kullanarak 1) de şu olsun 2) de şu olsun gibisinden kod satırları yazarak script oluşuyor.


TyS6CL.png



Temel Linux Komutlarını Scriptte Çalıştırma
3Eygz0.gif



Burada ise temel hemen hemen hepimizin bildiği temel linux komutlarını Scriptimizde nasıl çalıştırırız onu görelim.

Mesela dostamızı Home dizinine kaydedelim. Scriptin içine dizin değiştirme komutunu yazalım.

Kod:
#!/bin/bash

cd /
pwd
ls -la

Ne yaptık şimdi burada. Yazdığımız bash kodlarımızı çekirdeğe iletti. Çekirdek cd / yani root klasörüne gitti. Ondan sonra print working directory ile dizinimizi yazdırdı /root şeklinde. ls -la ile dosyaların tüm özelliklerini sıraladık.


TyS6CL.png



Banner Komutu
3Eygz0.gif



Banner komutu şekilli yazı yazmaya yarayan bir komuttur :) Yazacağımız yazıyı tırnak içinde yazarız. Şimdi bunu scriptimizde gösterelim.

Kod:
#!/bin/bash

echo "Hoşgeldiniz"
banner "Hoşgeldiniz"

Şeklinde yazarsak echo ile normal biçimde banner ile şekil biçimde Hoşgeldiniz yazmış oluruz.


TyS6CL.png



Dosya Adı Değiştirme Scripti
3Eygz0.gif



Bi script yazalım. Yazdığımız script dosyamızın adını değiştirmeye yarasın.

Kod:
#!/bin/bash

mv $1 $2

Burada ne yaptık şimdi. Tek satrlık kodla yazdık biraz basit oldu. $1 değişkeni nedir ondan bahsedeyim.

sh cyberx.sh yazdığım zaman direk entera basmadan 1 boşluk bırakıp yazacağım input değeri (read gibi düşünün) $1 değişkenine atanır. Ondan sonra yazacağım değer ise $2 komutuna atanır.


TyS6CL.png



Dizin Silme Scripti
3Eygz0.gif



Kod:
#!/bin/bash

rmdir $1 $2 $3

Şimdi ne yaptık. 4 tane dizinim var diyelim. a,b,c,d dizinleri olsun. Programımın adını yazıp boşluk bıraktığımda a b c d yazarsam ilk 3 dizini silecektir. 4.yü silmez. Çünkü $4 diye bir değişken atamadık scriptimizde.


TyS6CL.png



Set Komutu
3Eygz0.gif



Set komutu değişken tutmaya yarayan komuttur. Örnek verecek olursak a=5 diye değişken oluşturmak yerine set 5 yaparak bu değişkeni tutabiliriz.

Set komutunun içinde kod yazmak için eğik tırnak işareti kullanılır.

TyS6CL.png




Dosya İsmi Özelleştirme Scripti

Şimdi bu scriptte girdiğimiz dosya adını dosyaadı.kullanıcıadım yapsın ;

Kod:
#!/bin/bash

a=$1
set 'who'
mv $a $a.$1

Set komutu içine who yazarak kullanıcı adımızı öğrendik. Konumsla değişkene a yı atadık. Ve böylece a nın yazına whoda çıkan ismi yazdı.

Deneme dosyasını scriptte çalıştırdığım zaman Deneme.cyberx olucaktır.


TyS6CL.png



# Komutu
3Eygz0.gif



Bu komut saymaya yarar arkadaşlar.
Bu komut basittir fazla uzun tutmayacağım. Örneğin bir dizinin dosyalarını saymak için ne yaparız;

Kod:
#!/bin/bash
#Bulunduğumuz dizindekini göstericek
#Mesela üst satıra cd / diyerek root 
#dizinindeki dosyaları listeletebiliriz.
echo "Dosya Sayısı=$#"

2. Dersimizde burada son buluyor. 3. Dersi yetiştirebilirsem haftasonuna yazacağım. Genel olarak örnek olucak. Matematiksel işlemlere değinmeye çalışacağım.
İyi forumlar...



 
Son düzenleme:

CyberXhackk

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

M0deain

Üye
17 May 2018
114
0
Taiwan
Merhaba "CyberXhackk"
Yaptığın bu işi şiddetle takdir ediyorum. Sakın bırakma, devam et. Sayende bilgisi olmayan arkadaşlarımız bir şeyler öğreniyor. Ben teşekkür ederim. İyi forumlar.
 

CyberXhackk

Kıdemli Üye
13 Mar 2016
3,132
10
C/C++ Dev.
Merhaba "CyberXhackk"
Yaptığın bu işi şiddetle takdir ediyorum. Sakın bırakma, devam et. Sayende bilgisi olmayan arkadaşlarımız bir şeyler öğreniyor. Ben teşekkür ederim. İyi forumlar.

Teşekkür ederim. Bırakmaya niyetim yok :) Eğer ilgi görürse youtube üzerinden eğitim seti yapmsyı düşünüyorum yazın
Bu arada kulübünü de hayırlarım
 
Ü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.