Bash SFTP ожидают, что сценарий не продолжается после получения нескольких файлов - PullRequest
0 голосов
/ 24 декабря 2018

Мне нужно прописать путь к FTP-файлам с удаленного сервера.Я не могу использовать ключи, поэтому логин должен быть «интерактивным».Я чувствовал, что ожидание - путь.

У меня есть следующий код ожидания в скрипте bash:

expect <<EOD
    spawn sftp $sftp_user@$sftp_svr
    expect "password:"
    send "$sftp_pw\r"
    expect "sftp> "
    send "mget $getfile_path$getfile_name $savefile_path\r"
    expect "sftp> "
    send "bye\r"
EOD

Фрагмент работает нормально, когда он получает только один файл.Тем не менее, если мне нужно получить более одного файла, окончательное «ожидание sftp>» никогда не выполняется.Работает:

[ed@svr1 ~]$ ./sftp_expect.sh
spawn sftp user@svr2
user@svr2's password:
Connected to svr2.
sftp> mget /data/user/upload/lastcheck1.txt /home/ed/report_received/
Fetching /data/user/upload/lastcheck1.txt to /home/ed/report_received/lastcheck1.txt
/data/user/upload/lastcheck1.txt                                                   100%   56    26.9KB/s   00:00
sftp>
[ed@svr1 ~]$

Не работает:

[ed@svr1 ~]$ ./sftp_expect.sh
spawn sftp user@svr2
user@svr2's password:
Connected to svr2.
sftp> mget /data/user/upload/lastcheck*.txt /home/ed/report_received/
Fetching /data/user/upload/lastcheck1.txt to /home/ed/report_received/lastcheck1.txt
/data/user/upload/lastcheck1.txt                                                   100%   56    26.5KB/s   00:00
Fetching /data/user/upload/lastcheck2.txt to /home/ed/report_received/lastcheck2.txt
/data/hf_user/upload/lastcheck2.txt                                                   100%   56    19.3KB/s   00:00
Fetching /data/user/upload/lastcheck_svr2.txt to /home/ed/report_received/lastcheck_svr2.txt
/data/user/upload/lastcheck_svr2.txt                                            100%   56    31.9KB/s   00:00
sftp>
^C
[ed@svr1 ~]$

Сценарий получает файлы, ожидает получает "то, что ожидает", но не продолжает:

expect: does "mget /data/user/upload/lastcheck*.txt /home/ed/report_received/\r\nFetching /data/user/upload/lastcheck1.txt to /home/ed/report_received/lastcheck1.txt\r\n\r/data/user/upload/lastcheck1.txt                                                                                                                                                                       0%    0     0.0KB/s   --:-- ETA\r/data/user/upload/lastcheck1.txt                                                                                                                                                                     100%   56    24.5KB/s   00:00    \r\nFetching /data/user/upload/lastcheck2.txt to /home/ed/report_received/lastcheck2.txt\r\n\r/data/user/upload/lastcheck2.txt                                                                                                                                                                       0%    0     0.0KB/s   --:-- ETA\r/data/user/upload/lastcheck2.txt                                                                                                                                                                     100%   56    38.3KB/s   00:00    \r\nFetching /data/user/upload/lastcheck_svr2.txt to /home/ed/report_received/lastcheck_svr2.txt\r\n\r/data/user/upload/lastcheck_svr2.txt                                                                                                                                                                0%    0     0.0KB/s   --:-- ETA" (spawn_id exp6) match glob pattern "sftp> "? no
/data/user/upload/lastcheck_svr2.txt                                                                                                                                                              100%   56    25.7KB/s   00:00

