Script to make a rsycn with ssh connection without the necessity to enter the password:
#!/bin/bash
#
# /**
# @file expext_test.sh
# @author Oscar Gomez Fuente <oscargomez@gmail.com>
# @ingroup iThings
# @date 27/01/2015
# @version 1.0.0
# @version 1.0.0
# @section DESCRIPTION
# Library to make a rsync with expect
# 1: [in] tha path to ssh binary
# 2: [in] tha source path file
# 3: [in] tha destination path
# 4: [in] tha log file path
# */
rsync_expect() {
if [ "$#" -ne 4 ]; then
echo "[ERROR] Illegal number of parameters" >> $THE_LOG
return 1
fi
THE_SSH_BIN=$1
THE_SOURCE=$2
THE_DESTINATION=$3
THE_LOG=$4
HOUR_DATE_START=$(date "+%Y-%m-%d %H:%M")
USER=$(whoami)
echo "[EXPECT] Copy files with rsync command from: $THE_SOURCE to $THE_DESTINATION at $HOUR_DATE_START" >> $THE_LOG
echo "[CMD] rsync --rsync-path=/usr/syno/bin/rsync --delete -azvvO -e "$THE_SSH_BIN" $THE_SOURCE $THE_DESTINATION" >> $THE_LOG
#/usr/bin/expect << DONE >> $THE_LOG 2>&1
/usr/bin/expect << DONE >> $THE_LOG 2>&1
set timeout -1
puts "expect: Started rsync"
spawn rsync --rsync-path=/usr/syno/bin/rsync --delete -azvvO -e "$THE_SSH_BIN" $THE_SOURCE $THE_DESTINATION
expect {
-re ".*Are.*.*?es.*?o.*" {
exp_send "yes\r\n"
exp_continue
}
-re ".*assword:.*" {
exp_send "mypassword\r\n"
exp_continue
}
-re ".*otal size is.*" {
interact
}
}
expect eof
puts "expect: Endded rsync"
DONE
HOUR_DATE_END=$(date "+%Y-%m-%d %H:%M")
echo -e "\n[EXPECT] Copy files with rsync command. Username: $USER at $HOUR_DATE_END" >> $THE_LOG
}
#!/bin/bash
#
# /**
# @file expext_test.sh
# @author Oscar Gomez Fuente <oscargomez@gmail.com>
# @ingroup iThings
# @date 27/01/2015
# @version 1.0.0
# @section DESCRIPTION
# Script to check expect library
# */
source expect_lib.sh
DATE_FILE=$(date "+%Y%m%d")
HOUR_DATE_START=$(date "+%Y-%m-%d %H:%M")
SSH_BIN="/usr/bin/ssh"
# paths of the file to make a backup
PATH_LOGS="/home/username/admin_company/backup_logs"
FILE_LOG="$PATH_LOGS/log_test_backup_$DATE_FILE.txt"
FILE="/home/username/admin_company/expect_script/test.tar.gz"
PATH_BACKUP_FILE="root@example.net:/volume/backup_2015/test"
echo "[INFO] Start copy files with rsync command at $HOUR_DATE_START"
echo "[INFO] from: $FILE to $PATH_BACKUP_FILE"
echo "[INFO] Start copy files with rsync command at $HOUR_DATE_START" > $FILE_LOG
echo "[INFO] from: $FILE to $PATH_BACKUP_FILE" >> $FILE_LOG
rsync_expect $SSH_BIN $FILE $PATH_BACKUP_FILE $FILE_LOG
echo "[INFO] End files with rsync command at $HOUR_DATE_START"
echo "[INFO] End files with rsync command at $HOUR_DATE_START" >> $FILE_LOG