SFTP-скрипт оболочки bash для копирования файла из источника в место назначения - PullRequest
0 голосов
/ 13 декабря 2018

Я создал один сценарий для копирования локальных файлов в удаленную папку, сценарий отлично работает вне условия if, но когда я заключил его в условие if, команда put не работает и вошел на удаленный сервер по протоколу sftpи когда он существует, он показывает ошибку: команда put не найдена

посмотрите, что происходит после выполнения скрипта

Connected to 10.42.255.209.
sftp> bye
sftp.sh: line 23: put: command not found

Пожалуйста, найдите скрипт ниже.

echo -e;
echo -e "This script is used to copy the files";
sleep 2;

localpath=/home/localpath/sftp
remotepath=/home/destination/sftp/

        if [ -d $localpath ]
         then
           echo -e "Source Path found"
           echo -e "Reading source path"
           echo -e "Uploading the files"
           sleep 2;

                sftp username@10.42.255.209
                put $localpath/* $remotepath

        else

1 Ответ

0 голосов
/ 13 декабря 2018

В простом случае, таком как этот, вы можете использовать scp instad из sftp и указать файлы для копирования в командной строке:

 scp $localpath/* username@10.42.255.209:/$remotepath/

Но если вы предпочитаете выдаватьКоманды sftp, затем sftp может читать команды из своего стандартного ввода, так что вы можете сделать:

  echo "put $localpath/* $remotepath" | sftp username@10.42.255.209

Или вы можете использовать здесь документ для передачи данных как stdin в sftp, что может бытьпроще, если вы хотите запустить несколько команд sftp:

sftp username@10.42.255.209 << EOF
put $localpath/fileA $remotepath/
put $localpath/fileB $remotepath/
EOF

Наконец, вы можете поместить команды sftp в отдельный файл, скажем sftp_commands.txt, и заставить sftp выполнять эти команды, используя свой флаг -b:

 sftp -b ./sftp_commands.txt username@10.42.255.209
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...