Do you often use the SCP command to transfer files from your computer to a remote server? This little code snippet may come to good use for you:
function push {
if [[ $1 == "config" ]]; then
if [[ $# == 1 ]]; then
echo "Usage: push config username hostname destinationpath optionalkeyfile"
echo "Example: push config root 1.2.3.4 /root/ ~/Documents/SSHKeys/server.key"
elif [[ $# == 2 ]] || [[ $# == 3 ]]; then
echo "Too few arguments were specified, run 'push config' for help."
elif [[ $# == 4 ]]; then
PUSH_ISCONFIGURED=1
PUSH_USERNAME=$2
PUSH_HOST=$3
PUSH_DESTINATION=$4
elif [[ $# == 5 ]]; then
PUSH_ISCONFIGURED=1
PUSH_USERNAME=$2
PUSH_HOST=$3
PUSH_DESTINATION=$4
PUSH_KEYFILE=$5
fi
elif [[ $# == 0 ]]; then
if [[ $PUSH_ISCONFIGURED == 1 ]] && [[ ! -z $PUSH_KEYFILE ]]; then
scp -ri $PUSH_KEYFILE . $PUSH_USERNAME@$PUSH_HOST:$PUSH_DESTINATION
elif [[ $PUSH_ISCONFIGURED == 1 ]] && [[ -z $PUSH_KEYFILE ]]; then
scp -r . $PUSH_USERNAME@$PUSH_HOST:$PUSH_DESTINATION
elif [[ -z $PUSH_ISCONFIGURED ]]; then
echo "Usage: push config username hostname destinationpath optionalkeyfile"
echo "Example: push config root 1.2.3.4 /root/ ~/Documents/SSHKeys/server.key"
fi
fi
}
All I have to do now to upload files is using push config
to setup connection parameters, and push
in my code directory to quickly push files.
A nice little time-saving code snippet if you use the scp
command often.
You can put it in your ~/.zshrc
file if you use ZSH, or in ~/.bashrc
if you use Bash as your shell.