Estou voltando a ativa com o Planet GentooBR e resolvi colocar ordem na casa. Conforme e-mail enviado a membros esta semana retirei (temporariamente se os membros acertarem a situação) do planet blogs com conteúdo inadequado ou sem a tag gentoobr/gentoo.
Os blogs do Indiox, AngusYoung e o meu ficaram, os blogs do Hélder, Renata e Enderson foram desabilitados.
O do Hélder (HMBR) por estar com conteúdo em inglês, o da Renata e do Enderson por não conter a tag Gentoo/GentooBR.
Os membros estão sendo comunicados por e-mail e espero retornarem o mais rápido possível.
Enquanto isto, ai vem novidades.
Em breve estarei com dominio e blog próprio e poderei contar com espaço próprio para escrever artigos para o planet :), isso é ótimo, existem dezenas de coisas que eu tenho em mente para escrever.
Em adendo, eu o Hélder estamos nos tornando oficialmente responsáveis (assim que nos transferirem os dados de acesso) pelo www.gentoobr.org. Quem sabe não teremos um Drupal e um sistema melhor para notícias :).
Fiquem no aguardo, abraços, Chronos.
Marcadores: Gentoo
1 #!/bin/bash
2 clear
3 # Este script testa requisições http/https a scripts/aplicativos na web. A idéia
4 # é verificar se os servidores web (ou de outro tipo) estão ativos.
5 # Através do lynx ele faz uma requisição (usando a opção --dump para ter a
6 # saida no shell) e consegue salvar os códigos de acesso http (através da opção
7 # --eror-file) em um arquivo. Este arquivo é usado para dizer se o acesso está
8 # ok ou não.
9 #
10 # Autor: Felipe Rafael Prenholato <chronos@gentoobr.org>
11 # IRC: nick chronos in #gentoo-br or #sancalivre at irc.freenode.net
12 # Data: 23 de Julho de 2006.
13 #
14 # Este script está coberto sobre a licença GPLv2 e disponível via
15 # pedido por e-mail. Qualquer alteração por favor envie para o criador
16 # do script. Podem publica-lo onde quiserem, apenas sitem o autor.
17
18 # #
19 # --- VARIAVEIS GLOBAIS --- #
20 # #
21
22 # Debug flag
23 DEBUG=0
24
25 # Definindo diretório temporário.
26 if [ -d /tmp ] && [ -w /tmp ] && [ -r /tmp ]
27 then
28 TMPDIR='/tmp'
29 elif [ -d /var/tmp ] && [ -w /var/tmp ] && [ -r /var/tmp ]
30 then
31 TMPDIR='/var/tmp'
32 else
33 echo "O script precisa do diretório /tmp ou /var/tmp com direito de escrita e leitura para funcionar."
34 exit 1
35 fi
36
37 # STATUS_FILE, este arquivo serve para definir o status das URLs.
38 # Quando seu valor for 1 é porque esta funcionando (as requests estão ok),
39 # quando for 0, é porque há problemas.
40 STATUS_FILE="$TMPDIR/${0##*\/}_status_file_for_FOO.tmp"
41
42 # error-file usado no lynx, de man lynx, opção --error-file:
43 #
44 # -error_file=FILE
45 # define a file where Lynx will report HTTP access codes.
46 #
47 LYNX_ERROR_FILE="$TMPDIR/${0##*\/}_lynx_error_file_FOO.tmp"
48
49 # Montanto string do Lynx.
50 LYNX="$(which lynx) --error-file=ERROR_FILE --dump URL"
51
52 # Lista de URLs, separadas por espaço.
53 URLS="http://urlo1/foobar.php http://666.166.299.131/exe/mpg.exe
54 http://localhost/phpinfo.php"
55
56 # Lista de e-mails, separadas por espaço.
57 EMAILS="chronos@gentoobr.org"
58
59 # #
60 # --- FUNÇÕES --- #
61 # #
62
63 # sendMail(ASSUNTO,MENSAGEM)
64 sendMail () {
65
66 # Definindo variaveis.
67 local ASS
68 local MSG
69 local ENCODING
70
71 # $1 = ASS e $2 = MSG, se não existirem, não manda nada.
72 if [ -n "$1" ] && [ -n "$2" ]
73 then
74 ASS="$1"
75 MSG="$2"
76 else
77 return 1 # ASS e MSG são obrigatórios.
78 fi
79
80 # Debug
81 if [ "$DEBUG" = "1" ]
82 then
83 echo "--- Enviando e-email ---"
84 echo "Assunto: "
85 echo -e $ASS
86 echo
87 echo "Mensagem: "
88 echo -e $MSG
89 echo "--- / Enviando e-email ---"
90 fi
91
92 # Encoding default é en_US-ISO-8859-1, mas o cara pode colocar o que quiser
93 # :).
94 if [ -n "$3" ]
95 then
96 ENCODING="$3"
97 else
98 ENCODING="en_US.ISO-8859-1"
99 fi
100
101 #return 0 # hack para testes.
102 # Enviando o E-Mail.
103 if LC_ALL="$ENCODING" echo -e "$MSG" | mail -s "$ASS" $EMAILS
104 then
105 return 0 # Foi enviado na boa.
106 else
107 return 2 # O envio do e-mail deu problema.
108 fi
109
110 }
111
112 testStatusFile () {
113
114 # Return codes
115 # 1 - Não foi passado o arquivo
116 # 0 - Arquivo criado com valor 0
117 # 2 - Arquivo está com valor 0
118 # 3 - Arquivo está com valor 1
119
120 local statusfile
121 if [ -n "$1" ]
122 then
123 statusfile=$1
124 else
125 return 1 # não foi passado o status file.
126 fi
127
128 if ! [ -s $statusfile ]
129 then
130 echo 0 > $statusfile
131 return 0
132 fi
133
134 [ "$(<$statusfile)" = "0" ] && return 2
135
136 [ "$(<$statusfile)" = "1" ] && return 3
137
138 }
139
140 # #
141 # --- CORPO DO PROGRAMA --- #
142 # #
143
144 for url in ${URLS};
145 do
146
147 # Acertando variÃveis temporárias (para cada url elas ficam diferentes).
148 TMP_STATUS_FILE="${STATUS_FILE/FOO/${url##*\/}}"
149 TMP_LYNX_ERROR_FILE="${LYNX_ERROR_FILE/FOO/${url##*\/}}"
150 TMP_LYNX=${LYNX/URL/$url} && TMP_LYNX=${TMP_LYNX/ERROR_FILE/$TMP_LYNX_ERROR_FILE}
151
152 # Fazendo request da url.
153 $TMP_LYNX &>/dev/null
154
155 if [ "$?" = "1" ]
156 then
157
158 EXITCODE=1
159 testStatusFile $TMP_STATUS_FILE
160 if [ "$?" = "0" ] || [ "$?" = "2" ]
161 then
162
163 echo 1 > $TMP_STATUS_FILE
164
165 MSG="\n Ocorreu um erro com o Lynx, não foi possível negociar a requisição com o servidor."
166 MSG="$MSG\n Pode ser possível que o micro não esteja ligado ou o serviço responsável não esteja de pé."
167 MSG="$MSG\n É ainda possível que não haja conexão com a internet ou existam outros problemas na conexão."
168 MSG="$MSG\n"
169
170 ASS="Problemas na conexão com $url"
171
172 sendMail "$ASS" "$MSG"
173
174 fi
175
176 else
177
178 # Pegando protocolo e código de retorno do arquivo.
179 PROTOCOL=$(grep STATUS $TMP_LYNX_ERROR_FILE | cut -d"=" -f2 | cut -d" " -f1)
180 CODE=$(grep STATUS $TMP_LYNX_ERROR_FILE | cut -d"=" -f2 | cut -d" " -f2)
181
182 # Testando códigos
183 case "$CODE" in
184
185 2??)
186
187 # Códigos 2XX são códigos de sucesso.
188 echo 0 > $TMP_STATUS_FILE
189
190 ;;
191
192 4??)
193
194 EXITCODE=1
195 testStatusFile $TMP_STATUS_FILE
196 if [ "$?" = "0" ] || [ "$?" = "2" ]
197 then
198
199 echo 1 > $TMP_STATUS_FILE
200
201 case "$CODE" in
202
203
204 403)
205
206 MSG="\n Acesso proibido a $url.\n Erro código 403, protocolo $PROTOCOL"
207 ASS="Erro de cliente na url $url, erro 403."
208 sendMail "$ASS" "$MSG"
209
210 ;;
211
212 404)
213
214 MSG="\n O arquivo da url $url não foi encontrado.\n Erro código 404, protocolo $PROTOCOL"
215 ASS="Erro de cliente na url $url, erro 404."
216 sendMail "$ASS" "$MSG"
217
218 ;;
219
220 408)
221
222 MSG="\n Timeout de requisição para url $url.\n Erro código 408, protocolo $PROTOCOL"
223 ASS="Erro de cliente na url $url, erro 408."
224 sendMail "$ASS" "$MSG"
225
226 ;;
227
228 *)
229
230 MSG="\n O erro $CODE aconteceu com a url $url.\nVerifique a lista de erros HTTP em http://en.wikipedia.org/wiki/HTTP_error_codes ou http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html para ver qual é o erro."
231 ASS="Erro de cliente na url $url, erro $CODE."
232 sendMail "$ASS" "$MSG"
233
234 ;;
235
236 esac
237
238 fi
239
240 ;;
241
242 5??)
243
244 EXITCODE=1
245 testStatusFile $TMP_STATUS_FILE
246 if [ "$?" = "0" ] || [ "$?" = "2" ]
247 then
248
249 echo 1 > $TMP_STATUS_FILE
250
251 case "$CODE" in
252
253
254 500)
255
256 MSG="\n Erro interno de servidor para $url.\n Erro código 500, protocolo $PROTOCOL"
257 ASS="Erro de servidor na url $url, erro 500."
258 sendMail "$ASS" "$MSG"
259
260 ;;
261
262 502)
263
264 MSG="\n Bad Gateway para $url.\n Erro código 502, protocolo $PROTOCOL"
265 ASS="Erro de servidor na url $url, erro 502."
266 sendMail "$ASS" "$MSG"
267
268 ;;
269
270 503)
271
272 MSG="\n Serviço não disponível para $url.\n Erro código 503, protocolo $PROTOCOL"
273 ASS="Erro de servidor na url $url, erro 503."
274 sendMail "$ASS" "$MSG"
275
276 ;;
277
278 *)
279
280 MSG="\n O erro $CODE aconteceu com a url $url.\nVerifique a lista de erros HTTP em http://en.wikipedia.org/wiki/HTTP_error_codes ou http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html para ver qual é o erro."
281 ASS="Erro de servidor na url $url, erro $CODE."
282 sendMail "$ASS" "$MSG"
283
284 ;;
285
286 esac
287
288 fi
289
290 ;;
291
292 *)
293
294 EXITCODE=1
295 testStatusFile $TMP_STATUS_FILE
296 if [ "$?" = "0" ] || [ "$?" = "2" ]
297 then
298
299 echo 1 > $TMP_STATUS_FILE
300
301 MSG="\n O erro $CODE aconteceu com a url $url.\nVerifique a lista de erros HTTP em http://en.wikipedia.org/wiki/HTTP_error_codes ou http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html para ver qual é o erro."
302 ASS="Erro na url $url, erro $CODE."
303 sendMail "$ASS" "$MSG"
304
305 fi
306
307 ;;
308
309 esac
310
311 fi
312
313 # Debug
314 if [ "$DEBUG" = "1" ]
315 then
316 echo "URL: $url"
317 echo "TMP_STATUS_FILE: $TMP_STATUS_FILE"
318 echo "TMP_LYNX_ERROR_FILE: $TMP_LYNX_ERROR_FILE"
319 echo "TMP_LYNX: $TMP_LYNX"
320 echo "PROTOCOL: $PROTOCOL"
321 echo "CODE: $CODE"
322 echo "SAIDA DO LYNX: $foo"
323 echo
324 echo "-----------------"
325 echo
326 fi
327
328 # Deletando TMP_LYNX_ERROR_FILE
329 rm $TMP_LYNX_ERROR_FILE &>/dev/null
330
331 # Limpando variaveis.
332 unset -v url TMP_STATUS_FILE TMP_LYNX_ERROR_FILE TMP_LYNX foo MSG ASS SEND_MAIL_FAIL PROTOCOL CODE
333
334 done
335
336 [ "$EXITCODE" = "1" ] && exit 1
337 exit 0
# testa requisiÃÃes a determinadas URLS e envia alertas.
# a lista de URLS e E-MAILS devem ser alteradas no SCRIPT.
*/10 * * * * ~/bin/testerequest &>/dev/null
1 #!/bin/bash
2
3 # a ideia eh matar todos os bashs menos o seu, impossibilitando alguem
4 # de atrapalhar o servico.
5
6 # o script eh dedicado a um homem chamado Jomar.
7
8 # Este script eh licenciado sobre a GPLv2 e toda alteracao devera ser
9 # publicada e enviada se possivel ao criador.
10
11 # Autor:
12 # Felipe Prenholato
13 # chronos@gentoobr.org
14
15 QUEM=$1
16 EXPULSAR=$2
17
18 if [ "$EXPULSAR" == "S" ]
19 then
20 GREP="grep"
21 elif [ "$EXPULSAR" == "N" ]
22 then
23 GREP="grep -v"
24 else
25 echo "Use: mata [IP|NOME_MAQUINA] [S|N]"
26 echo "O segundo argumento define se o cara vai ser expulso ou se ele fica no micro."
27 exit 1
28 fi
29
30 w | grep "^[a-z]" | ${GREP} "$QUEM" | tr -s '\t' ' ' | cut -d' ' -f2 > /tmp/tmpmata
31
32 for e in $(cat /tmp/tmpmata);
33 do
34
35 PROCESSOS=$(ps aux | grep bash | grep $e | tr -s '\t' ' ' | cut -d' ' -f 2)
36
37 kill -9 $PROCESSOS
38
39 done
1 #!/bin/sh
2 # Este script pinga servidores na lista da variavel SERVIDORES e envia
3 # emails para os emails da lista da variavel LISTA_EMAILS alertando caso
4 # eles caiam. O script só alerta se na última vez que ele testou o
5 # servidor estiver em pé ou se o servidor não foi testado ainda.
6 #
7 # Autor: Felipe Rafael Prenholato <chronos@gentoobr.org>
8 # IRC: nick chronos in #gentoo-br or #sancalivre at irc.freenode.net
9 # Data: 21 de Junho de 2006.
10 #
11 # Este script está coberto sobre a licença GPLv2 e disponível via
12 # pedido por e-mail. Qualquer alteração por favor envie para o criador
13 # do script.
14
15
16 # Variavel SERVIDORES: lista de servidores separados por espaço.
17 # Se colocar nomes em vez de IPs certifique-se de que o servidor em que o script
18 # rodar resolva o ip.
19 SERVIDORES="chicobento portalabipti"
20
21 # Variavel LISTA_EMAILS: lista de emails separados por espaço
22 LISTA_EMAILS="felipe.prenholato@mzo.com.br patrick@mzo.com.br paulo@mzo.com.br deivid@mzo.com.br felipe@nemo.intranet.mzo.com.br"
23 #LISTA_EMAILS="chronos@gentoobr.org felipe@nemo.intranet.mzo.com.br felipe.prenholato@mzo.com.br"
24
25 # Formato da data a ser enviada no e-mail.
26 data=$(date +"%T de %d/%m/%Y")
27
28 # função que pinga o servidor e envia email.
29 ping_server() {
30
31 # variaveis locais usadas
32 local pingreturn
33 local serversts
34 local TMPFILE
35 local server
36
37 server=$1
38 TMPFILE="/tmp/ping_$server.tmp"
39
40 # Debug
41 #echo "Servidor: $server"
42 #echo "Arquivo temporario: $TMPFILE"
43
44 # pinga servidor e pega retorno.
45 ping -c3 $server &>/dev/null;
46 pingreturn=$?;
47
48 # Debug
49 #echo "Ping retornou $pingreturn para $server"
50
51 # Se pingreturn for 0 o servidor está de pé.
52 if [ "$pingreturn" == "0" ]
53 then
54 echo "1" > $TMPFILE
55 fi
56
57 # Se pingreturn for 1 o servidor não foi pingado.
58 if [ "$pingreturn" == "1" ]
59 then
60
61 # Se $TMPFILE não existir cria ele.
62 if ! [ -e $TMPFILE ]
63 then
64 # Debug
65 #echo "$TMPFILE não existe, criando com valor 1."
66 echo "1" > $TMPFILE
67 fi
68
69 # pega status do servidor, 1 é pingado, 0 é não pingado.
70 serversts=$(cat $TMPFILE)
71
72 # Debug
73 #echo "Valor de $TMPFILE: $serversts"
74
75 # se ele estava de pé (valor 1) caiu agora, grava valor 0 em
76 # $TMPFILE e manda email.
77 if [ "$serversts" == "1" ]
78 then
79
80 echo "0" > $TMPFILE
81 msg="Servidor $server fora do ar em $data. Contatar responsavéis."
82 ass="Servidor $server fora do ar."
83 LC_ALL="en_US.ISO-8859-1" echo "$msg" | mail -s "$ass" $LISTA_EMAILS
84
85 fi
86
87 fi
88
89 }
90
91 # roda ping_server para cada servidor.
92 for e in $(echo $SERVIDORES);
93 do
94 ping_server $e;
95 done
./script