Ты должен позаботиться об одной или двух вещах:
Короче говоря, вероятно, ваша проблема не sshpass
.
Теперь мы считаем само собой разумеющимся, что у вас нет проблем, связанных с разрешениями.
То, что вы можете сделать, примерно так:
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
Теоретически, $files
не будет содержать то, что вы не можете захватить, потому что find
будет печатать в stderr
файлы (папки ), до которых вы не можете добраться, поэтому вы должны управлять этим в отдельном способ.
Среди всех вариантов вы можете объединить stderr
с stdout
и добавить условие в свой цикл for
или сохранить ошибки в другой переменной (или файле )и циклически выполнять их отдельно.