21 Ağustos 2010 Cumartesi

Pardus 2010 Yaz Stajı 15. Gün

PTSP installer projesinde, paketlerin kurulu olup olmadığını kontrol ettikten sonra sıradaki iş olarak "kdmrc" dosyasını güncellemeyi yaptım.

Bunu yaparken ilk başta aklıma ConfigParser ile o dosyayı okuyup, gerekli değişikliği de set() fonksiyonu ile sağlamaktı. Fakat bu komut tam olarak istediğim işi yapmıyor. Ben, verdiğim parametrelere uyan değişkeni dosyanın içinde bulup değiştireceğini düşünüyordum fakat yanılmışım.

Bununla ilgili araştırmaya devam ettim. Sonuç olarak, Gökçen'in YALI için yazmış olduğu kdmrc düzenleme fonksiyonunu kullandım. Tam olarak işimi görüyor bu fonksiyon. Bu fonksiyon, YALI'nın kaynak kodundaki users.py betiğinin içindeki setKey fonksiyonu.

Bunu da hallettikten sonra sıradaki iş olarak servisleri başlatmayı yazmaya başladım. Bunun için ÇOMAR API'si kullanacağımı biliyordum.

ÇOMAR API'si ayrıca bana ağ profilinde de lazım olacaktı. Temel olarak bunu kullanabilmek için:

link = comar.Link()

satırını ekledikten sonra,

link.System.Service["servisadi"]

şeklinde erişebiliyordum. info() ile gerekli bilgilere erişiyordum, bununla çalışıp çalışmadığını kontrol edip eğer çalışıyorsa stop() ile durdurup sonra da start() ile başlatıyordum.

Yani:

link.System.Service["dhcp"].info()[2].find("on") veya .find("started") ile çalışıp çalışmadığını kontrol ediyor. Eğer çalışıyorsa:

link.System.Service["dhcp"].stop() ve sonra da

link.System.Service["dhcp"].start() satırlarını ekleyerek, servis başlatma fonksiyonunu tamamlıyorum. Tabi ki de bu servis işlemlerini bir try-except bloğu içerisinde yapıyorum ki herhangi bir servis başlatılamadığı zaman onunla ilgili uyarı verdirip betiği sonlandırabileyim.

Bunu da tamamladıktan sonra sırada ağ profili oluşturma var. Bu sefer de yine ÇOMAR API'sini kullanacağım.

Henüz bunu bitirmedim ama uygularken MÜDÜR'ün network.py adlı betiğinden ve iptables paketinin firewall.py betiğinden de yararlanıyorum.

Şimdilik bütün ağ aygıtlarını listeleyip (kablosuz ağ aygıtları şimdilik desteklenmediği için onları listelemiyorum) o aygıtı seçtirebiliyorum. Sıradaki iş ise o aygıt üzerinde var olan profilleri listelemek olacak.

Bir de servisleri ve gerekli paketleri en yukarıya bir listede tutmamın bana büyük faydası oldu. Öncelikle "for x in y" şeklinde hepsini sırayla gezebiliyorum, bu kolaylığı sağladı hem de ilerde bir gün bir paket ekleneceği zaman en yukarıya sadece eklemek yeterli olacak. Tek tek nerede bakıyor buna diye aramaya gerek olmayacak.

Hiç yorum yok: