Arquivos mensais: março 2017

Usando o While ShellScript – caso específico

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
> 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 5 ];then
                iptables -I INPUT -s $ip -j DROP
                echo "IP: $ip bloqueado! $v conexoes."
        fi
 
 done < short.list

Arquivo “origem_SMTP_ip” de exemplo:

83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
98.139.215.251.38181
98.139.215.251.38181
98.139.215.251.38181
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
98.139.215.251.38181
98.139.215.251.38181
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
83.167.224.194.22989
98.139.215.251.38181
98.139.215.251.38181
98.139.215.251.38181
98.139.215.251.38181
98.139.215.251.38181
83.167.224.194.22989
98.139.215.251.38181
98.139.215.251.38181
98.139.215.251.38181
98.139.215.251.38181

Loadbalance FAILOVER V.3

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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/bin/bash
 
  ### CONFIGURE AS VARIÁVEIS AQUI:
  testeip="198.41.0.4" # root server Brasil
  #
  iface1=eth2 # interface padrão
  iface2=eth0
  gw1="IP_CTBC" #gateway padrão
  gw2="IP_Embratel"
  nomeGw1="routerCTBC"
  nomeGw2="routerembratel"
  ttl="10"
  #
  ### FIM DA CONFIG.
  #
  rota=0
  datai=`date +"%d/%m/%Y %H:%M:%S"`
  nomeScript="loadbalanceFAILOVER.sh"
  log="/var/log/loadbalanceFAILOVER.log"
  echo > $log
 
  ### ADICIONA OS GATEWAYS NAS DEVIDAS INTERFACES:
 
reparar() { 
        # verifica se o link padrao está de volta novamente, caso contrário continua no link alternativo.
        if [ $(ping -qc $ttl $testeip -I $iface1 > /dev/null 2>&1 ; echo $?) -eq 0 ]; then
                rota=0
                link1
        else
        #       reparar
                echo "Problema com Links ou interfaces, verique a conexao com a Internet." >> $log
                echo "Testando conexao em 10seg..." >> $log
                sleep 10
                link1
        fi
}
 
link2() {
        if [ $rota -eq 0 ]; then
                        rota=1
                        #internet=$iface2
                        #while ip route del default; do :; done 
                        route del default gw $gw1
                        route add default gw $gw2
                        iptables -t nat -I POSTROUTING -j MASQUERADE
                        #iptables -t nat -I SNAT_ACCEPT -j SNAT --to-source 187.86.249.26
        fi
 
# verificação link 2
        if [ $(ping -qc $ttl $testeip -I $iface2 > /dev/null 2>&1 ; echo $? ) = 0 ]; then
                        clear
                        echo "Link2 em atividade: $nomeGw2" >> $log
                        echo "Interface: $iface2" >> $log
                        echo "Gateway: $gw2" >> $log
                        echo "Status: Ok" >> $log
                                # verifica se o link padrao está de volta, caso contrário continua no link alternativo.
                                if [ $(ping -qc $ttl $testeip -I $iface1 > /dev/null 2>&1 ; echo $?) -eq 0 ]; then
                                        rota=0
                                        link1
                                        break
                                fi
        else
                reparar
        fi
# fim verificação link 2
}
 
link1() {
        if [ $rota = 0 ]; then
                        rota=1
                        #internet=$iface1
                        #while ip route del default; do :; done
                        route del default gw $gw2
                        route add default gw $gw1
                        iptables -t nat -I POSTROUTING -j MASQUERADE
                        # iptables -t nat -D SNAT_ACCEPT -j SNAT --to-source 187.86.249.26
        fi
 
# verificação link 1
        if [ $(ping -qc $ttl $testeip -I $iface1 > /dev/null 2>&1 ; echo $? ) = 0 ]; then
                        clear
                        echo "Link1 em atividade: $nomeGw1" >> $log
                        echo "Interface: $iface1" >> $log
                        echo "Gateway: $gw1" >> $log
                        echo "Status: Ok" >> $log
 
        else
                rota=0
                link2
        fi
# fim verificação link 1
}
 
 
parar(){
        kill -9 `ps aux | grep $nomeScript | awk '{print $2}'`
        echo "$nomeScript Morto" >> $log
        exit
}
helpp(){
        echo "Para executar o script, usa-se a seguinte sintaxe:"
        echo " "
        echo "Iniciar:"
        echo "sh $nomeScript start"
        echo "Parar:"
        echo "sh $nomeScript stop"
        echo "Rodar em modo background:"
        echo "sh $nomeScript start  > /var/log/loadbalance.log &"
        echo "Após rodar em background, verifique se está rodando:"
        echo "ps aux | grep $nomeScript"
        echo "Obs.: Não esquecer de configurar as VARIÁVEIS  do script de acordo com sua rede."
        echo " "
        echo "Desenvolvido por: Marcelo Viana"
        echo " "
        exit
}
 
 
 
case $1 in
'start') link1 ; exit ;;
'stop') parar ; exit ;;
'--help') helpp ; exit ;;
*) link1 ; exit ;;
esac
 
# Marcelo Viana
# AMDG

Shell Script – porcentagem da execução de processo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
#!/bin/bash
dir_base="/home/marcelo/Downloads"
cmd="ls $dir_base/*" # pode ser uma consulta sql
total_registros=$($cmd | wc -l)
 
n=0
for i in $($cmd)
do
        # comando a ser executado nos arquivos listado. Envia a saida para /tmp
        du -h $i >> /tmp/file_temp_
        # exibe a porcentagem do da execucao do processo
        echo "$[ $n*100/$total_registros ]% concluido..."
        # incrementa valor para o calculo de porcentagem
        n=$((n+1))
        # comente o comando abaixo para ver execucao do processo na integra
        sleep 0.5 ; clear
done
# Marcelo Viana
# AMDG