Basit ama yoğun metin düzenleme vs. ihtiyaçlarım olduğu zamanlarda Python kullanmaya çalışıyorum. Birkaç gün arayla elimdeki domainlere bakıp kalan günlerini görmem gereken bir dönemdeyim. Haliyle bunu her gün tek tek whois çekerek yapmam, yazılım felsefeme ters düşüyor. Bunun için minik bir betik hazırladım ve hep yaptığım gibi notlarımı kaybetmekten ve sıklıkla aramaktan ziyade buraya ekliyorum. Yorum yada önerileriniz olursa lütfen ekleyin. Evet kaskınızı takın, başlıyoruz;
İlk olarak Python 3 kullandığımızı belirteyim. Aşağıda fonksiyonlarını anlatan manuelinin linkini de verecek olduğum whois modülünü kurmak için yapmamız gereken;
pip install python-whois
Detaylı bilgi şurada : https://bitbucket.org/richardpenman/pywhois
Kurulum ekranı şöyle;
Kodumuzun içine gereken notları aldım;
#!/usr/bin/python3 # -*-coding:utf-8-*- # Hakan Mustak # hmustak@gmail.com # Kullanılan Modüller import whois, datetime # Liste ve değişkenler domainler = ['whatsapp.com', 'dizimag2.co', 'dizibox1.com', 'onedio.com', 'getbootstrap.com', 'hassasvalf.com', 'mustak.org'] tarihler = [] bugün = datetime.datetime.today() # Fonksiyonumuz - Tek tek listedeki Domainler geliyor def sorgula(domain): # Domainlerimizin bilgilerini yüklediğimiz modülle çekiyoruz tarih = whois.whois(domain) # Domain süresi dolma tarihini geri döndürüyoruz return tarih.expiration_date #Başlık print('{0:20} {1:12} {2:4}'.format('Domain', 'Tarih', ' Gün')) #Yatay Çizgi print('-'*40) # Domain listemizi tek tek çekiyoruz for domainID in range(len(domainler)): # Tarihi tutan listemize domain tarihlerimizi yazıyoruz tarihler.append(sorgula(domainler[domainID])) # Domain sayfasından dönen veri tipi liste yada stringse, işlemimizi ona göre yapıyoruz if (isinstance(tarihler[domainID], list)): # Veri tipi karşılaştırması için isinstance() kullanıyoruz print('{0:20} {1:12} {2:4}'.format(domainler[domainID], tarihler[domainID][0].strftime('%d.%m.%Y'), (tarihler[domainID][0] - datetime.datetime.today()).days)) # format, days, isinstance gibi fonksiyonları da zaman buldukça buraya açıklamasını yazarak kaynak-not haline getireceğim else: print('{0:20} {1:12} {2:4}'.format(domainler[domainID], tarihler[domainID].strftime('%d.%m.%Y'), (tarihler[domainID] - datetime.datetime.today()).days)) #Yatay Çizgi print('-'*40)
Kodumuzun çalışma anı görüntüsü ise şöyle;
Ben ihtiyacım olan domain grubumu günlük çalıştırıyor ve takip ediyorum. İhtiyacım olan işi en temel yapan kodun basic halini paylaştım, önümüzdeki günlerde kafamdaki algoritmaya uygun, düzenli çalışıp (crontab’la) expiration_date süresine 5 gün kalanları mail atan bir forma sokacak ve github üzerinden de paylaşacağım (o enerjiyi kendimde bulursam).
Ayrıca yazıda konusu geçen ve kodda alta not aldığım format, days, isinstance gibi fonksiyonları da zaman buldukça buraya açıklamasını yazarak kaynak-not haline getireceğim.
Koda ekleme-çıkartma yapmak isterseniz Github linki;
https://github.com/hmustak/TopluWhois
Yorumları bekliyorum
Hakan Müştak @05-2017
Hocam neden github kullanmıyosun?
Haklısın, ekledim. Yazıya da ekledim, linki şöyle;
https://github.com/hmustak/TopluWhois