是否有可能打开sftp连接到远程服务器并从
shell执行同一行中的sftp命令.
像这样的东西:
sftp user@example.com && put /tmp/test.txt /tmp/
其中put是sftp命令.
我的想法是从bash脚本将文件从本地服务器放到远程服务器,在远程服务器上只允许sftp.
解决方法
方法1:
echo "put /tmp/test.txt /tmp/" | sftp user@example.com
方法2:
使用-b选项:
-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*).