IZhaq_Melo
(usa FreeBSD)
Enviado em 25/03/2013 - 13:54h
Ola, estou desenvolvendo uma aplicação para enviar um "PING" a servidores que contem um programa especifico de um workflow onde trabalho;
a funcao é igual ao ping que conhecemos, mas se pode mudar parâmetros como tempo de resposta e qtde de saltos.
##!/bin/bash
##
#-----------------------------------------------------
# Descricao: Monitorar agents
#
# Autor: Everton Melo
# versao: 1.3
#----------------------------------------------------
##########
#
#verifica hosts contidos em results.txt
#
##########
#captura string depois do feedline
IFS='
'
#limpa results.txt que contém logs anteriores.
echo "Lista de agentes CTM a verificar" > /tmp/results.txt
#repita enquanto qtde de itens podem ser cortados na primeira coluna
for a in $(cat /tmp/hosts.txt); do
HOST1="$(echo "$a" |cut -f 1)"
#imprime host a ser trabalhado
echo $HOST1
#efetua o ping-do-agent e não adiciona ao bd caso o mesmo não tenha cadastro; concatena data
result=$("ping_especifico" $HOST1; date -u)
#contem "GREP REVERSO"
#verifica se os agents estão "mortos" e os armazena se estiverem
resultzombies=$(echo $result | grep -v "alive")
#adiciona itens dos agentes fora do ar.
echo $resultzombies >> /tmp/results.txt
#end for
done
#imprimi lista de agent do control-M fora de ar
cat /tmp/results.txt
#conta quantos agentes estão fora do ar.
cat /tmp/results.txt |wc -l
#fim
exit
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
Esse programa se mostrou eficiente mas tenho um problema técnico, o arquivo "hosts.txt" contem mais de mil itens.
gostaria de saber como estruturar minha lógica para trabalhar com "threads", li o exemplo:
http://stackoverflow.com/questions/1455695/forking-multi-threaded-processes-bash
mas não entendi muito como isso pode me ajudar, gostaria de compreender melhor como posso "Start" um ping em um processa PIDxxxx
e depois start "N" pings e depois so mostar o resultado dos pings que não tiveram sucesso.
o que mais me ajudou até aqui foi:
http://stackoverflow.com/questions/11087256/parallel-processing-or-threading-in-shell-scripting
mas ainda assim não ta funcionando.
O ambiente que estou utilizando é um AIX e o Ksh, desde obrigado.