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