Script Shell para verificar infinitamente se diretório existe

1. Script Shell para verificar infinitamente se diretório existe

Renato Neves Ribeiro
sao24006940

(usa Red Hat)

Enviado em 16/01/2014 - 15:20h

Boa tarde galera,

Preciso de um script que verifique se um diretório existe. Se sim, eu vou copiar arquivos, se não, preciso que ele fique verificando perpetuamente até que o diretório seja criado, aí ele deverá verificar o próximo diretório e assim por diante.
Sei que o comando IF é muito usado para esse tipo de verificação.

#!/bin/bash
diretorio=1000280
if [ -d "/testids/"$1000280"/" ]
then
comando de copiar arquivos (essa parte sei fazer, só estou economizando linha)
else
(nessa parte não sei o que fazer)
fi
let diretorio=$diretorio+1

O diretório inicial de verificação será do exemplo será 1000280, aí verificar o 1000281 e assim por diante.
Não sei se há como fazer voltar o teste do início usando esse comando if, ou se preciso usar um while ou for. Tentei achar essa verificação de diretórios com while e for na net, mas não achei nada que me chamasse atenção (posso ter deixado passar).

Grato.



  


2. Re: Script Shell para verificar infinitamente se diretório existe

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 16/01/2014 - 15:34h

Assim ?


#!/bin/bash
while :
do
if [ -d "/testids/1000280/" ]
then
comando de copiar arquivos (essa parte sei fazer, só estou economizando linha)
else
(nessa parte não sei o que fazer)
fi
done



3. Re: Script Shell para verificar infinitamente se diretório existe

Renato Neves Ribeiro
sao24006940

(usa Red Hat)

Enviado em 17/01/2014 - 09:00h

Mas e o argumento de while, ficaria assim mesmo?
O script que coloquei está funcionando, só enquanto a pasta não existir e trava o script pq não disse o que fazer em else, não sei o que colocar nessa parte. Aí depois incrementa o número da pasta a ser verifica e assim por diante.


4. Re: Script Shell para verificar infinitamente se diretório existe

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 17/01/2014 - 09:49h

sao24006940 escreveu:

Mas e o argumento de while, ficaria assim mesmo?
O script que coloquei está funcionando, só enquanto a pasta não existir e trava o script pq não disse o que fazer em else, não sei o que colocar nessa parte. Aí depois incrementa o número da pasta a ser verifica e assim por diante.


Pode colocar o script completo com o comando do if, para saber o proposito do script?...


5. Re: Script Shell para verificar infinitamente se diretório existe

Renato Neves Ribeiro
sao24006940

(usa Red Hat)

Enviado em 17/01/2014 - 10:53h

Taí. Muito obrigado novamente.

#!/bin/bash
inicio=1000220
count=1
while [[ $count ]]
do
if [ -d "/testids/"$inicio"" ]
then
{
if [ -e "/testids/"$inicio"/config_all.xml" ]
then
rsync /testids/"$inicio"/config_all.xml root@10.55.8.132:/root/Desktop/tests/"$inicio"/
fi;
if [ -e "/testids/"$inicio"/test_status.xml" ]
then
rsync /testids/"$inicio"/test_status.xml root@10.55.8.132:/root/Desktop/tests/"$inicio"/
fi;
if [ -e "/testids/"$inicio"/th_params.xml" ]
then
rsync /testids/"$inicio"/th_params.xml root@10.55.8.132:/root/Desktop/tests/"$inicio"/
fi;
if [ -e "/testids/"$inicio"/results.index.xml" ]
then
rsync /testids/"$inicio"/results*.xml root@10.55.8.132:/root/Desktop/tests/"$inicio"/
fi
}
?????????????????????????????????????????
fi
let count=$count+1
let inicio=$inicio+1



done

Esse código está funcionando. Ele verifica os diretório se existem e copia os arquivos de dentro. O problema é quando a pasta ainda não existe (essas pastas são criadas automáticas por um equipamento de teste), eu precisaria continuar analisando por aquela pasta até ela existir para depois continuar analisando a pasta seguinte. Não sei como manipular o else onde estão as interrogações pra que isso aconteça. Ou talvez mexer no while, criar um for, sei lá.
Obs: como vc coloca esse quadrado pontilhado no código para os comandos ficarem coloridos?

Grato.



6. Re: Script Shell para verificar infinitamente se diretório existe

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 17/01/2014 - 23:59h

tenta assim


#!/bin/bash
inicio=1000220
count=1
while :
do
if [ -d "/testids/$inicio" ]
then
{
if [ -e "/testids/"$inicio"/config_all.xml" ]
then
rsync /testids/"$inicio"/config_all.xml root@10.55.8.132:/root/Desktop/tests/"$inicio"/
fi;
if [ -e "/testids/"$inicio"/test_status.xml" ]
then
rsync /testids/"$inicio"/test_status.xml root@10.55.8.132:/root/Desktop/tests/"$inicio"/
fi;
if [ -e "/testids/"$inicio"/th_params.xml" ]
then
rsync /testids/"$inicio"/th_params.xml root@10.55.8.132:/root/Desktop/tests/"$inicio"/
fi;
if [ -e "/testids/"$inicio"/results.index.xml" ]
then
rsync /testids/"$inicio"/results*.xml root@10.55.8.132:/root/Desktop/tests/"$inicio"/
fi
let count=$count+1
let inicio=$inicio+1
}
fi
done




7. Re: Script Shell para verificar infinitamente se diretório existe

Renato Neves Ribeiro
sao24006940

(usa Red Hat)

Enviado em 20/01/2014 - 08:39h

Vou testar. Valeu.
Não coloco o $count como argumento de while? E como vc faz para colocar esse pontilhado para que o código fique com os comandos coloridos?


8. Re: Script Shell para verificar infinitamente se diretório existe

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 20/01/2014 - 08:49h

sao24006940 escreveu:

Vou testar. Valeu.
Não coloco o $count como argumento de while? E como vc faz para colocar esse pontilhado para que o código fique com os comandos coloridos?


Isso, testa exatamente como esta ai.... para colocar como esta ai é só colocar tudo dentro de

[ code ] codigo... [ /code ]

Sem os espaços nos code, coloquei para poder mostrar.


9. Re: Script Shell para verificar infinitamente se diretório existe

Renato Neves Ribeiro
sao24006940

(usa Red Hat)

Enviado em 20/01/2014 - 08:51h

Beleza. Só vou poder verificar amanhã, mas te falo.
Muito obrigado pela sua ajuda.


10. Re: Script Shell para verificar infinitamente se diretório existe

William Amaral de Souza
Williamm

(usa Linux Mint)

Enviado em 20/01/2014 - 08:56h

Certo.. Qualquer coisa da um grito ai.


11. Re: Script Shell para verificar infinitamente se diretório existe

Rodrigo
rodrigocontrib

(usa Debian)

Enviado em 21/01/2014 - 10:52h

[quote]rodrigo.root.rj escreveu:

Basicamente o programa fica rodando até existir o diretório X, se existirem arquivos dentro dele ele para, se não ele executa novamente o programa, coloquei o sleep 3, para que ele rode a cada 3 segundos, porque se ele não especificar, o script vai dar um loop e o computador vai parar de responder, talvez um renice também possa resolver o caso, mas o sleep é mais manipulavel via script.
Bom, testa ai :)



#!/bin/bash
dir='/tmp/x/texte/x/'
destino='/tmp/x/texte/y/'
if [ -d /tmp/x/texte/x/ ] ;
then cp -pf /tmp/x/texte/x/* -r $destino
else
sleep 3 ; ./x
fi







12. Re: Script Shell para verificar infinitamente se diretório existe

Renato Neves Ribeiro
sao24006940

(usa Red Hat)

Enviado em 23/01/2014 - 11:30h

think linux escreveu:

tenta assim


#!/bin/bash
inicio=1000220
count=1
while :
do
if [ -d "/testids/$inicio" ]
then
{
if [ -e "/testids/"$inicio"/config_all.xml" ]
then
rsync /testids/"$inicio"/config_all.xml root@10.55.8.132:/root/Desktop/tests/"$inicio"/
fi;
if [ -e "/testids/"$inicio"/test_status.xml" ]
then
rsync /testids/"$inicio"/test_status.xml root@10.55.8.132:/root/Desktop/tests/"$inicio"/
fi;
if [ -e "/testids/"$inicio"/th_params.xml" ]
then
rsync /testids/"$inicio"/th_params.xml root@10.55.8.132:/root/Desktop/tests/"$inicio"/
fi;
if [ -e "/testids/"$inicio"/results.index.xml" ]
then
rsync /testids/"$inicio"/results*.xml root@10.55.8.132:/root/Desktop/tests/"$inicio"/
fi
let count=$count+1
let inicio=$inicio+1
}
fi
done



Valeu, muito obrigado. Funcionou!!!

Agora eu vou tentar fazer alguma coisa aqui, mas vc acha que rola colocar uma verificação infinita do ip antes das copias dos arquivos? Só para caso se a máquina remota não estar online ele não enviar os arquivos e essa parte na rotina passar? Só enviar quando a máquina remota puder receber?

Grato.





01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts