Como mandar vários Pings ao mesmo tempo e receber o resultado num txt. [RESOLVIDO]

1. Como mandar vários Pings ao mesmo tempo e receber o resultado num txt. [RESOLVIDO]

Ton Melo
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.







  


2. Re: Como mandar vários Pings ao mesmo tempo e receber o resultado num txt. [RESOLVIDO]

cr0n
_di0

(usa FreeBSD)

Enviado em 25/03/2013 - 14:50h

Não é possível fazer multi-threading em script shell, no máximo você pode simular, executando programas em background, algumas opções do ping poderia aumentar a performance, ou talvez você gostaria de usar o fping, comumente usado em scripts dessa natureza:


http://fping.sourceforge.net/
http://fping.sourceforge.net/man/


3. Re: Como mandar vários Pings ao mesmo tempo e receber o resultado num txt. [RESOLVIDO]

Ton Melo
IZhaq_Melo

(usa FreeBSD)

Enviado em 25/03/2013 - 14:59h

_di0 escreveu:

Não é possível fazer multi-threading em script shell, no máximo você pode simular, executando programas em background, algumas opções do ping poderia aumentar a performance, ou talvez você gostaria de usar o fping, comumente usado em scripts dessa natureza:


http://fping.sourceforge.net/
http://fping.sourceforge.net/man/


ta eu entendi que não da pra usar o multi-threading full como um linguagem de programação qq. mas como ficaria usando o recurso bg?

lamento amigo mas a parte mas como eu disse:

mas NÃO se pode mudar OS parâmetros

veja a ferramenta em: ( CTMPING )

http://tech.dir.groups.yahoo.com/group/Control-X/message/18918

ele comando não so manda um ping ele utiliza um canal ssh e também verifica o agente "Deamond" dessa aplicação esta ativa.
O Fping não se aplica ao meu caso.

de qq forma obrigado.




4. Re: Como mandar vários Pings ao mesmo tempo e receber o resultado num txt. [RESOLVIDO]

cr0n
_di0

(usa FreeBSD)

Enviado em 25/03/2013 - 15:41h

mas se pode mudar parâmetros como tempo de resposta e qtde de saltos.


Pelo contrário, enfatizou que poderia se mudar os parâmetros, mas enfim. Background se executa como qualquer aplicação, utilizando do nohup se for necessário. Se vai checar esses vários hosts e, vai mesmo usar o shell script para simular threading, eu faria isso com Perl, é simples, melhor e além disso, há já disponível o módulo Ping e módulo thread para programação thread.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts