Giter Club home page Giter Club logo

networkallarm's Introduction

NetworkAllarm

Versione : 6.14.5

logo

Indice


Introduzione

Questo progetto è un bot di monitoraggio della connessione Ethernet tramite Telegram. Il bot consente di avviare e terminare la modalità di manutenzione, monitorare lo stato delle connessioni Ethernet e inviare notifiche in caso di disconnessione o ripristino delle connessioni. La modalità manutenzione permette il blocco dell'invio delle notifiche in casi di test. Attualmente viene utilizzato per sopperire a delle problematiche legate ad un allarme domestico. Infatti il Server è collegato, insieme al Router, ad un UPS. Si è scelto di monitorare due dispositivi per evitare di mettere in allarme per un disservizio su un singolo dispositivo.


Anteprima

Pre 6.14

preview


6.14

preview


preview


Installazione

  1. Clona il repository:

    git clone https://github.com/mauromarzocca/NetworkAllarm
    cd NetworkAllarm
    
  2. Installa le dipendenze richieste:

    pip install -r requirements.txt
    

Configurazione

Modifica il file config.py allocato nella directory principale del progetto e aggiungi le seguenti configurazioni:

# config.py

# Token del bot Telegram
bot_token = 'il-tuo-token-bot'

# ID della chat Telegram dove inviare le notifiche
chat_id = 'il-tuo-chat-id'

# Lista di utenti autorizzati a usare il bot (ID Telegram)
autorizzati = [123456789, 987654321]

# Lista di dispositivi da monitorare
indirizzi_ping = [
    {"nome": "Dispositivo 1", "indirizzo": "192.168.1.1"},
    {"nome": "Dispositivo 2", "indirizzo": "192.168.1.2"},
]

Utilizzo

Avvia lo script principale per iniziare il monitoraggio:

python main.py

Il bot Telegram risponderà ai comandi /start e gestirà i pulsanti per avviare e terminare la modalità di manutenzione.


NetworkAllarm come Servizio

Per avviare NetworkAllarm all'avvio, occorre lanciare il comando:

sudo nano /etc/systemd/system/networkallarm.service

Modificare il file inserendo:

[Unit]
Description=NetworkAllarm
After=network.target

[Service]
ExecStart=/usr/bin/python3 /percorso/al/tuo/script/main.py
WorkingDirectory=/percorso/al/tuo/script
StandardOutput=inherit
StandardError=inherit
Restart=always
User=<user>

[Install]
WantedBy=multi-user.target

RICORDATI DI MODIFICARE IL PERCORSO E L'USER.

Infine lanciare i comandi:

sudo systemctl daemon-reload
sudo systemctl enable networkallarm.service
sudo systemctl start networkallarm.service

Verifica tramite il comando:

sudo systemctl status networkallarm.service

Test Svolti

I test sono stati svolti su un MacBook Pro M1 Pro con MacOS Sonoma e su un Raspberry Pi 3 con Ubuntu Server.


Futuri Upgrade

  • Creazione del container Docker.
  • Bug Fix continuo.
  • Versione Inglese.
  • Inserimento dei dispositivi da monitorare tramite bot.
  • Utilizzo di un database invece che file testuali.

Già Implementati

  • Miglioramento delle notifiche nel caso in cui tutti i dispositivi non rispondono. (Risolto nella Build 6.0.1)
  • Ping dal Bot (Introdotto nella Build 6.5 con lo Stato Connessione)
  • Maintenence Mode anche per dispositivi singoli. (Implementato nella build 6.14)

Note sulle versioni

  • Versione 4.0 - 4.5

    Novità: Inserito il file config.py per una configurazione più flessibile e centralizzata. Modifiche: Tutte le impostazioni statiche e sensibili sono state spostate nel file config.py.

  • Versione 5.10 - 6.14.5

    Novità: Suddivisione del programma in più file per migliorare la leggibilità e la manutenzione del codice.

    Modifiche:

    • main.py: Script principale per l'avvio del bot e del monitoraggio.
    • bot.py: Contiene le funzioni per la gestione del bot Telegram.
    • monitor.py: Contiene le funzioni per il monitoraggio della connessione Ethernet.
    • utils.py: Contiene funzioni di utilità generiche (invio messaggi, logging, ecc.).
    • status.py: Contiene lo stato della modalità di manutenzione.
  • Versione 6.0.1 : Bug Fix.

  • Versione 6.1 : Vengono mantenuti solo i file main e config per alcune problematiche. Inoltre, è stato aggiunto un allarme più invasivo nel caso in cui tutti i dispositivi siano disconnessi.

  • Versione 6.3 : Migliorata la gestione dei log e ottimizzazioni varie.

  • Versione 6.5 : Implementato il pulsante "Stato Connessione" che invia un messaggio sullo stato delle connessioni dei dispositivi presenti nel file config.

  • Versione 6.6 : Implementato l'invio del Log Giornaliero tramite un pulsante nel Bot.

  • Versione 6.8 : Migliorata la visualizazzione del Bot

  • Versione 6.9 : Bug Fix e impostata la cancellazione automatica dei messaggi dopo sette giorni.

  • Versione 6.9.1 : Bug Fix.

  • Versione 6.9.2 : Ottimizzazione del codice.

  • Versione 6.10 : Implementazione dell'evento "Inizio Giornata"

  • Versione 6.11 : Eliminazione di codice ridondante.

  • Versione 6.12 : Implementata la possibilità di configurare il path di salvataggio nel file config invece che nel main.

  • Versione 6.12.1 : Bug Fix

  • Versione 6.13 : Migliorato il codice, in particolare se nel log è presente solo la stringa "Avvio dello Script" e "Inizio giornata", verrà inviato solo "Nessun evento da segnalare".

  • Versione 6.14 : Implementata la funzionalità "Maintenence" che permette di mettere in manutenzione il dispositivo singolo. Viene gestita tramite bottoni.

  • Versione 6.14.1 : Migliorata "Maintenence".

  • Versione 6.14.2 : Migliorata tabulazione di "Stato connessione".

  • Versione 6.14.3 : Bug Fix

  • Versione 6.14.4 : Inserito il conteggio di "Avvio dello script".

  • Versione 6.14.5 : Miglioramento dell'invio del log.


Licenza

Questo progetto è rilasciato sotto la MIT License.


Autori

Per qualsiasi domanda o problema, non esitare a aprire un issue.


Contribuire

Se desideri contribuire a questo progetto, per favore crea un fork del repository, crea una nuova branch per le tue modifiche e invia una pull request.


networkallarm's People

Contributors

mauromarzocca avatar

Stargazers

Mariateresa Piacente avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.