Назад | Перейти на главную страницу

получение списка файлов с защищенного сервера

Я пытаюсь получить список файлов с защищенного сервера, чтобы сравнить их (используя diff) с теми, которые я модифицировал в локальной версии (к сожалению, компания, в которой я работаю, еще не использует Subversion или git)

я легко получаю список файлов с помощью:

find . -mtime -20 | grep "\.php\|\.js\|\.css" > changedfiles.log

мне нужен скрипт, который будет перебирать этот список и безопасно копировать каждый из них (scp или rsync) в локальный каталог, сохраняя относительное имя пути. Я попытался:

for line in `cat changedfiles.log`
do
 DIRPATH=`dirname "$line"`
 `mkdir -p myfiles/$DIRPATH`
 scp user@host:/remotepath/$line myfiles/$line
done

но scp продолжает спрашивать у меня пароль (я не хочу настраивать аутентификацию на основе ключей для scp без пароля)

Мне не разрешено использовать ssh на удаленном сервере, поэтому я не могу просто заархивировать список и загрузить их одной командой

можно ли что-то сделать, чтобы ввести пароль только один раз?

Вместо того, чтобы настраивать ключ без ключевой фразы, создайте ключ, защищенный парольной фразой, и используйте ssh-agent, чтобы гарантировать, что вам нужно вводить его только один раз для каждого задания.

После создания ключей добавьте к скрипту что-то вроде префикса:

# Start a new agent
eval `ssh-agent -s`

# add keys with a two-hour time limit
ssh-add -t 7200 ~/.ssh/id_rsa

На этом этапе вам будет предложено ввести кодовую фразу. После завершения вашего скрипта вы можете автоматически убить ssh-agent, если вы не хотите, чтобы он продолжал работать:

# kill the agent
ssh-agent -k