Невозможно передать все файлы через sftp на удаленном сервере, используя ожидаемый - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь mput всех файлов, представленных в каталоге: /Test/XML/, на удаленный sftp-сервер с помощью утилиты expect.

У меня около 320 файлов в каталоге: /Test/XML/.

Размер каждого файла составляет около 0,1 МБ.

Ошибок не наблюдается.

Вот мой код:

cd /Test/XML/

/usr/bin/expect <<EOF
spawn /usr/bin/sftp ${user_name}@${HOSTNAME}
expect "password:"
send "${passwd}\r"
expect "sftp>"
send "cd /test\r"
expect "sftp>"
send "mkdir XML\r"
expect "sftp>"
send "cd /test/XML\r"
expect "sftp>"
send "mput *\r"
expect "sftp>"
send "bye\r"
EOF 

Но проблема здесь в том, что mput * передает только 4 файла вместо передачи всех 320 файлов. Не уверен, почему не удается передать все 320 файлов на удаленный сервер.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 17 ноября 2018

Спасибо @ThiruShetty за подсказку использования set timeout -1 в утилите expect.

На самом деле у меня было много файлов (~ 320-350) для передачи (sftp) на удаленный сервер. При обычном выполнении sftp с использованием утилиты expect он мог передавать только несколько файлов, но не все из них, которые я хотел.

После вставки set timeout -1 внутрь expect это решило проблему тайм-аута.

Вот окончательный код:

cd /Test/XML/

/usr/bin/expect <<EOF
set timeout -1
spawn /usr/bin/sftp ${user_name}@${HOSTNAME}
expect "password:"
send "${passwd}\r"
expect "sftp>"
send "cd /test\r"
expect "sftp>"
send "mkdir XML\r"
expect "sftp>"
send "cd /test/XML\r"
expect "sftp>"
send "mput *\r"
expect "sftp>"
send "bye\r"
EOF
...