2014-12-22 70 views
1

目标是获取连接到EC2的bash脚本以下载异地备份。我有这个,但是我必须手动从终端运行它们,因为它们在crontab失败时出现错误“Permission denied(publickey)”,所以密钥显然无法添加。连接到EC2的Bash shell cron脚本 - ssh-add失败

我的理解显然有一个漏洞。我一直在修补Google几个小时,但仍然无法正常工作。我在让脚本自己添加密钥方面做错了什么?

#!/bin/sh 
# Add the client key so we can SSH in 
eval "$(ssh-agent)" 
ssh-add ec2-key.pem 

# Download the web file backup. 
# Example file web1_2013-06-30_00-30.tar.gz 
WEBDATE=`date +"%Y-%m-%d"`; 
echo $(date) " - Web Backup >> Running secure copy: scp {user}@{ip}:/var/backup/web1/web1_$WEBDATE* site-files/" 
scp {user}@{ip}:/var/backup/web1/web1_$WEBDATE* site-files/ 
... etc ... 
+0

你认为那个脚本是从哪里运行的?什么工作目录?那个'ec2-key.pem'文件在哪里? –

+0

shell脚本和密钥文件都位于/ data/backups/{client_dir_here}中。所以他们在同一个目录中。 – JamesNZ

+1

脚本中的相对路径不会相对于脚本目录解析,而是解析为从中运行脚本的目录。确保你从'/ data/backups/{client_dir_here}'运行脚本。 –

回答