Comandos Bash não funcionam após o script SFTP

1

Eu tenho o seguinte script bash

o SFTP funciona bem, mas o eco "backup feito" não funciona

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

echo "Backup done"

Alguém pode ajudar?

    
por Rob 08.08.2011 / 21:39

3 respostas

4

EOF não está no início da linha. Alterando seu script para:

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

echo "Backup done"

deve fazer funcionar.

Você pode substituir /dev/stdin server por - , pois o último significa stdin.

    
por 08.08.2011 / 21:55
0

Deve ser um "eco" minúsculo em vez de "Echo".

    
por 08.08.2011 / 21:43
0

Você pode melhorar um pouco o processo simplesmente fazendo o eco da string longa para o comando. Você eliminaria o arquivo suspenso criado para conter essas poucas linhas:

 #! /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

Observe que a linha de eco continua sobre os CRs até que outra citação correspondente seja descoberta.

    
por 08.08.2011 / 22:31