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