5

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.

8

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.