2013-02-01 3 views
1

crontab을 통해 실행될 때 rsync 명령이 실행되지 않는 특이한 문제가 있습니다.
다음은 코드입니다 :호스트 키 확인에 실패했습니다 [rsync : 연결이 예기치 않게 닫힘]

#!/bin/sh -x 
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/mysql/bin:/opt/android-sdk-linux/tools:/opt/android-sdk-linux/platform-tools:~/usr/lib/jvm/jdk-6/bin 
/bin/sh /etc/profile 
MyUSER="root"  # USERNAME 
MyPASS="password"   # PASSWORD 
MyHOST="localhost" # Hostname 
Password="" #Linux Password 

MYSQL="$(which mysql)" 
if [ -z "$MYSQL" ]; then 
echo "Error: MYSQL not found" 
exit 1 
fi 
MYSQLADMIN="$(which mysqladmin)" 
if [ -z "$MYSQLADMIN" ]; then 
    echo "Error: MYSQLADMIN not found" 
    exit 1 
fi 
CHOWN="$(which chown)" 
if [ -z "$CHOWN" ]; then 
    echo "Error: CHOWN not found" 
    exit 1 
fi 
CHMOD="$(which chmod)" 
if [ -z "$CHMOD" ]; then 
    echo "Error: CHMOD not found" 
    exit 1 
fi 

GZIP="$(which gzip)" 
if [ -z "$GZIP" ]; then 
    echo "Error: GZIP not found" 
    exit 1 
fi 
CP="$(which cp)" 
if [ -z "$CP" ]; then 
    echo "Error: CP not found" 
    exit 1 
fi 
MV="$(which mv)" 
if [ -z "$MV" ]; then 
    echo "Error: MV not found" 
    exit 1 
fi 
RM="$(which rm)" 
if [ -z "$RM" ]; then 
    echo "Error: RM not found" 
    exit 1 
fi 
RSYNC="$(which rsync)" 
if [ -z "$RSYNC" ]; then 
    echo "Error: RSYNC not found" 
    exit 1 
fi 

MYSQLBINLOG="$(which mysqlbinlog)" 
if [ -z "$MYSQLBINLOG" ]; then 
    echo "Error: MYSQLBINLOG not found" 
    exit 1 
fi 
# Get data in dd-mm-yyyy format 
NOW="$(date +"%d-%m-%Y-%T")" 

DEST="/home/db-backup" 
mkdir $DEST/Increment_backup.$NOW 
LATEST=$DEST/Increment_backup.$NOW 
$MYSQLADMIN -u$MyUSER -p$MyPASS flush-logs 
newestlog=`ls -d /usr/local/mysql/data/mysql-bin.?????? | sed 's/^.*\.//' | sort -g | tail -n 1` 
echo $newestlog 
for file in `ls /usr/local/mysql/data/mysql-bin.??????` 
do 
     if [ "/usr/local/mysql/data/mysql-bin.$newestlog" != "$file" ]; then 
    echo $file 
    echo $Password | sudo -S $CHMOD 0777 $file 
     #sudo $MYSQLBINLOG $file>$file.$NOW.sql 
    $CP "$file" $LATEST 
    #$RM "$file.$NOW.sql" 
    #$MV $file.sql.gz /$LATEST 
     fi 
done 
for file1 in `ls $LATEST/mysql-bin.??????` 
do 
$MYSQLBINLOG $file1>$file1.$NOW.sql 
$GZIP -9 "$file1.$NOW.sql"  
$RM "$file1" 
done 
$RSYNC -v -e ssh $LATEST [email protected]:/home/rsync-backup/ 
#FILE=$LATEST/"mysql-bin.??????" 
#$MYSQLBINLOG $FILE>$FILE.$NOW.sql 
#$GZIP -f "$FILE.$NOW.sql" 
pwd 

에 Rsync 코드를 수동으로 실행할 때 발생하지만 crontab을 통해 실행하면 실패합니다. 명령의 나머지 부분은 정상적으로 작동합니다. 로그에서 나는이 정보를 얻었습니다.

Host key verification failed.^M 
rsync: connection unexpectedly closed (0 bytes received so far) [sender] 
rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.6] 

답변

1

이러한 종류의 오류는 대개 환경의 차이로 인해 발생합니다. 좋은 문제 해결 단계는 프로그램 시작시 "env"를 실행하고 cron 및 non-cron 버전을 비교하는 것입니다.

또한 "sh -x"로 명령을 실행하면 어떤 변수가 제대로 설정되지 않았는지 식별하는 데 도움이되는 모든 확장이 표시됩니다.

0

HOME 디렉토리가 암호화되어있을 수 있습니다.

사용자가 로그온 한 경우, 작동하지만 크론이 때, 심지어는 동일한 사용자를 실행의 IT이 때문에 ssh를 위해 처음으로 인증 문제로 기본적으로 당신의 $HOME/.ssh 디렉토리

2

에 액세스 할 수 없습니다 . 호스트가 known_hosts에 수동으로 추가되었는지 확인하거나 스크립트에서 프롬프트를 예상하면 작동해야합니다.

The authenticity of host '[IP]:20022 ([IP]:22)' can't be established. 
RSA key fingerprint is bc:87:52:cf:ac:3e:67:74:1b:e1:0b:e3:e2:06:d8:21. 
Are you sure you want to continue connecting (yes/no)? yes 
Warning: Permanently added '[IP]:22' (RSA) to the list of known hosts 
관련 문제