I'm using key authentication, so password is not an issue. I have a file whose name I know and I simply want to send it to another machine over sftp.
I tried searching but couldn't find this (seemingly simple) question anywhere. Perhaps my Google-fu is simply failing me today.
In short: I'm on my local machine, want to send a file (test.txt) to a remote machine. Authorized keys are already provided. Basically I want to automate these three steps:
sftp root@remote:/root/dropoff
put test.txt
quit
Is there a simple bash command I can use to automate this? The only option I've seen is using a bash script to perform the put/quit and using the -b option to run it. Is there anything cleaner than that? (I'm not interested in using any other applications/tools.)
Thanks!
I know this is an old one, but you can also pass arguments to a command with a Here Document
# The following is called a HERE document
sftp <user>@<remote> << SOMEDELIMITER
put test.txt
... # any commands you need to execute via sftp
quit
SOMEDELIMITER
each additional command will be fed into the command preceeding the <<
and SOMEDELIMTER
can be anything you want it to be.
scp is a great option, however sftp was the only tool I was able to get working when pushing from linux to windows and you're stuck using FreeSSHD in service mode!