How to open sftp connection and execute sftp command in the same shell command [closed]

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

Something like this:

sftp [email protected] && 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 [email protected]

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*).