我想使用 SFTP 获取远程文件,但选择 stdout 作为本地目标。我尝试了下面明显的代码,但失败了:
echo 'get <Remote file> /dev/stdout' | sftp <User>@<Host>:
sftp> <Remote file> /dev/stdout
Fetching <Remote file> to /dev/stdout
<Remote file> 100% 28KB 57.6KB/s 00:00
ftruncate "/dev/stdout": Invalid argument
Couldn't write to "/dev/stdout": Illegal seek
这样做的原因是我想下载/etc/passwd
并/etc/group
查找数字 uids/gids 以供以后chown
和chgrp
命令使用,以解决此问题。但是,如果我可以将此类文件下载到变量而不是临时本地文件,那就更好了。
一种可能性是创建一个本地命名管道,并将远程文件保存到其中,但我想找到一个不太复杂的解决方案。另一种方法是额外的 SSH 会话来获取此类数据,但由于我们使用定时令牌 (TOTP),这意味着每个远程主机需要额外 30 秒...
SCP 在我们的网络中是被禁止的,所以很遗憾,它不是一个选项。
SFTP 可以get
“保存”到标准输出吗?
谢谢!