Не удалось избежать многократного ввода пароля с помощью scp и зацикливание не работает - PullRequest
0 голосов
/ 29 мая 2019

Я написал следующий скрипт, который просматривает имена в 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 pome@203.177.32.11 mkdir -p $destination_path/$line
     cd $ad_samples_source_path/$line
     find $ad_samples_source_path/$line/ -regex '.*\.\(csv\|xml\|gz\)$' -exec scp {} pome@203.177.32.11:$destination_path/$line \;

  elif [[ $line == NS* ]]
     then
     echo $line
     ssh pome@203.177.32.11 "mkdir -p $destination_path/$line"
     cd $NS_samples_source/$line
     find $NS_samples_source/$line/ -regex '.*\.\(csv\|xml\|gz\)$' -exec scp {} pome@203.177.32.11:$destination_path/$line \;

  else
     echo $line
     ssh pome@203.177.32.11 "mkdir -p $destination_path/$line"
     cd $th_samples_source_path/$line
     find $th_samples_source_path/$line/ -regex '.*\.\(csv\|xml\|gz\)$' -exec scp {} pome@203.177.32.11:$destination_path/$line \;

  fi

done

У меня есть 2 основные проблемы:

  1. Я должен несколько раз ввести пароль для пульта, хотя я установил ключ без пароля, как показано ниже:

    ssh-keygen
    ssh-copy-id -i pome@203.177.32.11
    

    он по-прежнему запрашивает пароль для каждого копируемого файла.

  2. Сценарии заканчиваются после создания одного каталога со скопированными файлами, похоже, не удается перейти к следующей строке в файле CSV.

Кто-нибудь знает, как решить эти проблемы?

Спасибо!

Ответы [ 2 ]

1 голос
/ 29 мая 2019

Точка 1 заключается в том, что на локальном хосте нет агента SSH или удаленный хост не настроен на прием ключей, а точка 2 - потому что SSH проглотит стандартный ввод, который вы ожидали отправить на read.Соответствующие записи FAQ:

0 голосов
/ 29 мая 2019

Пожалуйста, проверьте rsync для вашего решения.

Также для автоматизации лучше использовать SSH-аутентификацию с файлами ключей SSH.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...