piton

Ağ Bağlantısını İzlemek için Python Komut Dosyası

Ağ Bağlantısını İzlemek için Python Komut Dosyası
Cihazlarımızın her zaman internete bağlı olması ihtiyacı, ek bir ayrıcalıktan çok temel bir ihtiyaç haline geliyor.

Günlüğe kaydetmesi, dış dünyaya veri göndermesi ve alması gereken uygulamalara ve cihazlara sahip olmak çok önemlidir. Bu nedenle, ağınızın ne zaman kapandığını izlemenize olanak tanıyan bir araca sahip olmak, bir grup günlük hatası göndermeden önce ağdaki sorunları gidermenize veya uygulamaları durdurmanıza yardımcı olabilir.

Bugünkü eğitimde, harici bir kaynağa ping istekleri göndererek internet bağlantınızı sürekli olarak izleyen basit bir ağ monitörü oluşturacağız. Oluşturacağımız script ayrıca internetin ne zaman kesildiğini ve kesinti süresinin ne kadar sürdüğünü de tutacaktır:

Proje gereksinimleri

Bu proje için sadece ihtiyacımız olacak:

Proje Mantığı

Kodlama kısmına geçmeden önce, neyi başarmaya çalıştığımızı tartışalım ve anlayalım:

Ağ Yukarı ve Kapalı Kalma Süresi Nedir??

Ağın çalışma ve kesinti süresinden bahsettiğimizde, ağ bağlantısının tamamen kullanılamadığı ve bu nedenle ağımızın dışındaki cihazlarla iletişim kuramadığımız süreyi kastediyoruz. İnternet ne kadar uzun süre kullanılamıyorsa, kesinti süresi o kadar uzun olur.

Kesinti Süresi Nasıl Belirlenir

Artık internet kesinti süresinin ne olduğunu bildiğimize göre, "bunu nasıl belirleyebiliriz?" diye merak ediyor olabilirsiniz?”

Kodumuzu karmaşıklaştırmadan ping ile gidebiliriz. Ping, güvenilir bir sunucuya (belki Cloudflare veya Google DNS) sürekli olarak ping attığımız ve ardından yanıt beklediğimiz bir yöntemdir.

Sunucuya ping atarsak ve yanıt gelmezse, o belirli zamanı not alır ve bir ping alana kadar ping işlemine devam ederiz ve saati not alırız.

Saat farkına sahip olarak, internetin ne zaman ve ne kadar süreyle kapalı olduğunu not edebiliriz.

Tek bir sunucuya ping atarken de dikkatli olmalıyız çünkü ping yanlışlıkla DDoS saldırısı olarak algılanabilir, bu da IP adresimizin bloke olmasına neden olabilir ve bu da olumsuz sonuçlar doğurabilir.

İşte bu kavramı açıklayan bir akış şeması:

Konuşma ucuz; Şimdi bu mantığın nasıl uygulanacağını gösteren koda geçelim:

Şimdi Bana Kodu Göster

Her zamanki gibi Python'da gerekli kitaplıkları içe aktararak başlıyoruz. Ardından, mevcut çalışma dizininde bir günlük dosyası oluşturuyoruz.

İlk fonksiyonda harici bir IP adresine istek göndermek için soket kitaplığını kullanıyoruz. Bu örnek için, çok yüksek bir çalışma süresine sahip olan Cloudflare genel DNS adresini kullanıyoruz. Bağlantı noktasını da geçiyoruz ve bu bir DNS sunucusu olduğu için 53 numaralı bağlantı noktasını kullanın.

Ardından, günlük dosyası dizinine erişimimiz olduğunu doğrularız ve erişimimiz yoksa çıkarız.

Bir sonraki adım, ağ bağlantısının kapalı olduğu süreyi hesaplamaktır. Son olarak, aşağıdaki kodda gösterildiği gibi tüm işlevselliği bir döngüye sarıyoruz.

