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

Команды загрузки sftp без пароля не выполняются с использованием сценария оболочки

Я сделал пароль sftp меньше, используя параметр ssh -t key_gen, и запрос пароля больше не появляется, но когда я пишу команды для выполнения в сеансе sftp, как показано ниже, в сценарии оболочки и выполняю его, они не выполняются вместо этого я просто получаю подсказку sftp

#!/bin/sh

username=$1
ipaddr=$2
external_path=$3
extension=$4

sftp $username@$ipaddr
cd $external_path
get *.$extension
exit 

Result

sftp>

и ничего больше

Не могли бы вы рассказать, как этого можно достичь? Также на моей машине есть служебная программа expect, но sftp не поддерживает параметр -b.

Спасибо, Приянка

sftp username @ ipaddress заставит sftp войти в интерактивный режим. (Вот почему вы получаете приглашение в стиле sftp)

страница руководства sftp

Поскольку вы используете возможность программирования sftp, вы хотите использовать его в неинтерактивном режиме.

sftp $username@$ipaddr:$external_path/filename
#this would work except you need your wildcard * to be expanded

echo "get *" | sftp $username@$ipaddr:$external_path/
#This will work since you are piping the command get * into sftp. 
#* gets expanded by sftp and matching files in $external_path
#Are transfered to your current directory.