2012-04-29 1 views
0

я пытаюсь получить все файлы с удаленного сервера с командой SFTP через скрипт Linux, мой код:трудности с получением всех файлов из каталога с помощью sftp через скрипт оболочки?

lftp -u ${sourceEnv},${password} sftp://${Host}<<EOF 
    cd $sourceBuildDir/build/64/trace/products/lib/ 
    get * 
    bye 
    EOF 

проблема заключается в том, что я получаю следующий вывод при запуске скрипта: ПОЛУЧАЕТЕ: Access failed: Нет такого файла (*)

Он не распознает знак *, который в основном использовался мной, чтобы указать, что мне нужно получить все файлы из этого каталога, я попытался процитировать его как «». или "", и он все еще не работает. Скрипт работает всякий раз, когда я укажу полное имя файла в команде get, но мне нужно, чтобы он был более общим. Как вы думаете, я должен это реализовать? Спасибо заранее, ребята.

+0

вам нужно '' MGET *. Однако он не будет рекурсивно проверяться, но вам может повезти с 'mget */*, mget */*/* ...', но такая вещь очень специфична для клиентской версии. Удачи. – shellter

+0

Спасибо, он работал отлично. –

ответ

0

Я бы, вероятно, сначала установил пароль без пароля, без ssh, чтобы избежать передачи пароля в командной строке. Пароли, отправленные в командной строке, отображаются в ps, что является проблемой безопасности.

Это также сделает так, что вы можете сделать это с помощью однострочного scp вместо многострочного lftp.

http://stromberg.dnsalias.org/~strombrg/ssh-keys.html

+0

спасибо за быстрый ответ, но у меня возникла проблема с настройкой входа в систему без пароля, потому что это корпоративные машины, и у вас есть проблема, сделав это в одиночной команде scp, потому что мне нужно добраться до нескольких каталогов на этой машине и получить файлы оттуда, поэтому я думал, что открытие соединения sftp будет намного более эффективным. –

Смежные вопросы