Added ssh password file support
This commit is contained in:
parent
a6ab8b686e
commit
408eb170c4
|
@ -3,7 +3,7 @@
|
|||
PROGRAM="osync" # Rsync based two way sync engine with fault tolerance
|
||||
AUTHOR="(C) 2013-2016 by Orsiris de Jong"
|
||||
CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr"
|
||||
PROGRAM_VERSION=1.2-beta
|
||||
PROGRAM_VERSION=1.2-beta2
|
||||
PROGRAM_BUILD=2016101701
|
||||
IS_STABLE=no
|
||||
|
||||
|
@ -116,6 +116,11 @@ function CheckEnvironment {
|
|||
Logger "ssh not present. Cannot start sync." "CRITICAL"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! type sshpass > /dev/null 2>&1 ; then
|
||||
Logger "sshpass not present. Cannot use password authentication." "CRITICAL"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! type rsync > /dev/null 2>&1 ; then
|
||||
|
@ -161,8 +166,8 @@ function CheckCurrentConfigAll {
|
|||
fi
|
||||
|
||||
#TODO(low): Add runtime variable tests (RSYNC_ARGS etc)
|
||||
if [ "$REMOTE_OPERATION" == "yes" ] && [ ! -f "$SSH_RSA_PRIVATE_KEY" ]; then
|
||||
Logger "Cannot find rsa private key [$SSH_RSA_PRIVATE_KEY]. Cannot connect to remote system." "CRITICAL"
|
||||
if [ "$REMOTE_OPERATION" == "yes" ] && ([ ! -f "$SSH_RSA_PRIVATE_KEY" ] && [ ! -f "$SSH_PASSWORD_FILE" ]); then
|
||||
Logger "Cannot find rsa private key [$SSH_RSA_PRIVATE_KEY] nor password file [$SSH_PASSWORD_FILE]. No authentication method provided." "CRITICAL"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
@ -1658,8 +1663,11 @@ function Init {
|
|||
fi
|
||||
|
||||
if [ "$SSH_RSA_PRIVATE_KEY" == "" ]; then
|
||||
if [ ! -f "$SSH_PASSWORD_FILE" ]; then
|
||||
# Assume that there might exist a standard rsa key
|
||||
SSH_RSA_PRIVATE_KEY=~/.ssh/id_rsa
|
||||
fi
|
||||
fi
|
||||
|
||||
# remove everything before '@'
|
||||
hosturiandpath=${uri#*@}
|
||||
|
@ -1689,7 +1697,7 @@ function Init {
|
|||
INITIATOR_SYNC_DIR="${INITIATOR_SYNC_DIR/#\~/$HOME}"
|
||||
TARGET_SYNC_DIR="${TARGET_SYNC_DIR/#\~/$HOME}"
|
||||
SSH_RSA_PRIVATE_KEY="${SSH_RSA_PRIVATE_KEY/#\~/$HOME}"
|
||||
|
||||
SSH_PASSWORD_FILE="${SSH_PASSWORD_FILE/#\~/$HOME}"
|
||||
|
||||
## Replica format
|
||||
## Why the f*** does bash not have simple objects ?
|
||||
|
@ -1827,6 +1835,7 @@ function Usage {
|
|||
echo "--initiator=\"\" Master replica path. Will contain state and backup directory (is mandatory)"
|
||||
echo "--target=\"\" Local or remote target replica path. Can be a ssh uri like ssh://user@host.com:22//path/to/target/replica (is mandatory)"
|
||||
echo "--rsakey=\"\" Alternative path to rsa private key for ssh connection to target replica"
|
||||
echo "--password-file=\"\" If no rsa private key is used for ssh authentication, a password file can be used"
|
||||
echo "--instance-id=\"\" Optional sync task name to identify this synchronization task when using multiple targets"
|
||||
echo ""
|
||||
echo "Additionaly, you may set most osync options at runtime. eg:"
|
||||
|
@ -1956,6 +1965,10 @@ for i in "$@"; do
|
|||
SSH_RSA_PRIVATE_KEY=${i##*=}
|
||||
opts=$opts" --rsakey=\"$SSH_RSA_PRIVATE_KEY\""
|
||||
;;
|
||||
--password-file=*)
|
||||
SSH_PASSWORD_FILE=${i##*=}
|
||||
opts=$opts" --password-file\"$SSH_PASSWORD_FILE\""
|
||||
;;
|
||||
--instance-id=*)
|
||||
INSTANCE_ID=${i##*=}
|
||||
opts=$opts" --instance-id=\"$INSTANCE_ID\""
|
||||
|
@ -2041,9 +2054,9 @@ opts="${opts# *}"
|
|||
|
||||
GetLocalOS
|
||||
InitLocalOSSettings
|
||||
CheckEnvironment
|
||||
PreInit
|
||||
Init
|
||||
CheckEnvironment
|
||||
PostInit
|
||||
if [ $_QUICK_SYNC -lt 2 ]; then
|
||||
CheckCurrentConfig
|
||||
|
|
Loading…
Reference in New Issue