ithalat soketi
ithalat zamanı
tarih saatini içe aktar
işletim sistemini içe aktar
ithalat sistemi
LOG_FNAME = "ağ.kayıt"
DOSYA = işletim sistemi.yol.katılmak.getcwd(), LOG_FNAME)
def send_ping_request(host="1.1.1.1", bağlantı noktası=53, zaman aşımı=3):
Deneyin:
priz.setdefaulttimeout(zaman aşımı)
s = soket.soket (soket.AF_INET, yuva.SOCK_STREAM)
s.bağlan ((ana bilgisayar, bağlantı noktası))
hata olarak OSError dışında:
dönüş Yanlış
Başka:
s.kapat()
dönüş True
def write_permission_check():
Deneyin:
dosya olarak open(FILE, "a") ile:
geçmek
hata olarak OSError dışında:
print("Günlük dosyası oluşturulamadı")
sistem.çıkış()
en sonunda:
geçmek
def hesapla_zaman(başlat, durdur):
time_difference = dur - başla
saniye = float(str(time_difference).toplam_saniye()))
dönüş str(tarih saat.zamandelta(saniye=saniye)).Bölünmüş(".")[0]
def mon_net_connection(ping_freq=2):
monitor_start_time = tarihsaat.tarih saat.şimdi()
motd = "Ağ bağlantısı izleme şu saatte başladı: " + str(monitor_start_time).Bölünmüş(".")[0] + " " + str(ping_freq) + " saniye içinde ping isteği gönderme"
yazdır(motd)
dosya olarak open(FILE, "a") ile:
dosya.yaz("\n")
dosya.yaz(motd + "\n")
Doğru iken:
send_ping_request() ise:
zaman.uyku(ping_freq)
Başka:
down_time = tarihsaat.tarih saat.şimdi()
fail_msg = "Ağ Bağlantısı şurada kullanılamıyor: " + str(down_time).Bölünmüş(".")[0]
yazdır(başarısız_msg)
dosya olarak open(FILE, "a") ile:
dosya.write(fail_msg + "\n")
ben = 0
send_ping_request() değilken:
zaman.uyku(1)
ben += 1
eğer ben >= 3600:
ben = 0
şimdi = tarihsaat.tarih saat.şimdi()
continous_message = "Ağ Kullanılamazlığı Kalıcı: " + str(şimdi).Bölünmüş(".")[0]
yazdır(sürekli_mesaj)
dosya olarak open(FILE, "a") ile:
dosya.write(sürekli_mesaj + "\n")
up_time = tarihsaat.tarih saat.şimdi()
uptime_message = "Ağ Bağlantısı Geri Yüklendi: " + str(up_time).Bölünmüş(".")[0]
down_time = hesapla_zaman(down_time, up_time)
_m = "Ağ Bağlantısı " + down_time için kullanılamadı
print(uptime_message)
yazdır(_m)
dosya olarak open(FILE, "a") ile:
dosya.write(uptime_message + "\n")
dosya.yaz(_m + "\n")
mon_net_connection()

Bu betiği çalıştırırsanız, aşağıda gösterilene benzer bir çıktı alırsınız:

Sonuç

Yukarıdaki betiği kullanarak, ağ bağlantısının ne zaman kesildiğini izleyebilir ve kullanılabilir olana kadar sürekli olarak günlüğe kaydedebiliriz. Bu basit komut dosyası iyileştirmelere açıktır. Kodu ihtiyaçlarınıza uyacak şekilde ayarlamaktan ve genişletmekten çekinmeyin.

Ubuntu 14'te League Of Legends Nasıl Kurulur.04
League of Legends hayranıysanız, bu, League of Legends koşusunu test etmeniz için bir fırsattır. Linux kullanıcısıysanız LOL'nin PlayOnLinux'ta destek...
En son OpenRA Strateji Oyununu Ubuntu Linux'a yükleyin
OpenRA, klasik Command & Conquer: Red Alert gibi erken Westwood oyunlarını yeniden yaratan bir Libre/Free Gerçek Zamanlı Strateji oyun motorudur. Dağı...
Gamecube & Wii için en yeni Dolphin Emulator'ı Linux'a yükleyin
Dolphin Emulator, seçtiğiniz Gamecube & Wii oyunlarını Linux Kişisel Bilgisayarlarda (PC) oynamanıza izin verir. Ücretsiz olarak kullanılabilen ve aç...