shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script-pt] Identificando diretórios não acessados


From: Julio C. Neves
Subject: Re: [shell-script-pt] Identificando diretórios não acessados
Date: Wed, 11 Dec 2019 10:47:00 -0300

Fala Jamesonson,
Acho que vc copiou esse script do Vade Mecum Forense (KKKKKKK)

É muito difícil interpretar a lógica do script de outrem, sem perder muito tempo, mas vou te dar uns conselhos, vc tenta e vamos acertando ao longo do tempo.

Recomendações:
  1. Não use variáveis em letras maiúsculas. Além de ser perigoso, pq vc pode criar uma com o mesmo nome de outra do sistema, dificulta a leitura;
  2. Em 99% dos casos, variáveis não precisam de estar entre chaves ({}). Isso é desnecessário e dificulta a leitura;
  3. Para simplificar seu prg, o ideal é usar vetores e for.
Criando o vetor Dir (repare que só a primeira está em maiusc):
Dir=(""
/home/jamenson/outros_documentos/contabilidade
/media/jamenson/windows/Users/Public/Documents/contabilidade
/media/jamenson/windows/Users/Public/Documents/amway/contabilidade
/media/jamenson/windows/mcjadvocacia/contabilidade
/media/jamenson/windows/tmsa/01-corrente/contabilidade
/cygdrive/c/Users/Public/Documents/contabilidade
)

Criando o Vetor Destino
Destino=(
jafesp-box:contabilidade/
jafesp-gdrive:contabilidade/
jafesp-mega:contabilidade/
jafesp-onedrive:contabilidade/
jafesp-yandex:contabilidade/
)

Agora acho que vc pode fazer algo assim:
for ((IndDir=1; IndDir<=5; IndDir++))
do
    cd ${Dir[IndDir]}
    for ((IndDest=0; IndDest<=4; IndDes++))
    do
        rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
        copy . ${Destino[IndDest]}
    done
done

Agora temos de adaptar isso à sua realidade.

Em janeiro começo a lecionar uma turma de Shell em EAD, com meu acompanhamento diário e isso pode ser do seu interesse. As matrículas ficarão abertas somente por uma semana (como dou aulas presenciais e corrijo todos os exercícios, a qtd de alunos não pode exceder 30) e vc pode obter maiores detalhes em https://educacao.dicas-l.com.br/shell-linux e, mandando um e-mail para address@hidden vc será avisado com antecedência da abertura das matrículas e dos workshops que publicamos semanalmente.

Abraços,
Julio

» Não tem tempo para fazer um curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?
» Em outubro abriremos uma semana de inscrições
» para uma nova turma. Veja mais detalhes em:

Também damos treinamento em sua empresa
em qualquer cidadecom certificado e nota fiscal.







Em qua., 11 de dez. de 2019 às 01:42, Jamenson Ferreira Espindula de Almeida Melo <address@hidden> escreveu:
Saudações.

Primeiramente, informo que não sou da área da Tecnologia da
Informação. Sou um Advogado que gosta muito do ambiente GNU/Linux. Eu
busco soluções para algumas situações de meu interesse, como o
aplicativo "rclone" <https://rclone.org/>. Eu tenho utilizado muito o
rclone e tem dado muito certo para mim.

Como disse, sou um Advogado e não um técnico da área da Tecnologia da
Informação. Portanto, peço a paciência e compreensão de todos se as
minhas perguntas forem bobas e básicas demais.

Como um "script kidie", eu elaborei um script para produzir uma cópia
de segurança de alguns arquivos. Peguei dicas aqui e ali e o resultado
foi este:


 = = = = = Início de transcrição = = = = =


#!/bin/bash

if env test -z "${RCLONE_CONFIG_PASS}"  # 0 (verdadeiro) = Variável
não contém valor; 1 (falso) = Variável contém valor.
then

source /home/jamenson/set-rclone-password.txt

DIR1=/home/jamenson/outros_documentos/contabilidade
DIR2=/media/jamenson/windows/Users/Public/Documents/contabilidade
DIR3=/media/jamenson/windows/Users/Public/Documents/amway/contabilidade
DIR4=/media/jamenson/windows/mcjadvocacia/contabilidade
DIR5=/media/jamenson/windows/tmsa/01-corrente/contabilidade
DIR6=/cygdrive/c/Users/Public/Documents/contabilidade


E_XCD=86       # Acesso impossível ao diretório?
N_DIR=0        # Número de diretórios não acessados.

cd ${DIR1} 2>/dev/null || {
  echo "Não posso acessar o diretório \"${DIR1}\"." >&2;
  N_DIR=1;
}

case $PWD in
( "$DIR1" )
find . -type f -iname "*.log" -exec rm -v {} \;
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-box:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-gdrive:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-mega:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-onedrive:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-yandex:contabilidade/ ;;
esac

cd $DIR2 2>/dev/null || {
  echo "Não posso acessar o diretório \"$DIR2\"." >&2;
  N_DIR=2;
}

case $PWD in
( "$DIR2" )
find . -type f -iname "*.log" -exec rm -v {} \;
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-box:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-gdrive:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-mega:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-onedrive:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-yandex:contabilidade/ ;;
esac

cd $DIR3 2>/dev/null || {
  echo "Não posso acessar o diretório \"$DIR3\"." >&2;
  N_DIR=3;
}

case $PWD in
( "$DIR3" )
find . -type f -iname "*.log" -exec rm -v {} \;
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-box:amway/contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-gdrive:amway/contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-mega:amway/contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-onedrive:amway/contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-yandex:amway/contabilidade/ ;;
esac

cd $DIR4 2>/dev/null || {
  echo "Não posso acessar o diretório \"$DIR4\"." >&2;
  N_DIR=4;
}

