Is there any possibility for opening sftp connection to remote server and execute sftp command in same line from shell.

Something like this:

sftp user@example.com && put /tmp/test.txt /tmp/

where put is sftp command.

My idea is to put file from local server to the remote server from bash script where only sftp is allowed on the remote server.


Approach 1:

echo "put /tmp/test.txt /tmp/" | sftp user@example.com

Approach 2:

Use the -b option:

-b batchfile

Batch mode reads a series of commands from an input batchfile instead of stdin. Since it lacks user interaction it should be used in conjunction with non-interactive authentication. A batchfile of -' may be used to indicate standard input. sftp will abort if any of the following commands fail: get, put, rename, ln, rm, mkdir, chdir, ls, lchdir, chmod, chown, chgrp, lpwd, df, symlink, and lmkdir. Termination on error can be suppressed on a command by command basis by prefixing the command with a-' character (for example, -rm /tmp/blah*).

  • The point here being that && is evaluated by the shell, and not merely a generic continuation. This gets the sftp command into sftp. – Falcon Momot Nov 19 '14 at 2:01
  • @FalconMomot: Sorry, I really dont' get what you want to say. – Sven Nov 19 '14 at 2:09
  • Just saying why && isn't the right thing to use. – Falcon Momot Nov 19 '14 at 2:25
  • I typed && just like an example (I know that put is not a shell command), I think only @Sven understands me. Thank you @Sven. – ibedelovski Nov 19 '14 at 8:23

Not the answer you're looking for? Browse other questions tagged or ask your own question.