Я выполняю sftp, используя скрипт bash, скрипт запущен и запускает процесс sftp, а также завершает его, но он не копирует полные данные (так как размер моих данных составляет около 600 MB это copyies только 800KB и заканчивается. тот же работает нормально при выполнении вручную.sftp не работает, используя ожидание
Ниже мое содержание сценария
#!/bin/bash
HOST=x.x.x.x
PORT=22
USER=abc
PASSWORD=password
SOURCE_FILE=/nobackup/file.gz
TARGET_DIR=/home
/usr/bin/expect<<!
spawn /usr/bin/sftp -o Port=$PORT [email protected]$HOST
expect "password:"
send "$PASSWORD\r"
expect "sftp>"
send "get $SOURCE_FILE $TARGET_DIR\r"
expect "sftp>"
send "bye\r"
!
Пожалуйста, помогите.
Это вопрос 'expect', а не вопрос' bash'. Ожидание - это язык, основанный на TCL, а не в семье POSIX sh. –
Кроме того, перезапись 'USER' - плохая форма - на многих (но не на всех) системах, вы заметите, что она уже имеет значение, текущее имя пользователя. Часть точки использования имен нижнего регистра для ваших собственных переменных (как рекомендовано в соответствующем стандарте POSIX по адресу http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html - см. Четвертый абзац, содержащийся в помните, что переменные оболочки и среды совместно используют пространство имен) не переписывает системные переменные по ошибке. –