Execução em Paralelo [RESOLVIDO]

1. Execução em Paralelo [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 24/01/2012 - 10:15h

Saudações a todos,

Estou trabalhando em um script em que basicamente faz telnet para outras máquinas, executa alguns comandos e salva a saída desses comandos no HD da minha máquina. São cerca de 100 máquinas distribuidas em 3 servidores e o tempo de execução é cavernoso. Até agora ñ consegui acessar todas as máquinas e já está da ordem de horas.

Hoje o script está fazendo isso:

InicioScript

InicioTelnet1
Comando1
Comando2
Comando3
FinalTelnet1
InicioTelnet2
Comando1
Comando2
Comando3
FinalTelnet2
InicioTelnet3
Comando1
Comando2
Comando3
FinalTelnet3
...

FinalScript

E gostaria de saber se há alguma forma de executar os telnets em paralelos:

InicioScript1

InicioTelnet1 InicioTelnet2 InicioTelnet3 ...
Comando1 Comando1 Comando1
Comando2 Comando2 Comando2
Comando3 Comando3 Comando3
FinalTelnet1 FinalTelnet2 FinalTelnet3 ...

FinalScript1

Em resumo é mudar a linearidade dos telnets e colocar eles p/rodarem em paralelo. Pelo menos por servidor, já que são 3 apenas. Dá p/fazer isso??


  


2. Re: Execução em Paralelo [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 24/01/2012 - 11:32h

Poste seu script, caso necessário, o que dar pra fazer fazer é algo como:

cria um script genérico que faz o procedimento:


#!/bin/bash

#conecta com o comandoo telnet
telnet $1
#comandos




Ai cria um outro script que vai executar o script genérico dos procedimentos em background, fazendo uso do poder da multitarefa do SO para executa-los em "paralelo":


#!/bin/bash

./script_generico 10.0.0.1 &
./script_generico 10.0.0.1 &
./script_generico 10.0.0.1 &


Basicamente a ideia é essa ...




3. Re: Execução em Paralelo [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 24/01/2012 - 12:25h

Se caso vc for usar isso para muitos servidores e quiser algo mais robusto, poderia usar ferramentas de automação, como o Control-M ou UC4, por exemplo. Deve-se ter linceças para utilizá-las, mas parece que existem versões free tb.
Eu utilizo onde trabalho e aqui rodam mais de 9 mil de scripts por dia (.sh, .bat, .pl, .exe, .vbs, etc) Os scripts servem para iniciar, stopar, fazer backup, rotacionar logs, enviar e-mail, gerar relatórios, etc. É tudo realizado automaticamente pelas ferramentas, além disso geram logs de sucesso/erro, estatísticas. Pode-se executar uma cadeia de sequenciamento, onde em uma mesma tabela pode-se gerar vários JOBS executados paralelamente e/ou serialmente.


4. Re: Execução em Paralelo [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 24/01/2012 - 18:30h

Concordo com o alexandre ...

Mas se vc quer algo menor ... eu faria dois scripts ... um para controlaro start e outro pra fazer os telnets. Tipo assim:


#!/bin/bash
# Script master.sh
#-------------------------------------------------------------------

arq_ip="ips.txt" #arquivo com a lista das maquinas
tel_max=20 #maximo de telnets por vez só pra nao matar a maquina

cat $arq_ip | while read ip
do
func_telnet ()
{
tel_atu=`ps -ef | grep -v "grep -c telnet" | grep -c telnet`
if [ "$tel_atu" -le "$tel_max" ]; then
script_telnet $ip &
else
sleep 10
func_telnet
fi
}
func_telnet
done


#!/bin/bash
# script_telnet.sh
#-------------------------------------------------------------------

telnet $1 e seus comandos ...

+/- o que o rai3mb disse



5. Re: Execução em Paralelo [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 30/01/2012 - 11:37h

Valeu pela ajuda gente!!

Eu devo ir pela solução do rai3mb porq é algo mais fácil alguém q ñ seja eu de fazer qualquer alteração depois.


6. Re: Execução em Paralelo [RESOLVIDO]

Kaio Mano
kaiomano

(usa CentOS)

Enviado em 02/06/2017 - 22:54h

rai3mb escreveu:

#!/bin/bash

./script_generico 10.0.0.1 &
./script_generico 10.0.0.1 &
./script_generico 10.0.0.1 &


Basicamente a ideia é essa ...


rai3mb, fiz dessa forma e funcionou perfeitamente. Sabe como eu posso pegar o PID do processo para gerenciar os processos em andamento caso seja necessário cancelar algum?

Fiz assim:
php scrip.php parametro=teste >> log.txt &

Toda a saída do script é salva, menos o PID.
Muito obrigado!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts