我正在使用密钥身份验证,因此密码不是问题。我有一个名字我知道的文件,我只想通过sftp将它发送到另一台机器。
我试过搜索但在任何地方都找不到这个(看似简单的)问题。也许我的谷歌今天只是让我失望。
简而言之:我在我的本地机器上,想要将文件(test.txt)发送到远程机器。已提供授权密钥。基本上我想自动化这三个步骤:
sftp root@remote:/root/dropoff
put test.txt
quit
是否有一个简单的bash命令可用于自动执行此操作?我见过的唯一选择是使用bash脚本执行put / quit并使用-b选项运行它。有没有比这更清洁的东西? (我对使用任何其他应用程序/工具不感兴趣。)
谢谢!
答案 0 :(得分:38)
我知道这是一个旧的,但您也可以将参数传递给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是一个很好的选择,但是sftp是我从linux推送到Windows时能够工作的唯一工具,你在服务模式下使用FreeSSHD了!
答案 1 :(得分:11)
您说您对其他工具不感兴趣,但scp
是无人值守文件传输的更好选择。这是一个scp示例:
scp test.txt root@remote:/root/dropoff
答案 2 :(得分:1)
询问此问题时,我不知道sftp是如何配置的。无论如何,六年后,您可以将sftp命令(例如PUT)放入文件中,然后在您的初始sftp调用中引用该文件。这样一来,整个过程就完全非交互且易于配置:
sftp -i /path/to/ssh-key -b /path/to/sftp-commands.txt root@remote:/root/dropoff
.......其中sftp-commands.txt仅包含
put test.txt; quit