Python

Script Python untuk Memantau Koneksi Jaringan

Script Python untuk Memantau Koneksi Jaringan
Kebutuhan agar perangkat kita selalu terhubung ke internet menjadi lebih dari kebutuhan dasar daripada hak istimewa tambahan.

Memiliki aplikasi dan perangkat yang perlu mencatat, mengirim, dan menerima data ke dunia luar sangat penting. Jadi, memiliki alat yang memungkinkan Anda untuk memantau ketika jaringan Anda mati dapat membantu Anda memecahkan masalah jaringan atau menghentikan aplikasi sebelum mengirim banyak kesalahan log.

Dalam tutorial hari ini, kami akan membuat monitor jaringan sederhana yang terus memantau konektivitas internet Anda dengan mengirimkan permintaan ping ke sumber daya eksternal. Script yang akan kita buat juga akan menyimpan log saat internet mati dan durasi downtime:

Persyaratan Proyek

Untuk proyek ini, kita hanya perlu:

Logika Proyek

Sebelum kita masuk ke bagian pengkodean, mari kita bahas dan pahami apa yang ingin kita capai:

Apa itu Network Up dan Downtime?

Ketika kita berbicara tentang jaringan naik dan turun, yang kita maksud adalah periode di mana koneksi jaringan sama sekali tidak tersedia, dan dengan demikian, kita tidak dapat berkomunikasi dengan perangkat di luar jaringan kita. Semakin lama internet tidak tersedia, semakin lama downtime.

Cara Menentukan Waktu Henti

Sekarang setelah kita mengetahui apa itu downtime internet, Anda mungkin bertanya-tanya, “bagaimana cara menentukannya?”

Tanpa memperumit kode kita, kita bisa menggunakan ping. Ping adalah metode di mana kami terus melakukan ping ke server yang andal - mungkin Cloudflare atau Google DNS - dan kemudian menunggu tanggapan.

Jika kami melakukan ping ke server dan tidak ada respons, kami mencatat waktu tertentu dan terus melakukan ping hingga kami menerima ping dan mencatat waktu.

Dengan perbedaan waktu, kami dapat mencatat kapan internet mati dan berapa lama.

Kita juga harus berhati-hati saat melakukan ping ke satu server karena ping dapat disalahartikan sebagai serangan DDoS, yang dapat menyebabkan alamat IP kita diblokir, yang akan menghasilkan hasil negatif.

Berikut diagram alir yang menjelaskan konsep ini:

Berbicara itu murah; sekarang mari selami kode yang menunjukkan cara menerapkan logika ini:

Sekarang Tunjukkan Kodenya

Seperti biasa, di Python, kita mulai dengan mengimpor perpustakaan yang diperlukan. Selanjutnya, kami membuat file log di direktori kerja saat ini.

Kami menggunakan perpustakaan soket untuk mengirim permintaan ke alamat IP eksternal di fungsi pertama. Untuk contoh ini, kami menggunakan alamat DNS publik Cloudflare, yang memiliki waktu aktif yang sangat tinggi. Kami juga melewati port, dan karena ini adalah server DNS, gunakan port 53.

Kami kemudian memverifikasi bahwa kami memiliki akses ke direktori file log dan keluar jika kami tidak memiliki akses.

Langkah selanjutnya adalah menghitung waktu koneksi jaringan terputus. Akhirnya, kami membungkus seluruh fungsionalitas dalam satu lingkaran, seperti yang ditunjukkan pada kode di bawah ini.

soket impor
waktu impor
waktu impor
impor os
sistem impor
LOG_FNAME = "jaringan.catatan"
FILE = os.jalan.bergabung.getcwd(), LOG_FNAME)
def send_ping_request(host="1.1.1.1", port=53, batas waktu=3):
mencoba:
stopkontak.setdefaulttimeout(waktu habis)
s = soket.soket (soket).AF_INET, soket.SOCK_STREAM)
s.hubungkan ((host, port))
kecuali OSError sebagai kesalahan:
kembali Salah
lain:
s.Menutup()
kembali Benar
def write_permission_check():
mencoba:
dengan open(FILE, "a") sebagai file:
lulus
kecuali OSError sebagai kesalahan:
print("Pembuatan file log gagal")
sistem.keluar()
akhirnya:
lulus
def menghitung_waktu(mulai, berhenti):
time_difference = berhenti - mulai
detik = float(str(time_difference.total_detik()))
kembali str(datetime.timedelta(detik=detik)).membagi(".")[0]
def mon_net_connection(ping_freq=2):
monitor_start_time = datetime.tanggal Waktu.sekarang()
motd = "Pemantauan koneksi jaringan dimulai pada: " + str(monitor_start_time).membagi(".")[0] + " Mengirim permintaan ping dalam " + str(ping_freq) + " detik"
cetak (motd)
dengan open(FILE, "a") sebagai file:
mengajukan.tulis("\n")
mengajukan.tulis(motd + "\n")
sementara Benar:
jika send_ping_request():
waktu.tidur(ping_frekuensi)
lain:
down_time = waktu tanggal.tanggal Waktu.sekarang()
fail_msg = "Koneksi Jaringan Tidak Tersedia di: " + str(down_time).membagi(".")[0]
cetak(fail_msg)
dengan open(FILE, "a") sebagai file:
mengajukan.tulis(fail_msg + "\n")
saya = 0
sementara tidak send_ping_request():
waktu.tidur(1)
saya += 1
jika saya >= 3600:
saya = 0
sekarang = tanggal waktu.tanggal Waktu.sekarang()
continous_message = "Ketidaktersediaan Jaringan Persisten di: " + str(sekarang).membagi(".")[0]
cetak(pesan_berkelanjutan)
dengan open(FILE, "a") sebagai file:
mengajukan.tulis(continous_message + "\n")
up_time = waktu tanggal.tanggal Waktu.sekarang()
uptime_message = "Konektivitas Jaringan Dipulihkan pada: " + str(up_time).membagi(".")[0]
down_time = hitung_waktu(down_time, up_time)
_m = "Koneksi Jaringan Tidak Tersedia untuk " + down_time
cetak (pesan_waktu aktif)
cetak(_m)
dengan open(FILE, "a") sebagai file:
mengajukan.tulis(uptime_message + "\n")
mengajukan.tulis(_m + "\n")
mon_net_koneksi()

Jika Anda menjalankan skrip ini, Anda akan mendapatkan output yang mirip dengan yang ditunjukkan di bawah ini:

Kesimpulan

Dengan menggunakan skrip di atas, kami dapat memantau ketika koneksi jaringan terputus dan terus-menerus mencatatnya hingga tersedia. Skrip sederhana ini terbuka untuk perbaikan. Jangan ragu untuk menyesuaikan kode agar sesuai dengan kebutuhan Anda dan memperluasnya.

Trackpad dan Mouse Pointer di Layar AppyMouse untuk Tablet Windows
Pengguna tablet sering melewatkan penunjuk mouse, terutama ketika mereka terbiasa menggunakan laptop. Layar sentuh Smartphone dan tablet hadir dengan ...
Tombol tengah mouse tidak berfungsi di Windows 10
Itu tombol tengah mouse membantu Anda menelusuri halaman web dan layar yang panjang dengan banyak data. Jika itu berhenti, Anda akhirnya akan mengguna...
Cara Mengganti Tombol Kiri & Kanan Mouse di PC Windows 10
Sudah menjadi hal biasa bahwa semua perangkat mouse komputer dirancang secara ergonomis untuk pengguna yang tidak kidal. Tetapi ada perangkat mouse ya...