Arquivos mensais: abril 2017

Usuários ativos do Dovecot | verifica se houve atividade nas caixas postais

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
int_="90" #valor decimal para dias
log="/tmp/usuarios_ativos_dovecot_$(date +%Y)"
log2="/tmp/usuarios_ativos_dovecot_$(date +%Y)_tmp"
 
# Localiza contas modificadas nos últimos $int_ dias (suprime valores repetidos com comando uniq)
> $log
> $log2
echo "Listando atividade nas caixas postais nos ultimos $int_ dias"
for i in $(find /mnt/data/dovecot/ -type f -mtime -$int_)
do
       echo $i | sed -e 's/\/Maildir.*//' -e 's/.*dovecot\///' | grep '@' >> $log2
#      echo $i
done
cat $log2 | uniq >> $log
echo "Resultado: $log"
 
# Marcelo Viana
# ADMG

Plugin Nagios Rede local V.1

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
#!/bin/bash
path="/etc/nagios/plugins"
file_consult="/tmp/lista.txt"
file_result="/tmp/file_result_redelocal"
datacenter="tst_marcelo"
url_file="http://nagios.mav.com.br/conf/rede_local/$datacenter/lista.txt"
ttl="3"
time_out="3"
iface_local="eth0"
 
my_ip=$(ifconfig $iface_local|grep -w inet|awk '{print $2}'|sed -e 's/addr\://g');
 
 
start(){
# Obtem lista atualizada
wget -q $url_file -O $file_consult
# limpa a lista
rm -f $file_result
 
 
while read i
do
        #pega coluna IP
        ip=$(echo -n $i | awk '{print $1}')
        host=$(echo -n $i | awk '{print $2}')
 
        # testa ip
        ping -q -c $ttl -w $time_out $ip > /dev/null 2>&1
 
        if [ $? -ne 0 ]; then
                echo -n "$ip ($host) -> Down! " >> $file_result
#                echo "Down $ip"
#        else
#                echo "OK $ip"
        fi
 
done < "$file_consult"
status
}
 
status(){
        if ! [ -e $file_result ]; then
                echo "Tudo OK por aqui!"
                exit 0
        else
                echo "$(cat $file_result)"
                exit 2
        fi
}
 
 
case $1 in
'start') start ; exit ;;
'status') status ; exit ;;
#*) echo "Sem opcoes! Sintaxe correta: ./redelocal.sh start" ; exit ;;
*) start ; exit ;;
esac
 
 
# Marcelo Viana
# AMDG

Conta quantos IPs – lista do tcpdump

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
 
#ip_publico=$(curl -s ip.infsite.org)
n=15000
#tcpdump -i any port 25 or not src $ip_publico | awk '{print $3}' >> origem_SMTP_ip
 
> short.list
sort origem_SMTP_ip | uniq -c | sort -n >> short.list
 
while read i; do
 
        ip=$(echo $i | awk '{print $2}' | cut -d. -f 1-4)
        v=$(echo $i | awk '{print $1}')
        if [ $v -ge $n ];then
                iptables -I INPUT -s $ip -j DROP
                echo "IP: $ip bloqueado! $v conexoes."
        fi
 
 done < short.list
 
# Marcelo Viana
# AMDG

Plugin para teste de login em painel específico – NAGIOS

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
#!/bin/bash
 
url=$1
user=$2
pass=$3
 
if [ -z $url ]; then
        echo "Informe URL, LOGIN e SENHA"
        echo "Exemplo:"
        echo "/usr/lib/nagios/plugins/check_login_supramail \"http://exemplo.com.br\" \"usuario\" \"senha\" "
        exit
fi
# Obtém o tempo gasto na tentativa de login
time_=$(curl -o /dev/null -s -w %{time_total}\\n "$url" -d "login=$user&password=$pass")
# Obtém o resultado do login
result_=$(curl -s "$url" -d "login=$user&password=$pass" | grep -w "OK" |wc -l)
 
# Sendo result_ maior que 1, continua Ok. Este ajusta o valor para equadrar nas opções do case abaixo.
if [ $result_ -gt 1 ]; then
        test=1
fi
 
# Casos para cada resultado
case $result_ in
 
1)
        echo "Login OK em $url - $time_ s/ms"
        exit 0
;;
0)
    echo "Erro ao testar o Login em $url - $time_ s/ms"
    exit 2
;;
*)
    echo "Erro desconhecido!"
    exit 2
;;
esac
 
# Marcelo Viana
# AMDG

Plugin para teste de Login no Sogo (webmail) – Nagios

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
#!/bin/bash
 
url=$1
user=$2
pass=$3
 
if [ -z $url ]; then
        echo "Informe URL, LOGIN e SENHA"
        echo "Exemplo:"
        echo "/usr/lib/nagios/plugins/check_login_sogo \"https://meudominio.com.br/SOGo/connect\" \"usuario\" \"senha\" "
        exit
fi
# Obtém o tempo gasto na tentativa de login
time_=$(curl -o /dev/null -sk -w %{time_total}\\n "$url" -H "Content-Type: application/json;charset=UTF-8" -d '{"userName":"'$user'","password":"'$pass'","rememberLogin":0}')
# Obtém o resultado do login
result_=$(curl -sk "$url" -H "Content-Type: application/json;charset=UTF-8" -d '{"userName":"'$user'","password":"'$pass'","rememberLogin":0}' | grep -w "grace" |wc -l)
 
# Sendo result_ maior que 1, continua Ok. Este ajusta o valor para equadrar nas opções do case abaixo.
if [ $result_ -gt 1 ]; then
        test=1
fi
 
# Casos para cada resultado
case $result_ in
 
1)
        echo "Login OK em $url - $time_ s/ms"
        exit 0
;;
0)
    echo "Erro ao testar o Login em $url - $time_ s/ms"
    exit 2
;;
*)
    echo "Erro desconhecido!"
    exit 2
;;
esac
 
# Marcelo Viana
# AMDG