36
Konuya ait anahtar kelimeler : Shell script ile Web sayfası kontrol etme, curl Bu dersimizde bir Web sayfasının olup olmadığını, eğer var ise ne türde bir sayfa olduğunu bizlere gösteren bir script hazırlayacağız. Tabi bunun için öncelikle Web sayfaları türlerini tanımamız gerekmektedir. Bazı Web sayfası hata ve sayfa geri dönüşleri aşağıda verilmiştir.
200Sayfa VAR.
301, 302Sayfa başka bir sayfaya YÖNLENDİRİLMİŞ.
404Sayfa YOK.
500Sayfada kodlama hatası mevcut.
501Sayfada yanlış erişim izinleri bulunmaktadır(chmod).
Evet yukarıda, hazırlamak istediğimiz script için gerekli sayfa hataları bulunmakta. Bu durumda script algoritmamızı kurmamız artık çok kolay. Bu işlemler için "curl" programını kullanacağız. Eğer sisteminizde kurulu değil ise lütfen "curl" programınızı kurunuz. Programın kurulu olup olmadığını önceki derslerimizde nasıl kontrol edeceğimizi gösterdik. Script adı "web_sayfa_kontrol.sh" olsun. Script çalışma mantığı ise aşağıdaki gibi olacaktır.
  • Öncelikle kullanıcıdan bir Web sayfası adını girmesini isteyecek.
  • Eğer kullanıcı bir Web sayfa adresi yazmaz ise kullanıcıya hata yaptığını, hata mesajı ile yazacak ve tekrardan denemesini isteyecek.
  • Daha sonra bir değişkene, sayfa geri dönüş değeri atanacak ve "case" durum değerlendirmesi ile sayfanın olup olmadığını gösterecek.
  • Aksi belirtilmediği sürece script sürekli tekrarlanacak ve yeni bir Web sayfası yazması istenecek. Eğer kullanıcı "Q" harfine basarsa script çıkış yapacak.
Şimdi script dosyamıza geçmeden "curl" programınının istediğimiz parametreler ile çalıştığı zaman bizlere nasıl bir çıktı sunduğuna bakalım. Kullanacağımız komut dizesi: curl -s --head -w %{http_code} http://www.linux.web.tr/36 şeklinde olacaktır. Burada sayfanın üst bilgisini çekiyoruz. Şimdi örneğimizi yapalım ve çıktısının kaç satır ve sütundan oluştuğuna bakalım.
[alax@alax script]$ curl -s --head -w %{http_code} www.linux.web.tr/36 HTTP/1.1 200 OK X-Powered-By: PHP/5.3.29 Content-Type: text/html; charset=utf-8 Date: Sat, 05 Dec 2015 21:17:01 GMT Accept-Ranges: bytes Server: LiteSpeed Connection: close [alax@alax script]$
Gördüğünüz gibi istediğimiz sayfa geri dönüş numarası birinci satır, ikinci sütunda bulunuyor. Bu çıktı içerisinden, bu kısmı çektikten sonra işlemlerimize geçebiliriz. istediğimiz kısmı çekebilmek için "head" ve "awk" komutlarını kullanacağız. "web_sayfa_kontrol.sh" dosyamızın içeriği aşağıdaki gibi olacaktır.
[alax@alax script]$ nano web_sayfa_kontrol.sh #!/bin/bash # web_sayfa_kontrol.sh # Web sayfası kontrol skripti. while : do read -p "Lütfen bir Web sayfası adresini giriniz. Örn:\"www.linux.web.tr/36\" Çıkış[Q] :" sayfa echo if [ -s $sayfa ]; then echo "Herhangi bir Web sayfa adresi girmediniz... Lütfen takrar deneyiniz.." echo elif [ "$sayfa" == "q" ] || [ "$sayfa" == "Q" ]; then echo "Çıkış yapılıyor.." exit 2 else sonuc=$(curl -s --head -w %{http_code} $sayfa | head -1 | awk '{print $2}') case $sonuc in "200" ) echo "$sayfa Web sayfası MEVCUT..." ;; 301|302 ) echo "$sayfa Web sayfası YÖNLENDİRİLMİŞ bir sayfa..." ;; "404" ) echo "$sayfa Web sayfası MEVCUT DEĞİL..." ;; 500|501 ) echo "$sayfa Web sayfasında HATALAR bulunmakta.." ;; *) echo "Herhangi bir hata meydana geldi.." ;; esac fi done
Şimdi scripti çalıştıralım ve örnek sayfamızı test edelim.
[alax@alax script]$ chmod u+x web_sayfa_kontrol.sh [alax@alax script]$ ./web_sayfa_kontrol.sh Lütfen bir Web sayfası adresini giriniz. Örn:"www.linux.web.tr/36" Çıkış[Q] :www.linux.web.tr/36 www.linux.web.tr/36 Web sayfası MEVCUT... [alax@alax script]$
Gördüğünüz gibi script sorunsuz olarak çalıştı. Bu komutlar ile, ilgili Web sayfasının olup olmadığını kontrol edebilirsiniz. Web sayfası adresini "www.linux.web.tr/13" yada "http://www.linux.web.tr/13" şeklinde kullanabilirsiniz. Lütfen komutların nerede nasıl çalıştığına dikkat ediniz. Neden "while" döngüsünü kullandığımızı anlamış olmalısınız.