case $PWD in
( "$DIR4" )
find . -type f -iname "*.log" -exec rm -v {} \;
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-onedrive:mcjadvocacia/contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . mcjadvocacia-gdrive:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . mcjadvocacia-yandex:contabilidade/ ;;
esac

cd $DIR5 2>/dev/null || {
  echo "Não posso acessar o diretório \"$DIR5\"." >&2;
  N_DIR=5;
}

case $PWD in
( "$DIR5" )
find . -type f -iname "*.log" -exec rm -v {} \;
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . tmsa-gdrive:01-corrente/contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . tmsa-mega:01-corrente/contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . tmsa-yandex:01-corrente/contabilidade/ ;;
esac

cd $DIR6 2>/dev/null || {
  echo "Não posso acessar o diretório \"$DIR6\"." >&2;
  N_DIR=6;
}

case $PWD in
( "$DIR6" )
find . -type f -iname "*.log" -exec rm -v {} \;
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-box:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-gdrive:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-mega:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-onedrive:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-yandex:contabilidade/ ;;
esac

if env test "${N_DIR}" -eq 6
then
echo "Não consegui acessar nenhum diretório. Cópia de segurança NÃO produzida!"
exit ${E_XCD}
else
echo "Cópia de segurança produzida."
fi

# = = = = = = = = = = =
# = = = = = = = = = = =

else

DIR1=/home/jamenson/outros_documentos/contabilidade
DIR2=/media/jamenson/windows/Users/Public/Documents/contabilidade
DIR3=/media/jamenson/windows/Users/Public/Documents/amway/contabilidade
DIR4=/media/jamenson/windows/mcjadvocacia/contabilidade
DIR5=/media/jamenson/windows/tmsa/01-corrente/contabilidade
DIR6=/cygdrive/c/Users/Public/Documents/contabilidade


E_XCD=86       # Acesso impossível ao diretório?
N_DIR=0        # Número de diretórios não acessados.

cd $DIR1 2>/dev/null || {
  echo "Não posso acessar o diretório \"$DIR1\"." >&2
  N_DIR=1
}

case $PWD in
( "$DIR1" )
find . -type f -iname "*.log" -exec rm -v {} \;
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-box:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-gdrive:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-mega:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-onedrive:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-yandex:contabilidade/ ;;
esac

cd $DIR2 2>/dev/null || {
  echo "Não posso acessar o diretório \"$DIR2\"." >&2
  N_DIR=2
}

case $PWD in
( "$DIR2" )
find . -type f -iname "*.log" -exec rm -v {} \;
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-box:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-gdrive:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-mega:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-onedrive:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-yandex:contabilidade/ ;;
esac

cd $DIR3 2>/dev/null || {
  echo "Não posso acessar o diretório \"$DIR3\"." >&2
  N_DIR=3
}

case $PWD in
( "$DIR3" )
find . -type f -iname "*.log" -exec rm -v {} \;
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-box:amway/contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-gdrive:amway/contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-mega:amway/contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-onedrive:amway/contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-yandex:amway/contabilidade/ ;;
esac

cd $DIR4 2>/dev/null || {
  echo "Não posso acessar o diretório \"$DIR4\"." >&2
  N_DIR=4
}

case $PWD in
( "$DIR4" )
find . -type f -iname "*.log" -exec rm -v {} \;
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-onedrive:mcjadvocacia/contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . mcjadvocacia-gdrive:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . mcjadvocacia-yandex:contabilidade/ ;;
esac

cd $DIR5 2>/dev/null || {
  echo "Não posso acessar o diretório \"$DIR5\"." >&2
  N_DIR=5
}

case $PWD in
( "$DIR5" )
find . -type f -iname "*.log" -exec rm -v {} \;
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . tmsa-gdrive:01-corrente/contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . tmsa-mega:01-corrente/contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . tmsa-yandex:01-corrente/contabilidade/ ;;
esac

cd $DIR6 2>/dev/null || {
  echo "Não posso acessar o diretório \"$DIR6\"." >&2
  N_DIR=6
}

case $PWD in
( "$DIR6" )
find . -type f -iname "*.log" -exec rm -v {} \;
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-box:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-gdrive:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-mega:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-onedrive:contabilidade/
rclone --verbose --checksum --update --modify-window=1s --tpslimit 5
copy . jafesp-yandex:contabilidade/ ;;
esac

if env test "${N_DIR}" -eq 6
then
echo "Não consegui acessar nenhum diretório. Cópia de segurança NÃO produzida!"
exit ${E_XCD}
else
echo "Cópia de segurança produzida."
fi

fi

exit 0


 = = = = = Fim de transcrição = = = = =


O problema é que sempre está sendo retornada a mensagem "Não consegui
acessar nenhum diretório. Cópia de segurança NÃO produzida!" e o
código de erro (86) (Acesso impossível ao diretório). As cópias de
segurança estão sendo produzidas normalmente.

Os seis diretórios inicialmente configurados se devem ao fato de eu
estar tentando executar o script também no ambiente Windows (uma
espécie de "portabilidade").

Não sei o que está errado com a lógica dos testes.

Alguém pode me ajudar, por favor?

Se tiver uma maneira de reduzir o tamanho do script, também será bem
vinda a sugestão. :)

Obrigado.

Jamenson Ferreira Espindula de Almeida Melo
Jaboatão dos Guararapes, Pernambuco, Brasil
Usuário GNU/Linux nº 166197
https://linuxcounter.net/cert/166197.png

Impressão digital da chave:
234D 1914 4224 7C53 BD13  6855 2AE0 25C0 08A8 6180

_______________________________________________
shell-script-pt mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/shell-script-pt

reply via email to

[Prev in Thread] Current Thread [Next in Thread]