IRC ve mIRC Kullanıcılarının Buluşma Noktası
  zurna net

  IRC ve mIRC Kullanıcılarının Buluşma Noktası Webmaster Web Uygulamaları PHP

Forum tutkunlarının tek adresi Türkiye Sohbet Odaları Sohbetteyiz herkes burda

ayna chat muhabbetbayilik veren firmalar

Şeker Shell  Sohbet



Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 17 Ağustos 2012, 12:15   #1
Çevrimdışı
PHP ile Kabuk Betikleri Yazmak


-- Sponsor Baglantı --


-ALINTIDIR-

Web konusu ile pek ilgili olmasa da bu konuyu belgeye dahil etmeyi uygun gördüm. Bir zamanlar kabuk betikleri konusu ile bayağı ilgilenmeyi istemiştim ama bir türlü tam olarak kendimi veremedim. Daha sonra PHP ile de kabuk betikleri yazılabildiğini öğrendiğim zaman çok sevinmiştim. Benim gibi bu konuya ilgi duyan bir okuyucum varsa belgenin bu kısmının faydalı bir kaynak olacağını tahmin ediyorum.
Kabuk betikleri deyimi Unix veya türevi bir işletim sistemi kullanmamış okuyuculara biraz yabancı gelecektir. Kabuk betiklerinin yazım kuralları ve örneklerine geçmeden önce konuya yabancı olan okuyucular için kısa bir açıklama yapayım.
Unix altında kullanılan kabuk betikleri çoğunlukla sh, bash ya da csh denen kabuk programları üzerinde çalışır. Her kabuğun kendine özgü bir programlama dili vardır. PHP ile kabuk betiklerinin yazarken normal PHP komutlarından başka bir şey kullanmıyoruz. İşin güzel kısmı da bu
Bu forumdaki linkleri ve resimleri görebilmek için en az 20 mesajınız olması gerekir.

Bir kabuk betiği MS-Dos’daki .bat dosyalarına benzetilebilir. Bu dosyalar kendi içerisinde yazılı olan komutları sıra ile işleten dosyalardır. Aşağıdaki betik bir iş yapmasa bile sıra ile komut işletimine güzel bir örnektir.
Bu komutları Unix ya da türevi bir sistemde bir metin dosyasına yazıp chmod +x betik_adı komutunu verdikten sonra ./betik_adı komutu ile çalıştırın.
Windows'da ise bir PHP kabuk betiğini c:\php\php.exe -q betik_adi gibi bir komut ile bir DOS penceresinden çalıştırabilirsiniz.
mkdir dizin
cd dizin
pwd > dosya_yolu
cd ..

İşte bir kabuk betiği yukarıdaki komutları sanki siz sırası ile girmişsiniz gibi işleten dosyadır.
Fakat PHP (sh, bash, csh ve perl) ile yazılan betiklerin içerisinde mantıksal ifadeler ve döngüler kullanmamız mümkündür. Kullandığınız bu döngüler sayesinde betiğinizin değişik durumlarda istediğiniz gibi dallanmasını sağlayabilirsiniz.
Aşağıdaki betik örneklerinden ilki çalıştırıldığı dizindeki dosyaların uzantısını değiştirmek için kullanılıyor. Kullanımı
$ cevir htm html
şeklindedir. Bu komut bulunduğumuz dizinde uzantısı htm olan dosyaların uzantılarını html olarak değiştirmektedir.
İkinci örneğimde ise betiğe komut satırından parametre olarak girilen kullanıcı adı ile ilgili bilgiler /etc/passwd dosyasından okunup ekrana basılmaktadır.
#!/usr/bin/php -q
PHP- Kodu:
<?
# Bu dosyayi cevir adi ile kaydedin
###############################
#   PHP UNIX Dosya Uzantisi   #
#     Degistirme Betigi       #
#      Fehmi Noyan ISI        #
###############################
if($argc != 3) {
  echo 
"Parametre Hatasi!\n";
  echo 
"Kullanim:\n";
  echo 
"   cevir [degisecek_uzanti] [yeni_uzanti]\n";
}
  else
{
  
$dizin_ac opendir("./");
  
$i=0;

  while(
$dosya readdir($dizin_ac)) {

    if (
is_file($dosya) and strrpos($dosya".")) {
      
$dosya_adi explode("."$dosya);
      
$argnum count($dosya_adi) - 1;

      if (
$dosya_adi[$argnum] == $argv[1]) {
        
$dosya_adi[$argnum] = $argv[2];
        
$dosya_adi implode("."$dosya_adi);

        if (
rename($dosya$dosya_adi)) $i++;
      }
    }
  }
  echo 
"cevir: $i dosyanin uzantisi $argv[2] olarak degistirildi.\n";
}
?>
#!/usr/bin/php -q

