Назад | Перейти на главную страницу

Команды Bash не работают после сценария SFTP

У меня есть следующий сценарий bash

SFTP работает нормально, но эхо «Резервное копирование выполнено» не работает

#!/bin/sh
sftp -b /dev/stdin server <<EOF
  cd /shares/backup/webserver/
  put $bu_PATH$BACKUP_FILE
  quit
  EOF

echo "Backup done"

Кто-нибудь может помочь?

EOF не находится в начале строки. Изменение вашего скрипта на:

#!/bin/sh
sftp -b /dev/stdin server <<EOF
  cd /shares/backup/webserver/
  put $bu_PATH$BACKUP_FILE
  quit
EOF

echo "Backup done"

должно заставить его работать.

Вы можете заменить /dev/stdin server по - поскольку последний означает стандартный ввод.

Возможно, вам удастся немного улучшить процесс, просто повторив длинную строку в команде. Вы бы удалили висящий файл, созданный для хранения этих нескольких строк:

 #! /bin/sh
 echo "cd /shares/backup/webserver/
 put $bu_PATH$BACKUP_FILE
 quit" | sftp -b - server

 if test $? -ne 0
 then
      echo Backup Problem
      exit 1
 fi

 echo 'Backup DONE!'

 exit 0

Обратите внимание, что линия эха продолжается по CR, пока не будет обнаружена другая подходящая цитата.

Это должно быть «эхо» в нижнем регистре вместо «Эхо».