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
I don't know how sftp was configurable when this question was asked. Anyway, 6 years later, you can put sftp-commands like PUT into a file and then reference this file in your initial sftp-call. The makes the whole process completely non-interactive and easily configurable:
sftp -i /path/to/ssh-key -b /path/to/sftp-commands.txt root@remote:/root/dropoff
....Where sftp-commands.txt just contains
put test.txt; quit
You said that you are not interested in other tools, but scp
is a much better choice for unattended file transfers. Here is an scp example:
scp test.txt root@remote:/root/dropoff
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!