我使用的是密钥身份验证,所以密码不是问题。我有一个我知道其名称的文件,我只是想通过sftp将其发送到另一台机器。
我试着搜索,但在任何地方都找不到这个(看似简单的)问题。也许我的Google-fu今天只是让我失望了。
简而言之:我在我的本地机器上,想要发送一个文件(test.txt)到远程机器。已提供授权密钥。基本上,我想自动执行这三个步骤:
sftp root@remote:/root/dropoff
put test.txt
quit有没有一个简单的bash命令可以让我实现自动化?我见过的惟一选项是使用bash脚本执行put/quit,并使用-b选项运行它。还有比这更干净的吗?(我对使用任何其他应用程序/工具不感兴趣。)
谢谢!
发布于 2012-08-01 00:26:18
您说过您对其他工具不感兴趣,但scp是无人值守文件传输的更好选择。下面是一个scp示例:
scp test.txt root@remote:/root/dropoff发布于 2013-07-13 06:51:59
我知道这是一个旧版本,但是您也可以使用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每个额外的命令都将被输入到<<之前的命令中,SOMEDELIMTER可以是您想要的任何值。
scp是一个很好的选择,但是当我从linux推送到windows时,sftp是我唯一能使用的工具,而你却在服务模式下使用FreeSSHD!
发布于 2018-08-10 21:12:19
当这个问题被问到时,我不知道sftp是如何配置的。无论如何,6年后,您可以将像put这样的sftp命令放入一个文件中,然后在最初的sftp调用中引用该文件。这使得整个过程完全非交互式,并且可以轻松配置:
sftp -i /path/to/ssh-key -b /path/to/sftp-commands.txt root@remote:/root/dropoff....Where sftp-commands.txt仅包含
put test.txt; quithttps://stackoverflow.com/questions/11744547
复制相似问题