PHP- Kodu:
<?php
# Bu dosyayi user adi ile kaydedin
###############################
# PHP UNIX Kullanici Sorgusu  #
#      Fehmi Noyan ISI        #
###############################
if ($argc != 2) {
  echo 
"Parametre Hatasi!\n\n";
  echo 
"Kullanim:\n";
  echo 
"         user [kullanici adi]\n";

} else {

  
$satirlar file("/etc/passwd");
  foreach (
$satirlar as $satir) {
    
$pwd_user_array = (explode(":"$satir));
    if (
$pwd_user_array[0] == $argv[1]) {
      
$kullanici_adi $pwd_user_array[0];
      
$isim $pwd_user_array[4];
      
$kabuk $pwd_user_array[6];
      
$dizin $pwd_user_array[5];
    }
  }

  if (
$kullanici_adi != $argv[1]) {
    echo 
" user: $argv[1] kullanicisi sistemde kayitli degil!\n";

  } else {
    echo 
" USER - Linux Kullanici Sorgusu -\n";
    echo 
" VER1.0\n\n";
    echo 
"Kullanici adi: $kullanici_adi\n";
    echo 
"         isim: $isim\n";
    echo 
"        dizin: $dizin\n";
    echo 
"        kabuk: $kabuk\n";
  }
}
?>
Bu örneklerde normal PHP betiklerimizin dışında kullandığımız iki tane değişken var. argc ve argv[] değişkenleri. argc değişkeni betiğe komut satırından girilen parametre sayısını veren tamsayı değişkeni ve argv[] değişkeni ise bu parametrelerin kendilerini tutan dizi değişkeni. (argv[0] betiğinin kendi adıdır).
Bir de iki dosyanında en başında kullandığımız #!/usr/bin/php -q ifadesi var. Bu ifade bu dosyada yazılı olan komutların sistemde kurulu olan PHP yorumlayıcısı tarafından yorumlanacağını anlatır.
-ALINTIDIR-

Web konusu ile pek ilgili olmasa da bu konuyu belgeye dahil etmeyi uygun gördüm. Bir zamanlar kabuk betikleri konusu ile bayağı ilgilenmeyi istemiştim ama bir türlü tam olarak kendimi veremedim. Daha sonra PHP ile de kabuk betikleri yazılabildiğini öğrendiğim zaman çok sevinmiştim. Benim gibi bu konuya ilgi duyan bir okuyucum varsa belgenin bu kısmının faydalı bir kaynak olacağını tahmin ediyorum.
Kabuk betikleri deyimi Unix veya türevi bir işletim sistemi kullanmamış okuyuculara biraz yabancı gelecektir. Kabuk betiklerinin yazım kuralları ve örneklerine geçmeden önce konuya yabancı olan okuyucular için kısa bir açıklama yapayım.
Unix altında kullanılan kabuk betikleri çoğunlukla sh, bash ya da csh denen kabuk programları üzerinde çalışır. Her kabuğun kendine özgü bir programlama dili vardır. PHP ile kabuk betiklerinin yazarken normal PHP komutlarından başka bir şey kullanmıyoruz. İşin güzel kısmı da bu
Bu forumdaki linkleri ve resimleri görebilmek için en az 20 mesajınız olması gerekir.

Bir kabuk betiği MS-Dos’daki .bat dosyalarına benzetilebilir. Bu dosyalar kendi içerisinde yazılı olan komutları sıra ile işleten dosyalardır. Aşağıdaki betik bir iş yapmasa bile sıra ile komut işletimine güzel bir örnektir.
Bu komutları Unix ya da türevi bir sistemde bir metin dosyasına yazıp chmod +x betik_adı komutunu verdikten sonra ./betik_adı komutu ile çalıştırın.
Windows'da ise bir PHP kabuk betiğini c:\php\php.exe -q betik_adi gibi bir komut ile bir DOS penceresinden çalıştırabilirsiniz.
mkdir dizin
cd dizin
pwd > dosya_yolu
cd ..

İşte bir kabuk betiği yukarıdaki komutları sanki siz sırası ile girmişsiniz gibi işleten dosyadır.
Fakat PHP (sh, bash, csh ve perl) ile yazılan betiklerin içerisinde mantıksal ifadeler ve döngüler kullanmamız mümkündür. Kullandığınız bu döngüler sayesinde betiğinizin değişik durumlarda istediğiniz gibi dallanmasını sağlayabilirsiniz.
Aşağıdaki betik örneklerinden ilki çalıştırıldığı dizindeki dosyaların uzantısını değiştirmek için kullanılıyor. Kullanımı
$ cevir htm html
şeklindedir. Bu komut bulunduğumuz dizinde uzantısı htm olan dosyaların uzantılarını html olarak değiştirmektedir.
İkinci örneğimde ise betiğe komut satırından parametre olarak girilen kullanıcı adı ile ilgili bilgiler /etc/passwd dosyasından okunup ekrana basılmaktadır.
#!/usr/bin/php -q
PHP- Kodu:
<?
# Bu dosyayi cevir adi ile kaydedin
###############################
#   PHP UNIX Dosya Uzantisi   #
#     Degistirme Betigi       #
#      Fehmi Noyan ISI        #
###############################
if($argc != 3) {
  echo 
"Parametre Hatasi!\n";
  echo 
"Kullanim:\n";
  echo 
"   cevir [degisecek_uzanti] [yeni_uzanti]\n";
}
  else
{
  
$dizin_ac opendir("./");
  
$i=0;

  while(
$dosya readdir($dizin_ac)) {

    if (
is_file($dosya) and strrpos($dosya".")) {
      
$dosya_adi explode("."$dosya);
      
$argnum count($dosya_adi) - 1;

      if (
$dosya_adi[$argnum] == $argv[1]) {
        
$dosya_adi[$argnum] = $argv[2];
        
$dosya_adi implode("."$dosya_adi);

        if (
rename($dosya$dosya_adi)) $i++;
      }
    }
  }
  echo 
"cevir: $i dosyanin uzantisi $argv[2] olarak degistirildi.\n";
}
?>
#!/usr/bin/php -q

PHP- Kodu:
<?php
# Bu dosyayi user adi ile kaydedin
###############################
# PHP UNIX Kullanici Sorgusu  #
#      Fehmi Noyan ISI        #
###############################
if ($argc != 2) {
  echo 
"Parametre Hatasi!\n\n";
  echo 
"Kullanim:\n";
  echo 
"         user [kullanici adi]\n";

} else {

  
$satirlar file("/etc/passwd");
  foreach (
$satirlar as $satir) {
    
$pwd_user_array = (explode(":"$satir));
    if (
$pwd_user_array[0] == $argv[1]) {
      
$kullanici_adi $pwd_user_array[0];
      
$isim $pwd_user_array[4];
      
$kabuk $pwd_user_array[6];
      
$dizin $pwd_user_array[5];
    }
  }

  if (
$kullanici_adi != $argv[1]) {
    echo 
" user: $argv[1] kullanicisi sistemde kayitli degil!\n";

  } else {
    echo 
" USER - Linux Kullanici Sorgusu -\n";
    echo 
" VER1.0\n\n";
    echo 
"Kullanici adi: $kullanici_adi\n";
    echo 
"         isim: $isim\n";
    echo 
"        dizin: $dizin\n";
    echo 
"        kabuk: $kabuk\n";
  }
}
?>
Bu örneklerde normal PHP betiklerimizin dışında kullandığımız iki tane değişken var. argc ve argv[] değişkenleri. argc değişkeni betiğe komut satırından girilen parametre sayısını veren tamsayı değişkeni ve argv[] değişkeni ise bu parametrelerin kendilerini tutan dizi değişkeni. (argv[0] betiğinin kendi adıdır).
Bir de iki dosyanında en başında kullandığımız #!/usr/bin/php -q ifadesi var. Bu ifade bu dosyada yazılı olan komutların sistemde kurulu olan PHP yorumlayıcısı tarafından yorumlanacağını anlatır.
__________________
Forumda sormakistedikleriniziaçık ve net bir şekilde ifade ettikten sonra etiketleyin yanıtlarım.Ö.M ile soracağınız soruları yanıtlayamacağım.

Konu YazılımMimarı tarafından (17 Ağustos 2012 Saat 14:29 ) değiştirilmiştir.
  Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
Cevapla

Etiketler
betikleri, ile, kabuk, php, yazmak

Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık




diyarbakır escort bursa escort konya escort gaziantep escort bodrum escort