Ожидайте скрипт: поместите файлы через sftp и дождитесь окончания - PullRequest
0 голосов
/ 03 января 2019

Я использую сценарий ожидания для отправки 6 файлов на SFTP-сервер:

file1.TXT
file1.TXT.SEM
file2.TXT
file2.TXT.SEM
file3.TXT
file3.TXT.SEM

Все время я думал, что

expect "sftp>"

ожидал импорта файла идальше сделай еще один положи.По какой-то причине не все файлы загружаются на сервер.Есть ли возможность отправить следующий файл после того, как первый будет полностью отправлен?Или что-то типа того?Я знаю, что есть опция сна, но она не решает проблему, потому что я никогда не знаю, насколько большими будут файлы ...

Это мое ожидание sh:

#!/usr/bin/expect

spawn sftp -oIdentityFile=privateKey.pem -oServerAliveInterval=60 -oServerAliveCountMax=10000 -oTCPKeepAlive=yes username@host
expect "Enter passphrase for key 'privateKey.pem'"
send "password\n"
expect "sftp>"
send "lcd /var/www/html/STIR/upload/03012019/\n"
expect "sftp>"
send "lpwd\n"
expect "sftp>"
send "cd /var/www/html/server/EXPORT/STIR/\n"
expect "sftp>"
send "put file1.TXT\n"
expect "sftp>"
send "put file1.TXT.SEM\n"
expect "sftp>"
send "put file2.TXT\n"
expect "sftp>"
send "put file2.TXT.SEM\n"
expect "sftp>"
send "put file3.TXT\n"
expect "sftp>"
send "put file3.TXT.SEM\n"
expect "sftp>"
send "bye\n"
interact

Iзаметил, что после выпуска скрипта прямо в консоли (./expect.sh) файлы копируются правильно.Проблема только тогда, когда я использую функцию shell_exec () в PHP;И это журнал из консоли, который отображается в браузере:

spawn sftp -oIdentityFile=privateKey.pem -oServerAliveInterval=60 -oServerAliveCountMax=10000 -oTCPKeepAlive=yes username@host
Enter passphrase for key 'privateKey.pem': 
Connected to XXX.XXX.XXX.XXX.
sftp> lcd /var/www/html/STIR/upload/03012019/
sftp> lpwd
Local working directory: /var/www/html/STIR/upload/03012019
sftp> cd /var/www/html/server/EXPORT/STIR/
sftp> put file1.TXT
Uploading file1.TXT to /var/www/html/server/EXPORT/STIR/file1.TXT

file1.TXT   0%    0     0.0KB/s   --:-- ETA
file1.TXT 100%   49KB  49.0KB/s   00:01    
sftp> put file1.TXT.SEM
Uploading file1.TXT.SEM to var/www/html/server/EXPORT/STIR/file1.TXT.SEM

file1.TXT.SEM 100%    0     0.0KB/s   00:00    
sftp> put file2.TXT
Uploading file2.TXT to /var/www/html/server/EXPORT/STIR/file2.TXT

file2.TXT   0%    0     0.0KB/s   --:-- ETA
file2.TXT   2%   32KB  32.0KB/s   00:32 ETA
file2.TXT   5%   64KB  32.0KB/s   00:31 ETA
file2.TXT  11%  128KB  35.2KB/s   00:27 ETA
file2.TXT  14%  160KB  34.9KB/s   00:26 ETA
file2.TXT  20%  224KB  37.8KB/s   00:22 ETA
file2.TXT  26%  288KB  40.4KB/s   00:19 ETA
file2.TXT  32%  352KB  42.8KB/s   00:17 ETA
file2.TXT  35%  384KB  41.7KB/s   00:16 ETA
file2.TXT  41%  448KB  43.9KB/s   00:14 ETA
file2.TXT  47%  512KB  45.9KB/s   00:12 ETAput file2.TXT.SEM

file2.TXT  52%  576KB  47.7KB/s   00:10 ETA
file2.TXT  55%  608KB  46.2KB/s   00:10 ETA
file2.TXT  55%  608KB  41.5KB/s   00:11 ETA
file2.TXT  61%  672KB  43.8KB/s   00:09 ETA
file2.TXT  73%  800KB  52.2KB/s   00:05 ETA
file2.TXT  76%  832KB  50.2KB/s   00:05 ETA
file2.TXT  82%  896KB  51.6KB/s   00:03 ETA
file2.TXT  85%  928KB  49.6KB/s   00:03 ETA
file2.TXT  85%  928KB  44.7KB/s   00:03 ETA
file2.TXT 100% 1087KB  57.2KB/s   00:19    
sftp> put file2.TXT.SEM
Uploading file2.TXT.SEM to var/www/html/server/EXPORT/STIR/file2.TXT.SEM
put file3.TXT

file2.TXT 100%    0     0.0KB/s   00:00    
sftp> put file3.TXT
Uploading file3.TXT to /var/www/html/server/EXPORT/STIR/file3.TXT
put file3.TXT.SEM

file3.TXT   0%    0     0.0KB/s   --:-- ETA
file3.TXT   3%   32KB  32.0KB/s   00:28 ETA
file3.TXT   6%   64KB  32.0KB/s   00:27 ETA
file3.TXT  13%  128KB  35.2KB/s   00:22 ETA
file3.TXT  20%  192KB  38.1KB/s   00:19 ETA
file3.TXT  27%  256KB  40.7KB/s   00:16 ETA
file3.TXT  30%  288KB  39.8KB/s   00:16 ETA
file3.TXT  37%  352KB  42.2KB/s   00:13 ETA
file3.TXT  41%  384KB  41.2KB/s   00:13 ETA
file3.TXT  44%  416KB  40.3KB/s   00:12 ETA
file3.TXT  48%  448KB  39.5KB/s   00:12 ETA

Выглядит так, как будто скрипт пытался выпустить еще один «put» до завершения импорта предыдущего файла, а затем выполняет «пока»Команда прекратить копирование файла, результатом которого является закрытие соединения.

Прошу помощи в решении проблемы.

...