Você precisa cuidar de uma coisa ou duas:
- Permissões: talvez você não tenha as permissões certas para ler um arquivo;
- Resposta multilinha: sua localização pode fornecer mais de um arquivo como resultado.
Para encurtar a história, provavelmente o seu problema não é sshpass
.
A partir de agora, damos por certo que você não tem problemas relacionados a permissões.
O que você pode fazer é algo assim:
files="$(sshpass -p "passwd" ssh -l username rhost "find /arch -type f -ctime -40")"
for file in ${files}; do
if sshpass -p "passwd" scp "username@rhost:${file}" /arch; then
printf "SCP Completed\n"
fi
done
Teoricamente, $files
não contém o que você não pode pegar, porque find
imprimirá em stderr
os arquivos (pastas) que você não pode alcançar, então você deve gerenciar isso de uma maneira separada.
Entre todas as opções, você pode mesclar stderr
com stdout
e adicionar uma condição ao seu ciclo for
ou salvar os erros em outro var (ou arquivo) e alterná-los separadamente.