Carregar shell dentro de shell [RESOLVIDO]

1. Carregar shell dentro de shell [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 20/08/2010 - 15:11h

Estou na área do shell há pouco tempo e gostaria de fazer uma pergunta.

Tenho o seguinte verifica.sh:

echo "TESTANDO A CONEXAO COM A INTERNET..."
ping -c 10 64.233.163.104 | grep -in ", 0 received" > internet.txt
if [ -s internet.txt ]; then
echo "ERRO: CONEXAO NAO ESTABELECIDA. VERIFIQUE A INTERNET.";
exit 1;
else
echo "CONEXAO ESTABELECIDA COM SUCESSO.";
fi

echo "TESTANDO A CONEXAO COM A REDELOCAL..."
ping -c 10 192.168.2.3 | grep -in ", 0 received" > redelocal.txt
if [ -s internet.txt ]; then
echo "ERRO: CONEXAO NAO ESTABELECIDA. VERIFIQUE A INTERNET.";
exit 1;
else
echo "CONEXAO ESTABELECIDA COM SUCESSO.";
fi

----------

Quero carregar esse script dentro de outro script de acordo com a verificação que quero fazer, verificação da internet ou da rede local.

Exemplo:

Tenho um script update.sh, dentro desse script eu quero fazer o "teste de conexão com a internet" antes de prosseguir com o update em si. Para isso, eu teria que carregar o script verifica.sh e fazer com que ele leia apenas a parte da internet.

Ficaria grato pela ajuda.


  


2. Re: Carregar shell dentro de shell [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 20/08/2010 - 21:22h

Rapá, faça como função. É muito mais fácil e não precisa fazer outro arquivo pra isso. Olhe:

verifica() {
echo "TESTANDO A CONEXAO COM A INTERNET..."
ping -c 10 64.233.163.104 | grep -in ", 0 received" > internet.txt
if [ -s internet.txt ]; then
echo "ERRO: CONEXAO NAO ESTABELECIDA. VERIFIQUE A INTERNET.";
exit 1;
else
echo "CONEXAO ESTABELECIDA COM SUCESSO.";
fi

echo "TESTANDO A CONEXAO COM A REDELOCAL..."
ping -c 10 192.168.2.3 | grep -in ", 0 received" > redelocal.txt
if [ -s internet.txt ]; then
echo "ERRO: CONEXAO NAO ESTABELECIDA. VERIFIQUE A INTERNET.";
exit 1;
else
echo "CONEXAO ESTABELECIDA COM SUCESSO.";
fi
}

Isso já é uma função. Agora vc faz a regrinha do seu update e, quando precisar chamar a função, mencione apenas o nome verifica. Simples assim!


3. Re: Carregar shell dentro de shell [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 21/08/2010 - 09:41h

Está clareando um pouco mas, na verdade eu não vou carregar a verificação de internet e rede interna dentro de um mesmo script, mas sim de 2 scripts distintos. Tenho que ter então duas funções dentro do script verifica e carregar uma ou outra de acordo com minha necessidade em um outro script. Como fazer?


4. Re: Carregar shell dentro de shell [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 21/08/2010 - 09:44h

Vc ainda não entendeu meu propósito, q é eliminar o outro script e torná-lo um só. Por isso q eu fiz a função pra vc. A partir dae q vc faz as condições para q cada função seja executada.


5. Re: Carregar shell dentro de shell [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 21/08/2010 - 11:54h

Mas eu não posso eliminar e tornar uma coisa só. O outro script não faz apenas a função de verificar.... ele realiza outras funções de acordo com o resultado do ping.

Resumindo:

Ao invés deu eu colocar cada função em cada script, eu quero que cada script carrega a determinada função dentro do verifica.sh.

Assim:

verinternet() {
echo "TESTANDO A CONEXAO COM A INTERNET..."
ping -c 10 64.233.163.104 | grep -in ", 0 received" > internet.txt
if [ -s internet.txt ]; then
echo "ERRO: CONEXAO NAO ESTABELECIDA. VERIFIQUE A INTERNET.";
exit 1;
else
echo "CONEXAO ESTABELECIDA COM SUCESSO.";
fi
}

verlocal() {
echo "TESTANDO A CONEXAO COM A REDELOCAL..."
ping -c 10 192.168.2.3 | grep -in ", 0 received" > redelocal.txt
if [ -s internet.txt ]; then
echo "ERRO: CONEXAO NAO ESTABELECIDA. VERIFIQUE A INTERNET.";
exit 1;
else
echo "CONEXAO ESTABELECIDA COM SUCESSO.";
fi
}

Essas duas funções no script verifica.sh

Ai eu quero que em um segundo script eu consiga carregar determinada função dentro do verifica.sh



Ps.: Desculpe se não estou conseguindo explicar direito, ainda não estou familiarizado com os termos.


6. Re: Carregar shell dentro de shell [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 22/08/2010 - 04:41h

Para incluir/carregar uma função definida em um outro arquivo, de forma dinâmica, use, por exemplo:


source arquivo.sh
ou
. arquivo.sh


Detalhe extra é que este arquivo não necessita ter permissão de execução, apenas de leitura, ou seja recomendo muito cuidado com informações sensíveis(como senhas). A partir de então você poderá chamar a função do seu script através do verificar.sh como você deseja.


Exemplos:


# Arquivo com as funcoes
funcao_externa(){

echo 'Esse é um exemplo de uso de funcoes externas'

}

#!/bin/bash

source arquivo_funcoes.sh

funcao_externa;

exit


Bom proveito e espero ter te ajudado de alguma forma. :P



7. Re: Carregar shell dentro de shell [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 23/08/2010 - 12:24h

Blzzzz...

vou testar e posto se tiver dado certo.

Muito obrigado!!!!


8. Re: Carregar shell dentro de shell [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 23/08/2010 - 12:33h

Deu certo... Novamente obrigado aos dois que me ajudaram.

=)))






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts