Bilgisayarımızdaki hdd durumunu e-posta olarak alalım

Başlatan brooqs, 06 Mart 2012 - 23:58:34

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

brooqs

Merhabalar,

Bu defada php ile bir paylaşımda bulunmak istedim.

Başlıktanda anlayacağınız gibi uçbirim komutuyla çıkan çıktıyı kesip biçtikten sonra anlaşılan bir formata çevirip e-posta yollayacağımız bir sistemi hazırladım ve kodları da buraya yazıyorum.

Eğer daha önceki yazımda ssmtp yi kurduysanız sunucunuza phpde mail fonksiyonu ile gönderdiğiniz tüm e-postalar sanki gmail hesabınıza giriş yapıp göndermişsiniz gibi olacaktır. Eğer dışarda çalışan bir 'dedicated' sunucunuz varsa ssmtp olayına bakmanıza gerek kalmadan bilgileri alabilirsiniz.

Bu yazıda kullandığım komut  "df " komutudur.

Bu komutu direk yazdığınızda sisteminize bağlanmış hdd vb bölümleri byte cinsinden gösterecektir ancak bu durum işimize yaramayacaktır. Şuan da bizim işimize yarayan anladığımız dilden bir sonuç elde etmek.

Bu işlem için se "-h" parametresiyle anlaşılabilir hale getirebiliriz.

<?php

$al 
shell_exec("df -h");
Yukarıdaki al değişkenine shell_exec ile komutumuzu işletip sonucu atıyoruz.

Daha açıklayıcı olmak için kendi makinemin "df -h" çıktısını buraya yazıyorum

tdh
@cybertron:/var/wwwdf -h
Filesystem            Size  Used Avail 
Use% Mounted on
/dev/sda1             906G   11G  850G   2% /
none                  873M  236K  873M   1% /dev
none                  879M  240K  879M   1
% /dev/shm
none                  879M  112K  879M   1
% /var/run
none                  879M     0  879M   0
% /var/lock
$bol 
explode("\n",$al);
Ardından böl değişkenine explode ile "\n" ile satırlara bölüyoruz

$bol değişkenin şuanki değeri 

/dev/sda1             906G   11G  850G   2% /

Şimdide bu satırı parçalara bölelim

$par explode("   ",$bol[1]);
Ben burda /dev/sda üzerindeki harddiskimin değerlerini istediğim için 1 nolu satırı alıyorumve par değişkenine bol array ındaki 1 nolu parçasını atıyorum.
 
Par değişkeninin içersinde bol ile satırlara böldüğümüz çıktının 3 adet boşluk ile tekrar parçalara bölünmüş hali bulunuyor.

$par2 explode("  ",$par[5]);
Buraya yazmdığım denemelerde arraydaki parçalardan 5 nolu parçada 2 adet değer vardı bende bunu tekrar explode ederek tüm parçalara ulaşmış oldum.

Artık bundan sonra arrayler içerisinden istediğiniz verileri deneyerek bulabilirsiniz"printf()" fonksiyonu ile array içersindeki değerlere göz atabilir ve hangi değeri almak istiyorsanız aşağıdaki şekilde idlerinden seçebilirsiniz.

$a "Dosya Sistemi: ".$par[0]."\n";
$b "Toplam Boyut: ".$par[4]."\n";
$c "Kullanılan Alan: ".$par2[0]."\n";
$d "Musait:  ".$par2[1]."\n";

Yukarıda ben gerekli yerlerin atamasını yaptım
$mesaj $a.$b.$c.$d;
Yukarıdada tüm malzemeleri birleştirdim
mail
("brooqs@gmail.com","HDD Durumu",$mesaj);

Yukarısıda standart mail fonksiyonu

?>



Birde kodun tamamını buraya yazayım kafanız karışmasın.

<?php

$al 
shell_exec("df -h");
$bol explode("\n",$al);
#$say = count($bol);
$par explode("   ",$bol[1]);
$say count($par);
#printf($parcala);
#cho $par[0]."\n";
#echo $say;
$par2 explode("  ",$par[5]);
$a "Dosya Sistemi: ".$par[0]."\n";
$b "Toplam Boyut: ".$par[4]."\n";
$c "Kullanılan Alan: ".$par2[0]."\n";
$d "Musait:  ".$par2[1]."\n";

$mesaj $a.$b.$c.$d;

mail("brooqs@gmail.com","HDD Durumu",$mesaj);
?>



E-posta adresime gelen e-postada aşağıda

tdh

23:01 (50 dakika önce)

Kime: bana

Dosya Sistemi: /dev/sda1
Toplam Boyut:  906G
Kullanılan Alan: 11G
Musait:  850G


Umarım faydalı olur bu * tabi ki basit bir çözüm ancak bunu devam ettirip daha farklı kısımlardan bilgi alarak dahada geliştireceğim. Şimdilik bu giriş olsun.

Herkese sorunsuz problemsiz günler dileğiyle sağlıcakla kalın.
Linux is an adventure!!!