Skip to content

Commit b128291

Browse files
committed
Uses printf to properly handle and output the password, even with special characters
1 parent 2dcab5d commit b128291

1 file changed

Lines changed: 14 additions & 17 deletions

File tree

entrypoint.sh

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,32 +22,29 @@ RUNAFTER="${INPUT_RUNAFTER/$'\n'/' && '}"
2222

2323
if [ -z "$INPUT_KEY" ]
2424
then # Password
25-
echo "> Exporting Password"
26-
export SSHPASS=$PASS
27-
25+
echo "> Using printf to handle special characters in password"
26+
2827
[[ -z "${INPUT_RUNBEFORE}" ]] && {
2928
echo "> Executing commands before deployment"
30-
sshpass -e ssh -o StrictHostKeyChecking=no -p $INPUT_PORT $INPUT_USER@$INPUT_HOST "$RUNBEFORE"
29+
printf '%s\n' "$INPUT_PASS" | sshpass -p "$(cat)" ssh -o StrictHostKeyChecking=no -p $INPUT_PORT $INPUT_USER@$INPUT_HOST "$RUNBEFORE"
3130
}
3231

33-
3432
echo "> Deploying now"
3533
if [ -z "$INPUT_EXTRA" ]
3634
then
37-
echo "sshpass -p $INPUT_PASS rsync $INPUT_BASESWICHES --progress --stats -e 'ssh -p $INPUT_PORT' $GITHUB_WORKSPACE/$INPUT_LOCAL $INPUT_USER@$INPUT_HOST:$INPUT_REMOTE"
38-
sh -c "sshpass -p $INPUT_PASS rsync $INPUT_BASESWICHES --progress --stats -e 'ssh -p $INPUT_PORT' $GITHUB_WORKSPACE/$INPUT_LOCAL $INPUT_USER@$INPUT_HOST:$INPUT_REMOTE"
35+
echo "Executing rsync with base switches"
36+
printf '%s\n' "$INPUT_PASS" | sh -c "sshpass -p \"$(cat)\" rsync $INPUT_BASESWICHES --progress --stats -e 'ssh -p $INPUT_PORT' $GITHUB_WORKSPACE/$INPUT_LOCAL $INPUT_USER@$INPUT_HOST:$INPUT_REMOTE"
3937
else
4038
EXTRA="$INPUT_EXTRA"
41-
echo "sshpass -p $INPUT_PASS rsync $INPUT_BASESWICHES $EXTRA -e 'ssh -p $INPUT_PORT' $GITHUB_WORKSPACE/$INPUT_LOCAL $INPUT_USER@$INPUT_HOST:$INPUT_REMOTE"
42-
sh -c "sshpass -p $INPUT_PASS rsync $INPUT_BASESWICHES $EXTRA -e 'ssh -p $INPUT_PORT' $GITHUB_WORKSPACE/$INPUT_LOCAL $INPUT_USER@$INPUT_HOST:$INPUT_REMOTE"
39+
echo "Executing rsync with base switches and extra options"
40+
printf '%s\n' "$INPUT_PASS" | sh -c "sshpass -p \"$(cat)\" rsync $INPUT_BASESWICHES $EXTRA -e 'ssh -p $INPUT_PORT' $GITHUB_WORKSPACE/$INPUT_LOCAL $INPUT_USER@$INPUT_HOST:$INPUT_REMOTE"
4341
fi
4442

4543
[[ -z "${INPUT_RUNAFTER}" ]] && {
4644
echo "> Executing commands after deployment"
47-
sshpass -e ssh -o StrictHostKeyChecking=no -p $INPUT_PORT $INPUT_USER@$INPUT_HOST "$RUNAFTER"
45+
printf '%s\n' "$INPUT_PASS" | sshpass -p "$(cat)" ssh -o StrictHostKeyChecking=no -p $INPUT_PORT $INPUT_USER@$INPUT_HOST "$RUNAFTER"
4846
}
49-
50-
47+
5148
else # Private key
5249
pwd
5350
mkdir "/root/.ssh"
@@ -71,19 +68,19 @@ else # Private key
7168
echo "> Deploying now"
7269
if [ -z "$INPUT_EXTRA" ]
7370
then
74-
EXTRA="$INPUT_EXTRA"
75-
sh -c "sshpass -e rsync -avhz --progress --stats -e 'ssh -p $INPUT_PORT' $GITHUB_WORKSPACE/$INPUT_LOCAL $INPUT_USER@$INPUT_HOST:$INPUT_REMOTE"
71+
echo "Executing rsync with base switches"
72+
sh -c "sshpass -e rsync $INPUT_BASESWICHES --progress --stats -e 'ssh -p $INPUT_PORT' $GITHUB_WORKSPACE/$INPUT_LOCAL $INPUT_USER@$INPUT_HOST:$INPUT_REMOTE"
7673
else
77-
sh -c "sshpass -e rsync -avhz --progress $EXTRA --stats -e 'ssh -p $INPUT_PORT' $GITHUB_WORKSPACE/$INPUT_LOCAL $INPUT_USER@$INPUT_HOST:$INPUT_REMOTE"
74+
EXTRA="$INPUT_EXTRA"
75+
echo "Executing rsync with base switches and extra options"
76+
sh -c "sshpass -e rsync $INPUT_BASESWICHES $EXTRA -e 'ssh -p $INPUT_PORT' $GITHUB_WORKSPACE/$INPUT_LOCAL $INPUT_USER@$INPUT_HOST:$INPUT_REMOTE"
7877
fi
7978

80-
8179
[[ -z "${INPUT_RUNAFTER}" ]] && {
8280
echo "> Executing commands after deployment"
8381
sshpass -e ssh -o StrictHostKeyChecking=no -p $INPUT_PORT $INPUT_USER@$INPUT_HOST "$RUNAFTER"
8482
}
8583
fi
8684

87-
8885
echo "#################################################"
8986
echo "Completed ${GITHUB_WORKFLOW}:${GITHUB_ACTION}"

0 commit comments

Comments
 (0)