msoliver
(usa Debian)
Enviado em 21/03/2023 - 23:26h
awerik escreveu:
Olá,
estou tentando ajustar um script para a sincronização de arquivos entre servidores.
Em um momento, eu preciso verificar se um diretório no server 2 está vazio ou com arquivos para iniciar o rsync.
Estou usando o seguinte código para teste.
if [ "$(ssh root@meuIP ls -A /data/teste/transfer/ 2>/dev/null)" == "" ]; then echo "VAZIO"; else echo "CONTEM ARQUIVOS"; fi
Ele funciona como linha única direta no shell, mas quando coloco ele dentro do script ele não funciona.
CÓDIGO:
Declaracao das variaveis bla bla
if [ "$(ssh $server2 ls -A $DIR_ 2>/dev/null)" == "" ]; then
rsync --dry-run --remove-source-files -avzrh "$SRV_PRD2":"$DIR_PRD2" "$DIR_PRD1"
SAIDA:
root@server1:~# sh -x /data/teste/s5.sh
+ ssh root@ip ls -A /data/teste/transfer/
+ [ == ]
/data/teste/s5.sh: 35: [: unexpected operator
+ exit 0
Podem me ajudar a entender o erro?
Obrigado
Boa noite awerik.
Acredito que o erro ocorre devido ao seguinte:
[ "$(ssh root@meuIP ls -A /data/teste/transfer/ 2>/dev/null)" == "" ] && echo "VAZIO" || echo "CONTEM ARQUIVOS"
"$(ssh root@meuIP ls -A /data/teste/transfer/ 2>/dev/null)"
O acesso e o comando estão em uma sub-shell, e a "Saída" separada.
______________________________________________________________________
Sugestão:
RESP=$(ssh root@meuIP [[ "$(find /data/teste/transfer/ -empty)" ]] && echo "VAZIO" || echo "NÃO_VAZIO")
echo "${RESP}"
______________________________________________________________________
Outra,
para evitar a execução do find em uma sub_shell:
RESP=$(ssh root@meuIP find /data/teste/transfer/ -empty|grep -q ".*" && echo "VAZIO" || echo "NÃO_VAZIO")
find /home/adminq/img_slide/ -empty|grep -q '.*' && echo VAZIO || echo NAO_VAZIO
echo "${RESP}"
______________________________________________________________________
Importante:
lynx --dump
https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando:
ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________