Я сделал пароль 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 $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.