Bu dersimizde öncelikle "Terminal" ekranında otomatik olarak oluşturduğumuz fonksiyonları nasıl kullanacağımızı öğreneceğiz. source : Bu komut ile ardından belirtilen scripti istenilen script içerisine adapte edebiliriz. Türkçe "Kaynak" anlamına gelmektedir. Öyleki, siz "script1.sh" içerisinde oluşturduğunuz fonksiyon ve komutları "script2.sh" adlı script içerisinde istediğiniz zaman kullanabilirsiniz. Mesela "script1.sh" script içeriği,
[alax@alax script]$ cat script1.sh #!/bin/bash # script1.sh echo "Merhaba Dünya" [alax@alax script]$
şeklinde olsun ve "script2.sh" içeriği,
[alax@alax script]$ cat script2.sh #!/bin/bash # script2.sh source script1.sh [alax@alax script]$
şeklinde olsun. Bu durumda "script2.sh" adlı scripti çalıştırdığımız zaman ekrana "Merhaba Dünya" yazacaktır. Kısacası "script1.sh" içeriğini "script2.sh" içeriğine dahil etmiş oluyoruz ve "script1.sh" içerisinde olan komutlar "script2.sh" içerisinde çalıştırılıyor. Bu durumu şu şekilde daha kullanışlı hale getirebiliriz.
[alax@alax ~]$ cat fonksiyonlar.sh #!/bin/bash # fonksiyonlar.sh function porttara(){ if [ $# -eq 1 ]; then for port in {1..100}; do nc -z -v -w1 $1 $port > /dev/null 2>&1 && echo $port AÇIK done elif [ $# -eq 2 ]; then if (nc -z -v -w1 $1 $2 > /dev/null 2>&1); then echo $2 AÇIK else echo $2 KAPALI fi fi } [alax@alax ~]$
Şimdi "fonksiyonlar.sh" dosyasına çalıştırılma izni verelim ve fonksiyonumuzu ".bashrc" içerisine dahil edelim. Bunun için ".bashrc" içerisine "alias" komutlarının üzerine herhangi bir yere "source fonksiyonlar.sh" yazmamız yeterli.
[alax@alax ~]$ chmod u+x fonksiyonlar.sh [alax@alax ~]$ nano .bashrc # # ~/.bashrc # # If not running interactively, don't do anything [[ $- != *i* ]] && return alias ls='ls --color=auto' PS1='[\u@\h \W]\$ »» ' source fonksiyonlar.sh # BURAYA EKLİYORUZ.. alias tux='echo Penguen' alias cdd='cd ~/tux/script' alias cl='clear' fak () { sayi=$1 sonuc=1 while [ $sayi -gt 0 ] do sonuc=$(( $sonuc * $sayi )) sayi=$(( $sayi - 1 )) done echo $sonuc } [alax@alax ~]$
Evet şimdi yeni bir tane "Terminal" açalım ve fonksiyonumuzu kullanalım. Fonksiyonumuz iki şekilde çalışmaktadır. 1- "porttara web_site_adresi" komutu ile belirlediğimiz aralıkta(örneğimizde 1 ile 100 arası, isterseniz burayı değiştirebilirsiniz) port taraması. 2- "porttara web_site_adresi port_numarası" ile sadece istediğimiz bir port numarasını kontrol edebiliriz. Şimdi yeni açmış olduğumuz "Terminal" ekranında fonksiyonumzuu çalıştıralım.
[alax@alax ~]$ porttara
21 AÇIK 53 AÇIK 80 AÇIK [alax@alax ~]$ [alax@alax ~]$ porttara
99 99 KAPALI [alax@alax ~]$
Evet fonksiyonumuz hızlı bir şekilde çalıştı. Lütfen derslerde ve örneklerde kullanılan komutaların ne anlama geldiğini ve çalışma mantığını daha iyi kavramak için pratik yapınız. Bu dersimizde oluşturmuş olduğumuz "fonksiyonlar.sh" script dosyasını silmeyiniz. Sonraki örneklerimizde oluşturacağımız fonksiyonalarımızı kolaylık olması açısından bu script içerisinde toplayacağız.
[alax@alax script]$ cat script1.sh #!/bin/bash # script1.sh echo "Merhaba Dünya" [alax@alax script]$
şeklinde olsun ve "script2.sh" içeriği,
[alax@alax script]$ cat script2.sh #!/bin/bash # script2.sh source script1.sh [alax@alax script]$
şeklinde olsun. Bu durumda "script2.sh" adlı scripti çalıştırdığımız zaman ekrana "Merhaba Dünya" yazacaktır. Kısacası "script1.sh" içeriğini "script2.sh" içeriğine dahil etmiş oluyoruz ve "script1.sh" içerisinde olan komutlar "script2.sh" içerisinde çalıştırılıyor. Bu durumu şu şekilde daha kullanışlı hale getirebiliriz.
- İstediğimiz dizin içerisinde "fonksiyonlar.sh" adında bir script dosyası oluşturduktan sonra,
- Bu script dosyasını "~.bashrc" dosyası içerisine "source" komutu ile dahil edip, istediğimiz zaman fonksiyonalrımızı kullanabiliriz.
- Yada bir çok script dosyasını bu şekilde birbirine bağlayabiliriz.
- Netcat
- Socat
[alax@alax ~]$ cat fonksiyonlar.sh #!/bin/bash # fonksiyonlar.sh function porttara(){ if [ $# -eq 1 ]; then for port in {1..100}; do nc -z -v -w1 $1 $port > /dev/null 2>&1 && echo $port AÇIK done elif [ $# -eq 2 ]; then if (nc -z -v -w1 $1 $2 > /dev/null 2>&1); then echo $2 AÇIK else echo $2 KAPALI fi fi } [alax@alax ~]$
Şimdi "fonksiyonlar.sh" dosyasına çalıştırılma izni verelim ve fonksiyonumuzu ".bashrc" içerisine dahil edelim. Bunun için ".bashrc" içerisine "alias" komutlarının üzerine herhangi bir yere "source fonksiyonlar.sh" yazmamız yeterli.
[alax@alax ~]$ chmod u+x fonksiyonlar.sh [alax@alax ~]$ nano .bashrc # # ~/.bashrc # # If not running interactively, don't do anything [[ $- != *i* ]] && return alias ls='ls --color=auto' PS1='[\u@\h \W]\$ »» ' source fonksiyonlar.sh # BURAYA EKLİYORUZ.. alias tux='echo Penguen' alias cdd='cd ~/tux/script' alias cl='clear' fak () { sayi=$1 sonuc=1 while [ $sayi -gt 0 ] do sonuc=$(( $sonuc * $sayi )) sayi=$(( $sayi - 1 )) done echo $sonuc } [alax@alax ~]$
Evet şimdi yeni bir tane "Terminal" açalım ve fonksiyonumuzu kullanalım. Fonksiyonumuz iki şekilde çalışmaktadır. 1- "porttara web_site_adresi" komutu ile belirlediğimiz aralıkta(örneğimizde 1 ile 100 arası, isterseniz burayı değiştirebilirsiniz) port taraması. 2- "porttara web_site_adresi port_numarası" ile sadece istediğimiz bir port numarasını kontrol edebiliriz. Şimdi yeni açmış olduğumuz "Terminal" ekranında fonksiyonumzuu çalıştıralım.
[alax@alax ~]$ porttara
Bu bağlantı ziyaretçiler için gizlenmiştir. Görmek için lütfen giriş yapın veya üye olun.
Bu bağlantı ziyaretçiler için gizlenmiştir. Görmek için lütfen giriş yapın veya üye olun.
Evet fonksiyonumuz hızlı bir şekilde çalıştı. Lütfen derslerde ve örneklerde kullanılan komutaların ne anlama geldiğini ve çalışma mantığını daha iyi kavramak için pratik yapınız. Bu dersimizde oluşturmuş olduğumuz "fonksiyonlar.sh" script dosyasını silmeyiniz. Sonraki örneklerimizde oluşturacağımız fonksiyonalarımızı kolaylık olması açısından bu script içerisinde toplayacağız.