2015-02-10 5 views
0

У меня есть этот скрипт, но мне нужно было ожидать, что пакет будет работать, мы можем каким-либо другим способом загрузить файл через SFTP с ожиданием, потому что нашей команде безопасности не разрешено устанавливать пакет ожидания над производственным сервером.Как написать скрипт SFTP без ожидания?

мой код загрузки SFTP.

/usr/bin/expect<<EOD 
spawn /usr/bin/sftp -o Port=$PORT [email protected]$HOST 
expect "password:" 
send "$PASSWORD\r" 
expect "sftp>" 
send "put $SOURCE_FILE $TARGET_DIR\r" 
expect "sftp>" 
send "bye\r" 
EOD 

Может ли кто-нибудь помочь мне преобразовать это, не используя ожидание.

наш сервер работы SFTP Превед пароль

ответ

0

OpenSSH sftp клиент не имеет встроенную поддержку для ввода пароля для автоматизации.

Таким образом, вы должны обойти, что как-то:

  • поддельной пользовательский ввод с помощью expect или sshpass
  • использовать открытый ключ аутентификации
  • использовать любой другой (менее распространенный) беспарольный метод аутентификации
0

Хорошим решением является использование команды lftp, которая позволяет предоставить пароль и runni ng sftp только в одной командной строке:

lftp sftp://$HOST -u username,password -e "put $SOURCE_FILE $TARGET_DIR;bye" 
+0

Если это не стандартная утилита, вы должны предоставить ссылку на нее. – miken32

+0

Конечно: это стандартная утилита Unix. Он также доступен на платформе Cygwin на платформе Windows. –

+0

Хорошо, это не мои коробки RHEL или OS X, и я никогда не слышал об этом, поэтому подумал, что стоит упомянуть. – miken32