Python ile whois

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 Pyhton 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

Yorumları bekliyorum

Hakan Müştak @05-2017

 

   

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

*

Captcha Kontrolü * Zaman aşımı, sayfayı tekrar yükleyin


Top