expect: does "mget /data/user/upload/lastcheck*.txt /home/ed/report_received/\r\nFetching /data/user/upload/lastcheck1.txt to /home/ed/report_received/lastcheck1.txt\r\n\r/data/user/upload/lastcheck1.txt                                                                                                                                                                       0%    0     0.0KB/s   --:-- ETA\r/data/user/upload/lastcheck1.txt                                                                                                                                                                     100%   56    24.5KB/s   00:00    \r\nFetching /data/user/upload/lastcheck2.txt to /home/ed/report_received/lastcheck2.txt\r\n\r/data/user/upload/lastcheck2.txt                                                                                                                                                                       0%    0     0.0KB/s   --:-- ETA\r/data/user/upload/lastcheck2.txt                                                                                                                                                                     100%   56    38.3KB/s   00:00    \r\nFetching /data/user/upload/lastcheck_svr2.txt to /home/ed/report_received/lastcheck_svr2.txt\r\n\r/data/user/upload/lastcheck_svr2.txt                                                                                                                                                                0%    0     0.0KB/s   --:-- ETA\r/data/user/upload/lastcheck_svr2.txt                                                                                                                                                              100%   56    25.7KB/s   00:00    \r\n" (spawn_id exp6) match glob pattern "sftp> "? no
sftp>
expect: does "mget /data/user/upload/lastcheck*.txt /home/ed/report_received/\r\nFetching /data/user/upload/lastcheck1.txt to /home/ed/report_received/lastcheck1.txt\r\n\r/data/user/upload/lastcheck1.txt                                                                                                                                                                       0%    0     0.0KB/s   --:-- ETA\r/data/user/upload/lastcheck1.txt                                                                                                                                                                     100%   56    24.5KB/s   00:00    \r\nFetching /data/user/upload/lastcheck2.txt to /home/ed/report_received/lastcheck2.txt\r\n\r/data/user/upload/lastcheck2.txt                                                                                                                                                                       0%    0     0.0KB/s   --:-- ETA\r/data/user/upload/lastcheck2.txt                                                                                                                                                                     100%   56    38.3KB/s   00:00    \r\nFetching /data/user/upload/lastcheck_svr2.txt to /home/ed/report_received/lastcheck_svr2.txt\r\n\r/data/user/upload/lastcheck_svr2.txt                                                                                                                                                                0%    0     0.0KB/s   --:-- ETA\r/data/user/upload/lastcheck_svr2.txt                                                                                                                                                              100%   56    25.7KB/s   00:00    \r\nsftp> " (spawn_id exp6) match glob pattern "sftp> "? yes
expect: set expect_out(0,string) "sftp> "
expect: set expect_out(spawn_id) "exp6"
expect: set expect_out(buffer) "mget /data/user/upload/lastcheck*.txt /home/ed/report_received/\r\nFetching /data/user/upload/lastcheck1.txt to /home/ed/report_received/lastcheck1.txt\r\n\r/data/user/upload/lastcheck1.txt                                                                                                                                                                       0%    0     0.0KB/s   --:-- ETA\r/data/user/upload/lastcheck1.txt                                                                                                                                                                     100%   56    24.5KB/s   00:00    \r\nFetching /data/user/upload/lastcheck2.txt to /home/ed/report_received/lastcheck2.txt\r\n\r/data/user/upload/lastcheck2.txt                                                                                                                                                                       0%    0     0.0KB/s   --:-- ETA\r/data/user/upload/lastcheck2.txt                                                                                                                                                                     100%   56    38.3KB/s   00:00    \r\nFetching /data/user/upload/lastcheck_svr2.txt to /home/ed/report_received/lastcheck_svr2.txt\r\n\r/data/user/upload/lastcheck_svr2.txt                                                                                                                                                                0%    0     0.0KB/s   --:-- ETA\r/data/user/upload/lastcheck_svr2.txt                                                                                                                                                              100%   56    25.7KB/s   00:00    \r\nsftp> "
send: sending "bye\r" to { exp6 }

^C
[ed@svr2 ~]$

Если у кого-то есть идея, что удерживает ожидаемую фигуру, я был бы очень признателен.

Ред.

...