Birkaç hafta önce şurada paylaştığım scriptimle ilgili kullandıkça bazı eksikler baş göstermeye ve beni rahatsız etmeye başladı. Bunlardan ilki gün farkları hesaplanıyor ama bir düzende ekrana basılmıyordu. Az günden çok güne doğru olacak şekilde bir sıralama sistemi ekledim. Sonraki eksiklik ise eğer ben scripti açıp çağırmazsam yada unutursam domainlerimi sorgulamayı atlayabiliyordum. Bunun içinde bir mail fonksiyonu ekledim ve OS tarafından otomatik çalışır hale getirdim. Böylece OS scriptimi her çalıştırdığında bana bir mail ile bilgilendirme geliyor olacak. Version#2 ile birlikte kodlar artık eş zamanlı olarak github‘da da yayınlanmaktadır. Fikir, öneri ve geliştirmelerinizi bekliyor olacağım.
Github adresi : https://github.com/hmustak/TopluWhois/
# !/usr/bin/python3 # -*-coding:utf-8-*- # ------------------------------------------------------------------------------------------------------------ # myDomain - Version2 # Domain kalan gün Sorgulama & Hesaplama Scripti # Python3 - Training # # Version#1: 21.05.2017 - 23:37 # Version#2: 06.06.2017 - 21:51 # ------------------------------------------------------------------------------------------------------------ # Yazan: Hakan Mustak # Mail: hmustak@gmail.com # ------------------------------------------------------------------------------------------------------------ # Versiyon 2'de eklenenler; # - Domain kalan gün sıralama algoritması eklendi # - Yatay çizgi statik halden dinamik hale getirildi # - Açıklamalarda anlaşılmayan yerler giderildi # - Mail Fonksiyonu eklendi # ------------------------------------------------------------------------------------------------------------ # Kullanılan Modüller import whois, datetime, smtplib # Liste ve değişkenler domainler = ['hassasvalf.com', 'mustak.org', 'didemblog.com'] tarihler = [] domainBilgiler = [] bugün = datetime.datetime.today() mesaj = """From: Hakan Mustak <hmustak@gmail.com> To: Hakan Mustak <hakan@mustak.org>, Subject: Domain Kalan Günler Merhaba, Domainlerinizle ilgili günlük hatırlatmadır. Hangi domainin kaç gün sonra register edilmesi gerektiğini hatırlatmak amacıyla gönderilmiştir. """.encode('utf-8') # Mail Değişkenleri gonderici_mail = 'hmustak@gmail.com' gonderici_sifre = '' alicilar = ['hakan@mustak.org'] # 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 # Yatay Çizgi Fonksiyonumuz def yatayCizgi(say): print('-' * say) # Domain listemizi tek tek çekiyoruz for domainID in range(len(domainler)): # Tarihi tutan listemize domain tarihlerimizi yazıyoruz (Evet, daha kısa bir fonksiyonla burası atlanarakta yapılabilirdi ama fazladan bir dizi ile # birden fazla bağlantı ihtiyacı olmaksızın script çalışma süresini kısaltıyor) tarihler.append(sorgula(domainler[domainID])) # Domain sayfasından dönen veri tipi liste yada stringse, işlemimizi ona göre ayırıp yapıyoruz if (isinstance(tarihler[domainID], list)): # Veri tipi karşılaştırması için isinstance() kullanıyoruz domainBilgiler.append([domainler[domainID], tarihler[domainID][0].strftime('%d.%m.%Y'), (tarihler[domainID][0] - datetime.datetime.today()).days]) else: domainBilgiler.append([domainler[domainID], tarihler[domainID].strftime('%d.%m.%Y'), (tarihler[domainID] - datetime.datetime.today()).days]) # Tüm veriyi aldığımıza göre diziyi kendi içine sıralayarak tekrar gömelim domainBilgiler = sorted(domainBilgiler, key=lambda item: item[2]) # Başlık # Ekrana Bas print('\n {0:23} {1:14} {2:4}'.format('Domain', 'Tarih', ' Gün')) # Mail Gövdesine Ekle yatayCizgi(45) # Gelen verimizi ekrana basalım for domain in range(len(domainBilgiler)): print( ' {0:23} {1:14} {2:4}'.format(domainBilgiler[domain][0], domainBilgiler[domain][1], domainBilgiler[domain][2])) mesaj = mesaj + '\n{0} : {1} gün kaldı'.format(domainBilgiler[domain][0], domainBilgiler[domain][2]).encode('utf-8') yatayCizgi(45) server = smtplib.SMTP('smtp.gmail.com', 587) server.ehlo() server.starttls() server.ehlo() server.login(gonderici_mail, gonderici_sifre) server.sendmail(gonderici_mail, alicilar, mesaj) server.quit() print("Mail Gönderildi") # Hakan Müştak © 2017/06
SMTPLIB Modülü ile mail gönderme için;
http://emregeldegul.net/2017/04/python-smtplib-ile-e-posta-gonderme/
Not : port 587 ile auth kontrolü yapmadan gönderdiğimiz için mailinizin SPAM görülme olasılığı da var. Kendinize değil de, bir gruba atıyorsanız bu detayı gözardı etmeyin.
Bir yanıt yazın