-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathopenwrt-ids-ips-debug.sh
82 lines (72 loc) · 2.82 KB
/
openwrt-ids-ips-debug.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/bin/bash
# Percorso al file Python (ad esempio /home/udm-root/OpenWRT-IDS-IPS/main.py)
SERVICE_SCRIPT="/home/udm-root/Progetti/OpenWRT-IDS-IPS/main.py"
LOG_FILE="/tmp/openwrt-ids-ips.log" # File di log
SERVICE_PID_FILE="/tmp/openwrt-ids-ips.pid" # File per memorizzare il PID
# Imposta un'interfaccia di rete predefinita (modifica se necessario)
DEFAULT_INTERFACE="eth0"
# Funzione per gestire gli argomenti passati allo script
get_interface() {
# Se l'utente ha passato un argomento per -i, usalo, altrimenti usa il valore di default
INTERFACE="$1"
if [ -z "$INTERFACE" ]; then
INTERFACE="$DEFAULT_INTERFACE"
fi
echo "$INTERFACE"
}
start_service() {
# Ottieni l'interfaccia da utilizzare (di default eth0 se non specificato)
INTERFACE=$(get_interface "$2")
if [ -f "$SERVICE_PID_FILE" ]; then
PID=$(cat "$SERVICE_PID_FILE")
if ps -p $PID > /dev/null; then
echo "[INFO] Il servizio è già in esecuzione con PID $PID."
return 0
else
echo "[INFO] PID trovato, ma il processo non è in esecuzione. Rimuovendo il PID obsoleto."
rm -f "$SERVICE_PID_FILE"
fi
fi
# Verifica che non ci siano processi duplicati prima di avviare
if ps aux | grep "$SERVICE_SCRIPT" | grep -v "grep" > /dev/null; then
echo "[ERROR] Il servizio è già in esecuzione."
return 1
fi
echo "Avvio del servizio IDS/IPS sull'interfaccia $INTERFACE..."
# Avvia il servizio come demone in background e salva il PID nel file
sudo python3 "$SERVICE_SCRIPT" -i "$INTERFACE" start >> "$LOG_FILE" 2>&1 &
echo $! > "$SERVICE_PID_FILE" # Salva il PID del processo
echo "Servizio avviato in background. I log sono disponibili in $LOG_FILE."
echo "Se vuoi seguire il traffico di rete digita tail -f /tmp/openwrt-ids-ips.log"
}
stop_service() {
if [ -f "$SERVICE_PID_FILE" ]; then
PID=$(cat "$SERVICE_PID_FILE")
if ps -p $PID > /dev/null; then
echo "Fermando il servizio con PID $PID..."
sudo kill -SIGTERM "$PID"
rm -f "$SERVICE_PID_FILE" # Rimuove il file PID
echo "Servizio fermato."
else
echo "[ERROR] Il processo con PID $PID non è in esecuzione."
rm -f "$SERVICE_PID_FILE" # Rimuove il PID obsoleto
fi
else
echo "[INFO] Nessun PID trovato nel file. Esecuzione del comando pkill per terminare il servizio."
fi
# Uccidi tutte le istanze del servizio con il nome script specificato
sudo pkill -f "$SERVICE_SCRIPT" # Uccide tutte le istanze del processo
echo "[INFO] Tutti i processi del servizio $SERVICE_SCRIPT sono stati arrestati."
}
case "$1" in
start)
start_service "$@"
;;
stop)
stop_service
;;
*)
echo "Uso: $0 {start|stop} [interfaccia]"
exit 1
;;
esac