Ожидается, что скрипт для автоматизации загрузки по FTP отправляет поврежденный файл на сервер - PullRequest
0 голосов
/ 05 ноября 2018
#!/usr/local/bin/expect -f

spawn ftp $HOSTNAME 
expect "Name (sj105ut01:laureen):"
send "laureen\r"
expect "Password:"
send "password\r"
expect "ftp>"
send "cd path\r"
expect "ftp>"
send "put local_file.t.Z remote_file.t.Z"
expect "ftp>"
send "bye\n"
#interact

Когда я пытаюсь разархивировать файл на сервере, используя (tar xzf), я получаю следующую ошибку:

tar: неожиданный EOF в архивном tar: неожиданный EOF в архивном tar: Ошибка не устраняется: выход

Каковы могут быть причины этого? и есть ли способ это исправить?

Когда он начинает выполнять команду put, я получаю это на экране:

150 Открытие соединения для передачи данных в двоичном режиме для remote_file.t.Z

и тогда я возвращаю снаряд. Я полагаю, что должен увидеть что-то, что указывает на то, что передача завершена, но я нет. что-то вроде:

226 Перевод завершен 147742720 байт, отправленных за 27,3 с (5420,58 Кбайт / с)

Размер файла: локальный: 142M , а удаленный: 56M !

спасибо

1 Ответ

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

Если загрузка вашего файла занимает более 10 секунд, вы превышаете ожидаемое время ожидания по умолчанию: ожидая увидеть приглашение «ftp>» после отправки команды «put», через (по умолчанию) 10 секунд ожидайте сдается раз и продолжается следующей командой (пока).

Попробуйте это:

set timeout -1
send "put local_file.t.Z remote_file.t.Z"

Кроме того, после того, как вы «отправили сообщение», вам следует дождаться завершения соединения:

send "bye\r"
expect eof
...