Avere applicazioni e dispositivi che devono registrare, inviare e ricevere dati nel mondo esterno è fondamentale. Pertanto, avere uno strumento che ti consente di monitorare quando la rete scende può aiutarti a risolvere la rete o interrompere le applicazioni prima di inviare un mucchio di errori di registro.
Nel tutorial di oggi, creeremo un semplice monitor di rete che monitora continuamente la tua connettività Internet inviando richieste di ping a una risorsa esterna. Lo script che creeremo deve anche mantenere i registri di quando Internet è inattivo e la durata dei tempi di inattività:
Requisiti del progetto
Per questo progetto, avremo solo bisogno di:
Logica del progetto
Prima di immergerci nella parte di codifica, discutiamo e comprendiamo cosa stiamo cercando di ottenere:
Cos'è la rete su e tempo di inattività?
Quando parliamo di tempo di rete e di inattività, intendiamo il periodo in cui la connessione di rete è del tutto non disponibile e, quindi, non possiamo comunicare con dispositivi al di fuori della nostra rete. Più a lungo Internet non è disponibile, più tempo di inattività.
Come determinare i tempi di inattività
Ora che sappiamo cos'è i tempi di inattività di Internet, potresti chiederti: "Come possiamo determinarlo?"
Senza complicare il nostro codice, possiamo andare con il ping. Un ping è un metodo in cui ping continuamente un server affidabile, forse cloudflare o Google DNS, e quindi aspettiamo una risposta.
Se eseguiamo il ping del server e non c'è risposta, notiamo che tempo specifico e continuiamo a eseguire il ping fino a quando non riceviamo un ping e notiamo il tempo.
Avendo la differenza di tempo, possiamo notare quando Internet è sceso e per quanto tempo.
Dobbiamo anche stare attenti quando pingiamo un singolo server perché possiamo avere il ping erroneamente come un attacco DDoS, il che potrebbe far sì che il nostro indirizzo IP venga bloccato, il che produrrebbe risultati negativi.
Ecco un diagramma di flusso che spiega questo concetto:
Parlare è economico; Ora immergiamoti nel codice che mostra come implementare questa logica:
Ora mostrami il codice
Come al solito, a Python, iniziamo importando le biblioteche richieste. Successivamente, creiamo un file di registro nella directory di lavoro corrente.
Utilizziamo la libreria Socket per inviare una richiesta a un indirizzo IP esterno nella prima funzione. Per questo esempio, utilizziamo l'indirizzo DNS pubblico di Cloudflare, che ha un tempo di up -upt molto elevato. Passiamo anche la porta e, poiché è un server DNS, usiamo la porta 53.
Verifichiamo quindi di avere accesso alla directory dei file di registro e smettere se non abbiamo accesso.
Il prossimo passo è calcolare il tempo in cui la connessione di rete è inattiva. Infine, avvolgiamo l'intera funzionalità in un ciclo, come mostrato nel codice seguente.
Società di importazioneSe esegui questo script, otterrai un output simile a quello mostrato di seguito:
Conclusione
Utilizzando lo script sopra, possiamo monitorare quando la connessione di rete viene persa e registrarla costantemente fino a quando non è disponibile. Questo semplice script è aperto a miglioramenti. Sentiti libero di regolare il codice per soddisfare le tue esigenze ed espanderlo su di esso.