1. Mario

    Python ile eski log dosyaları otomatik nasıl silinir?

    Eski log dosyalarını otomatik silmek için dosyaların son değiştirilme zamanını pathlib ile kontrol edip belirlediğiniz günden daha eski olanları silen bir Python betiği kullanabilirsiniz. Güvenli uygulama için önce yalnızca hangi dosyaların silineceğini listeleyin, sonuç doğruysa silme işlemini...
  2. Mario

    Python ile SSL sertifikasının ne zaman biteceği nasıl kontrol edilir?

    SSL sertifikasının bitiş tarihini Python ile kontrol etmek için hedef sunucuya TLS bağlantısı açıp, bağlantı sırasında alınan sertifikanın notAfter alanını okumak gerekir. Aşağıdaki örnek alan adını ve 443 portunu kullanır, sertifikanın geçerlilik bitişini UTC olarak gösterir ve sertifikanın...
  3. Mario

    Python ile sunucudaki bir URL’nin erişilebilir olduğu nasıl kontrol edilir?

    İlk kontrol için URL’ye HTTP isteği gönderip bağlantı zaman aşımını, oluşan hatayı ve dönen HTTP durum kodunu birlikte değerlendirin. Python’da en pratik yöntem urllib.request ile GET veya HEAD isteği yapmaktır. 200–399 aralığında bir yanıt alınması sunucunun isteğe cevap verdiğini gösterir...
  4. Mario

    Python ile sunucuya SSH bağlantısı nasıl yapılır?

    İşletim sisteminizde SSH istemcisi kuruluysa Python’dan sunucuya bağlanmanın en pratik yolu, subprocess.run() ile ssh komutunu çalıştırmaktır. Sunucu adresini, SSH kullanıcı adını ve gerekiyorsa portu veya özel anahtar dosyasını komuta ayrı argümanlar olarak verin; bağlantı başarılı olduğunda...
  5. Mario

    Python ile sunucudaki CPU ve RAM kullanımı nasıl izlenir?

    İşletim sistemi Linux ise Python ile sunucunun toplam CPU ve RAM kullanımını ek paket kurmadan /proc/stat ve /proc/meminfo dosyalarından okuyabilirsiniz. CPU yüzdesini doğru hesaplamak için iki ölçüm arasında kısa bir bekleme gerekir; RAM için toplam, kullanılabilir ve kullanılan belleği okuyup...
  6. Mario

    Python’da API’den alınan JSON verisi dosyaya nasıl kaydedilir?

    İlk paragrafta ana yanıtı, izlenecek yolu ve ulaşılabilecek sonucu doğrudan ver. API’den alınan JSON verisini dosyaya kaydetmek için HTTP yanıtını alıp JSON’a dönüştürün, ardından Python’un json.dump() işleviyle dosyaya yazın. Aşağıdaki örnek çalıştırıldığında API’den gelen veri veri.json adlı...
  7. Mario

    Python ile sunucudaki birden fazla dosya aynı anda nasıl yedeklenir?

    İşletim sisteminin süreçlerini birbirine karıştırmadan birden fazla dosyayı aynı anda yedeklemek için Python'da concurrent.futures.ThreadPoolExecutor kullanılabilir. Her dosya ayrı bir görev olarak kopyalanır; görevler tamamlandığında hangi dosyaların başarıyla yedeklendiği ve hangilerinde hata...
  8. Mario

    Python’da bir dosyanın değiştiği nasıl algılanır?

    Bir dosyanın değiştiğini algılamak için en basit yöntem, dosyanın değişiklik zamanını belirli aralıklarla kontrol edip önceki değerle karşılaştırmaktır. Python’da bunu pathlib.Path.stat().st_mtime_ns ile yapabilirsiniz. Dosya sistemi olaylarını anlık olarak dinlemek gerekiyorsa işletim sistemine...
  9. Mario

    Python ile sunucudaki bir servisin çalışıp çalışmadığı nasıl kontrol edilir?

    İşletim sistemi Linux ve servis yöneticisi olarak systemd kullanıyorsa, Python içinden systemctl is-active --quiet servis-adı komutunu çalıştırarak servisin etkin olup olmadığını kontrol edebilirsiniz. Ancak bu kontrol yalnızca servisin systemd tarafından çalışır kabul edildiğini gösterir...
  10. Mario

    Python’da büyük log dosyaları satır satır nasıl okunur?

    Büyük bir log dosyasını belleğe tamamen yüklemek yerine dosyayı open() ile açıp doğrudan for döngüsüyle gezebilirsiniz. Python bu yöntemde dosyayı satır satır okur; böylece dosyanın tamamı RAM'e alınmaz. Her satırda aradığınız metni, tarih bilgisini veya hata seviyesini kontrol edip yalnız...
  11. Mario

    Python ile sunucuda disk alanı azalınca nasıl uyarı verilir?

    Disk alanı azaldığında uyarı vermek için Python’da shutil.disk_usage() ile ilgili disk bölümünün toplam, kullanılan ve boş alanını ölçüp eşik değerle karşılaştırabilirsiniz. Boş alan belirlediğiniz sınırın altına indiğinde e-posta gönderen veya sunucu izleme sistemine bildirim ileten bu scripti...
  12. Mario

    Python scriptinin aynı anda birden fazla kez çalışması nasıl engellenir?

    Aynı Python scriptinin aynı anda birden fazla örneğinin çalışmasını engellemek için scriptin başlangıcında bir kilit dosyası oluşturup işlem bitene kadar kilidi tutun. İkinci örnek kilidi alamazsa hemen çıkmalı veya belirlediğiniz süre boyunca beklemelidir. En pratik ve taşınabilir yöntemlerden...
  13. Mario

    Python’da başarısız olan API isteği otomatik nasıl yeniden denenir?

    Başarısız bir API isteğini otomatik yeniden denemek için isteği bir döngüye almak, yalnızca geçici hatalarda tekrar denemek ve her deneme arasına artan bekleme süresi koymak gerekir. Aşağıdaki örnekte ağ hataları ile 408, 429 ve 5xx yanıtları yeniden denenir; 4xx gibi kalıcı olduğu düşünülen...
  14. Mario

    Python’da belirli aralıklarla çalışan zamanlanmış görev nasıl yazılır?

    İşlemi belirli bir süre arayla tekrarlamak için en basit yol, görevi bir fonksiyona koyup sonsuz döngü içinde çalıştırmak ve her çalışmadan sonra time.sleep() ile beklemektir. Görevin başlangıç zamanlarını daha düzenli planlamak veya birden fazla işi yönetmek istiyorsanız sched.scheduler...
  15. Mario

    Python’da bir klasördeki dosyalar uzantılarına göre nasıl ayrılır?

    İçinde farklı türde dosyalar bulunan bir klasörü uzantılarına göre ayırmak için Python’da pathlib modülünü kullanabilirsiniz. Aşağıdaki kod, kaynak klasördeki dosyaları tarar, uzantı adında klasörler oluşturur ve dosyaları ilgili klasöre taşır. Örneğin rapor.pdf dosyası pdf, fotoğraf.jpg dosyası...
  16. Mario

    Python ile sunucudaki eski log dosyaları otomatik nasıl silinir?

    İşlem için Python’un pathlib modülünü kullanarak log klasöründeki dosyaların son değiştirilme tarihini kontrol edebilir, belirlediğiniz süreden eski olanları önce deneme modunda listeleyip ardından silebilirsiniz. Aşağıdaki örnek, /var/log/myapp klasöründeki .log uzantılı ve 30 günden eski...
  17. Mario

    Python scripti çalışırken sunucuya e-posta bildirimi nasıl gönderilir?

    Python scriptinden e-posta bildirimi göndermek için standart kütüphanedeki email ve smtplib modüllerini kullanabilirsiniz. Önce e-posta hizmetinizin SMTP sunucu adresini, bağlantı portunu, kullanıcı adını ve parola veya uygulama parolasını belirleyin; ardından bu bilgileri doğrudan kod içine...
  18. Mario

    Python’da bir klasörün boyutu nasıl hesaplanır?

    İşletim sistemindeki bir klasörün toplam boyutunu hesaplamak için klasörün içindeki dosyaları alt klasörler de dâhil olmak üzere dolaşıp her dosyanın bayt cinsinden boyutunu toplamanız gerekir. Python’da bunun için en pratik yöntem os.walk() kullanmaktır. Aşağıdaki kod, belirtilen klasördeki tüm...
  19. Mario

    Python scripti internet bağlantısı kesilince yeniden nasıl başlatılır?

    İnternet bağlantısı kesildiğinde Python scriptini baştan başlatmak yerine genellikle işlemi bağlantı geri gelene kadar bekletip yeniden denetmek daha doğrudur. Bunun için ağ isteğini try/except içinde çalıştırın, bağlantı hatasında artan bekleme süresi uygulayın ve bağlantı yeniden kurulduğunda...
  20. Mario

    Python’da API’den JSON verisi nasıl alınır?

    Python’da bir API’den JSON verisi almak için önce HTTP isteği gönderilir, ardından sunucunun döndürdüğü yanıt JSON olarak ayrıştırılır. En pratik yöntem, Python’la birlikte gelmeyen ancak yaygın kullanılan requests kütüphanesinden yararlanmaktır. İstek başarılıysa JSON nesnesi sözlük veya liste...