Skip to content

Instantly share code, notes, and snippets.

@colindean
Last active November 21, 2023 03:27
Show Gist options
  • Star 34 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save colindean/5213685 to your computer and use it in GitHub Desktop.
Save colindean/5213685 to your computer and use it in GitHub Desktop.
A quick way to transfer a file to the home directory on a Vagrant VM
#!/bin/sh
OPTIONS=`vagrant ssh-config | awk -v ORS=' ' '{print "-o " $1 "=" $2}'`
scp ${OPTIONS} "$@" || echo "Transfer failed. Did you use 'default:' as the target?"
#!/bin/bash
PORT=2222
if [ ${VAGPORT} ]; then
PORT=${VAGPORT}
fi
VAGRANT_GEM=$(dirname `gem which vagrant`)/..
VAGRANT_KEY=${VAGRANT_GEM}/keys/vagrant
chmod 600 ${VAGRANT_KEY}
ssh -i ${VAGRANT_KEY} -p ${PORT} vagrant@localhost
#need to test this:
#OPTIONS=`vagrant ssh-config | awk -v ORS=' ' '{print "-o " $1 "=" $2}'`;
#ssh ${OPTIONS} localhost
@geedew
Copy link

geedew commented Apr 24, 2014

scp ${OPTIONS} FILES_TO_PUSH USER@SERVER:/PLACE_TO_PUT_EM

works.

@Camalot9
Copy link

Camalot9 commented Jun 5, 2014

Thanks @spyderman4g63 that is the easiest solution ever.

@sboday
Copy link

sboday commented Apr 2, 2015

@colindean Thanks for the script.
usage: ./vagrant-scp.sh myfile.txt default:

@beneze
Copy link

beneze commented Jun 18, 2015

Thanks @spyderman4g63. the shared vagrant folder was all I needed

@djadmin
Copy link

djadmin commented Jul 19, 2015

Thank you @spyderman4g63. It works like a charm. Most easiest solution :)

@stuartc
Copy link

stuartc commented Sep 3, 2015

@colindean thanks for this. really useful! learn something new every day!

I added NF to skip blank lines, not sure if would be a problem in the long run but you can avoid a trailing -o = %

... IdentitiesOnly=yes -o LogLevel=FATAL -o = %

Also works nicely with rsync:

OPTIONS=`vagrant ssh-config | awk -v ORS=' ' 'NF {print "-o " $1 "=" $2}'`
rsync -avz -e "ssh ${OPTIONS}" default:/tmp/test.txt ~/Downloads/

@sekoyo
Copy link

sekoyo commented Sep 21, 2015

Thanks @geedew easiest answer I've found

@nkuclassical
Copy link

Thanks @spyderman4g63 extremely easy way!

@pxwise
Copy link

pxwise commented May 10, 2016

@spyderman4g63 👍 thanks!!

@compositor
Copy link

I get Host directive not supported as a command-line option error.
Solution is here https://gist.github.com/geedew/11289350

OPTIONS=`vagrant ssh-config | grep -v '^Host ' | awk -v ORS=' ' '{print "-o " $1 "=" $2}'`

@tangrufus
Copy link

For those who need sudo privilege, try $ vagrant sudo-rsync.

See: https://github.com/TypistTech/vagrant-sudo-rsync

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment