Я написал приведенный ниже скрипт, который перебирает имена в файле csv и копирует определенные файлы на удаленный компьютер:
list_filepath=/home/bella/lists
destination_path=/home/pome/Documents/newfiles
NS_samples_source_path=/home/bella/final/acs/pa/1_ns
th_samples_source_path=/home/bella/final/acs/pa/4_th
ad_samples_source_path=/home/bella/final/new2018/ad
cat $list_filepath/new_list.csv | while read line
do
if [[ $line == AD* ]]
then
echo $line
ssh [email protected] mkdir -p $destination_path/$line
cd $ad_samples_source_path/$line
find $ad_samples_source_path/$line/ -regex '.*\.\(csv\|xml\|gz\)$' -exec scp {} [email protected]:$destination_path/$line \;
elif [[ $line == NS* ]]
then
echo $line
ssh [email protected] "mkdir -p $destination_path/$line"
cd $NS_samples_source/$line
find $NS_samples_source/$line/ -regex '.*\.\(csv\|xml\|gz\)$' -exec scp {} [email protected]:$destination_path/$line \;
else
echo $line
ssh [email protected] "mkdir -p $destination_path/$line"
cd $th_samples_source_path/$line
find $th_samples_source_path/$line/ -regex '.*\.\(csv\|xml\|gz\)$' -exec scp {} [email protected]:$destination_path/$line \;
fi
done
У меня 2 основные проблемы:
Мне приходится несколько раз вводить пароль для пульта, хотя я установил ключ без пароля, как показано ниже:
ssh-keygen
ssh-copy-id -i [email protected]
он по-прежнему запрашивает пароль для каждого копируемого файла.
Скрипты заканчиваются после создания одного каталога со скопированными файлами, похоже, не удается перейти на следующую строку в файле csv.
У кого-нибудь есть идеи, как решить эти проблемы?
Спасибо!
Пункт 1 связан с тем, что на вашем локальном хосте нет агента SSH или удаленный хост не настроен на прием ключей, а пункт 2 связан с тем, что SSH проглотит стандартный ввод, который вы ожидали отправить на read
. Соответствующие часто задаваемые вопросы:
Пункт 2 также был решен путем добавления -n
к команде ssh. Спасибо!
Пожалуйста, проверьте rsync
для вашего решения.
Кроме того, аутентификация SSH с файлами ключей SSH лучше подходит для автоматизации.
По пункту 1 вы были правы. Мне нужно было добавить свой ключ в ssh-агент с помощью:
ssh-add ~/.ssh/id_rsa
. Что касается пункта 2, я все еще пытаюсь понять, как его побороть.