-
Notifications
You must be signed in to change notification settings - Fork 0
/
iisdalmine-check
executable file
·113 lines (102 loc) · 2.51 KB
/
iisdalmine-check
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/bin/sh
# Flusso:
# Ping a $firewall_ip
# Prova download pagine login fw
# Login
# Controllo login (controllo redirect)
# funzione help
help () {
echo "iisdalmine-check può essere richiamato con queste opzioni: "
echo " -v --verbose mosta un log dettagliato di iisdalmine-configure
-i --firewall-ip indirizzo ip del firewall a cui connettersi. Richiede un valore
-h --help mostra l'help
--no-ping disabilita il controllo del ping
-c --ping-count importa il numero di pacchetti ICMP da spedire. Richiede un valore
--no-login-check disabilita il controllo del login"
}
# verifica se getopt è quello vecchio o nuovo
getopt --test > /dev/null
if [ $? -ne 4 ]; then
echo "La versione di getopt è vecchissima, ti consiglio di aggiornare tutto!.`getopt --test`" 1>&2
exit 1
fi
SHORT=c:vhi:
LONG=verbose,help,no-ping,ping-count:,no-login-check:,firewall-ip:
ping_count=2
firewall_ip=`cat ~/.iisdalmine/firewall-ip.txt`
# Esegue lo parsing dello opzioni
PARSED=`getopt --options $SHORT --longoptions $LONG --name $0 -- $@`
# Controlla l'uscita di getopt per errori
if [ $? -ne 0 ]; then
echo "Errore nel parsing delle opzioni: $?" 1>&2
exit 1
fi
eval set -- "$PARSED"
# Imposta le variabili interessate fino a --
while true; do
case "$1" in
-v|--verbose)
verbose=yes
shift 1
;;
--no-ping)
no_ping=yes
shift 1
;;
-c|--ping-count)
ping_count="$2"
shift 2
;;
-i|--firewall-ip)
firewall_ip="$2"
shift 2
;;
--no-login-check)
no_login_check=yes
shift 1
;;
-h|--help)
help
exit 0
;;
--)
shift
break
;;
*)
echo "Errore nelle opzioni"
exit 1
;;
esac
done
if [ -n "$verbose" ]; then
echo "\$no_ping=$no_ping"
echo "\$ping_count=$ping_count"
echo "\$no_login_check=$no_login_check"
fi
# Controlla se no_ping non è definita, in tal caso esegue i controlli
if [ -z "$no_ping" ]; then
if [ -n "$verbose" ]; then
echo "esecuzione ping"
fi
ping -c $ping_count $firewall_ip > /dev/null
if [ $? -ne 0 ]; then
echo "ping fallito, sei collegato alla rete del iisdalmine?" 1>&2
exit 1
fi
fi
# Esegue il check del login
if [ -z "$no_login_check" ]; then
if [ -n "$verbose" ]; then
echo "Esecuzione check del login"
fi
# esecuzione curl
output_curl=`curl -sw "%{redirect_url}" --insecure https://www.gstatic.com/generate_204`
if [ -z "$output_curl" ]; then
echo "stato login: loggato"
exit 0
else
echo "stato login: non loggato"
exit 1
fi
fi