37
Konuya ait anahtar kelimeler : Shell Skript ile Web Site port tarama, fonksiyon oluşturma 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.
  • İ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.
Port Tarama : Shell script komutları ile herhangi bir Web Sitesine ait açık olan portları taramak için,
  • Netcat
  • Socat
programlarına ihtiyacımız var. Lütfen bu programlar sisteminizde yüklü değilse yükleyiniz. Kullanacağımız komut ise, nc -z -v -w1 web_site_adresi port_numarası şeklinde olacaktır. Burada dikkat etmemiz gereken nokta "-w" parametresi ile denemenin zaman aşımı değeridir. Biz scriptimizde bu değeri bir(1) saniye olarak belirledik. Eğer bu parametre belirtilmez ise açık olmayan port numaralarında 2 dakika bekleme süresi bulunmaktadır bu şekilde kullanım ile her saniyede bir port denemesi yapacaktır. Şimdi "~.bashrc" dosyasının olduğu "home" klasörümüz içerisinde "fonksiyonlar.sh" adında bir script dosyası oluşturalım. Script içeriği aşağıdaki gibi olacaktır.
[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 www.shellskript.com 21 AÇIK 53 AÇIK 80 AÇIK [alax@alax ~]$ [alax@alax ~]$ porttara www.shellskript.com 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.