Verifica atividade VPN RACOON IPSEC – Reinicia serviço em caso de queda

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
#!/bin/bash
netA="132.1.1.0/24"
netB="192.168.2.0/24"
iface="eth1"
ip_test="192.168.2.1"
log="/var/log/syslog"
data_=$(date +%b\ %d\ %X)
 
ping -qc4 -I $iface $ip_test > /dev/null
if [ $? == 0 ]
then
        echo OK
        echo "$data_ racoon - VPN OK. comunicando com host $ip_test" >> $log
else
        echo "$data_ racoon - Nao foi possivel comunicar com o host $ip_test da VPN" >> $log
        echo "$data_ racoon - Reiniciando o servico..."
        /etc/init.d/racoon restart
        /etc/init.d/setkey restart
fi
 
iptables-save |grep "A FORWARD -s $netA -d $netB -j ACCEPT"  > /dev/null
if [ $? == 0 ]
then
        echo OK
else
        iptables -I FORWARD -s $netA -d $netB -j ACCEPT  > /dev/null
        iptables -I INPUT -s $netB -p icmp -j ACCEPT  > /dev/null
fi
 
iptables-save |grep "A FORWARD -s $netB -d $netA -j ACCEPT"  > /dev/null
if [ $? == 0 ]
then
        echo OK
else
        iptables -I FORWARD -s $netB -d $netA -j ACCEPT  > /dev/null
fi

Compara nomes (nome, emails e etc.) entre duas listas

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
 
#!/bin/bash
lista1="/tmp/ldap_users.txt"
lista2="/tmp/tmp_users.txt"
existe=0
> $lista1
> $lista2
 
# base dos dados a serem analisados
/opt/mav5/bin/sqlite3 /opt/base1.db "select users1 from tabela1" > $lista1
/opt/mav5/bin/sqlite3 /opt/base2.db "select users2 from tabela2" > $lista2
 
#verificacao
while read i
do
        while read e
        do
                if [ "$i" == "$e" ];then
                        echo "$e contém na lista $lista2"
                        existe=1
                fi
        done < $lista1
done < $lista2
#
#
if [ $existe -eq 0 ];then
        echo "Não existem dados iguais entre os arquivos $lista1 e $lista2"
fi

Extrai dados de XML e gera XLS com dados extraídos

Parte 1:
xml_convert_xls.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
#!/bin/bash 
# nomesaida="lista_excel$(date +%Y-%m-%d).xls"
# bloco_tmp="/tmp/tmp_convert.txt"
n=0
log="./tmp/"
rm -f $log/*
#> $bloco_tmp
 
 
echo "Separando blocos referenciados pela tag '</entity>'"
while read i
do
 
echo $i | grep "</entity>" > /dev/null
if [ $? -ne 0 ]; then
        nome=$(echo "$i" | grep "<name>" | sed 's/<name>//g' | sed 's/<\/name>//g' | grep @)
        redirecionamento=$(echo "$i" | grep "<redirect>" | sed 's/<redirect>//g' |sed 's/<\/redirect>//g' | grep @)
        quota=$(echo "$i" | grep "<quota>" | sed 's/<quota>//g' | sed 's/<\/quota>//g')
 
                if [ ! -z "$nome" ] || [ ! -z "$redirecionamento" ] || [ ! -z "$quota" ] ;then
 
                        if [ ! -z $nome ];then
                                echo "_nome: $nome" >> $log/bloco_tmp.$n
                        fi
                        if [ ! -z $redirecionamento ];then
                                echo "_redirect: $redirecionamento" >> $log/bloco_tmp.$n
                        fi
                        if [ ! -z $quota ];then
                                echo "_quota: $quota" >> $log/bloco_tmp.$n
                        fi
                fi
 
else
        echo $((n++))
fi
 
done < alliar.csv
 
echo "Blocos separados e criados em ./tmp/"
echo "Rode o comando ./xml_convert_xls-parte2.sh para converter os blocos em um único arquivo xls"
 
# Marcelo Viana
# AMDG

Parte 2:
xml_convert_xls-parte2.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
#!/bin/bash
nomesaida="lista_excel$(date +%Y-%m-%d).xls"
> $nomesaida
 
echo "Nome      Quota   Redirecionamento" > $nomesaida
 
for file in $(ls tmp/)
do
                while read i
                do
 
                        nome_=$(echo "$i" | grep "_nome:" | sed 's/_nome: //g')
                        if [ ! -z "$nome_" ];then
                                nome="$nome_"
                        fi
                        quota_=$(echo "$i" | grep "_quota:" | sed 's/_quota: //g')
                        if [ ! -z "$quota_" ];then
                                quota="$quota_"
                        fi
                        redirect_=$(echo "$i" | grep "_redirect:" | sed 's/_redirect: //g')
                        if [ ! -z "$redirect_" ];then
                                redirect="$redirect_"
                        fi
 
                done < tmp/$file
        echo "$nome     $quota  \"$redirect\"" >> $nomesaida
        echo "$nome     $quota  $redirect"
        nome=""
        quota=""
        redirect=""
 
done
 
echo ""
echo "xls gerado: [ $nomesaida ]"
 
# Marcelo Viana
# AMDG

Localiza e move arquivos menor que -4k [ ou maior +1M e etc ]

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
#!/bin/bash
base_dir="/home/"
bkp_dir_tmp="/root/bkp-$(date +%d-%m-%Y)"
 
#for i in $(find $base_dir/dbs/ -type f -size +1M)
for i in $(find $base_dir/dbs/ -type f -size -4k)
do
 
	if [ ! -d  $bkp_dir_tmp ];then 
		echo "Preparando..."
		mkdir $bkp_dir_tmp
		kill -9 $(ps aux | grep mav5 | awk '{print $2}') > /dev/null 2>&1
		mav_kill=0
	fi
 
	mv $i $bkp_dir_tmp/
	if [ $? -eq 0 ];then
		echo "$i movido para $bkp_dir_tmp/"
	fi
 
done
 
if [ ! -z $mav_kill ] && [ $mav_kill -eq 0 ];then
	echo "Reiniciando Mav"
	$base_dir/bin/mav5 --no-update
fi

Samba 4 | listar usuários por grupo com samba-tool – listar objetos do AD com ldapsearch

1
2
3
4
5
6
7
8
9
10
11
12
13
#Lista usuários por grupo:
#Primeiro, obter a lista (list_grups):
samba-tool group list >> list_grups
 
#Agora, listar os usuários por grupo e criar um arquivo com nome do grupo que será listado contendo os usuários membros:
while read i ; do samba-tool group listmembers “$i>>$i” ; done < list_grups
 
#Listar Objetos:
ldapsearch -x -D "marcelo.viana@meudominio.local" -b "CN=Users,DC=MEUDOMINIO,DC=LOCAL" -w "SENHA" -h "IP_SAMBA4" | grep userPrincipalName
#Listar objetos filtrando por email:
ldapsearch -x -D "marcelo.viana@meudominio.local" -b "CN=Users,DC=MEUDOMINIO,DC=LOCAL" -w "SENHA" -h "IP_SAMBA4" | grep userPrincipalName
 
# ADMG

Reencaminha emails que chegam de um [ determinado remetente para determinado destinatário ] e reenvia para um terceiro destinatário | Dovecot

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
#!/bin/bash
# Este script lista todos emails enviados $de para $para e encaminha para $encaminha
de="@remetente.com.br"
para="destinatario@dominio.com.br"
encaminha="encaminhaparamim@outrodominio.com.br"
base_dir="/opt/mav5/script"
hoje=$(date +%Y%m%d)
enviados_db="/tmp/id_enviados_$hoje.db"
falha_db="/tmp/falha_enviar_$hoje.db"
env_=0
erro_=0
total_=0
 
if [ ! -e $enviados_db ];then
        touch $enviados_db
fi
 
for f in $(ls /opt/mav5/dbs/mms.auditdb.$hoje.sqlite3)
do
 
        for i in $(/opt/mav5/bin/sqlite3 $f "select messages.file,messages.id from messages INNER JOIN recipients ON  messages.id = recipients.message WHERE messages.sender LIKE '%$de' AND recipients.recipient = '$para'")
        do
                $((total_++))
                id_msg=$(echo $i | sed 's/.*|//')
                file_msg=$(echo $i | sed 's/|.*//')
 
                file_bz2=$(echo -n $file_msg | grep "eml.bz2" > /dev/null 2>&1 ; echo $?)
 
                # verifica se mensagem já foi enviada
                cat $enviados_db | grep -w $id_msg > /dev/null 2>&1
                if [ $? -ne 0 ] && [ $file_bz2 -eq 0 ]; then
                        #move o email para caixa postal definido em $para. A caixa postal deve ser local
                        if [ $(bzcat $file_msg | /usr/lib/dovecot/deliver -d $encaminha > /dev/null 2>&1 ; echo $?) ]; then
                                echo $id_msg >> $enviados_db
                                echo "Encaminhado para $encaminha"
                                $((env_++))
                        else
                                echo $file_msg >> $falha_db
                                echo "Erro ao enviar"
                                $((erro_++))
                        fi
                fi
        clear
        echo "Analisando.. [$file_msg] - Enviados: [$env_] - Erros: [$erro_]"
        done
 
done
 
# resumo
clear
echo "Analisados [$total_] Enviados: [$env_] - Erros: [$erro_]"
 
# Marcelo Viana
# ADMG