wget 和 scp 作为管道

wget 和 scp 作为管道

我们可以使用 wget 和 scp 作为管道吗?我想从服务器获取文件并将其复制到另一台服务器。我使用了下面的命令,但它不起作用。

wget "$Select_Release_Version_ARTIFACT_URL" | sudo scp [email protected]:/etc/test/

答案1

要在管道中使用wget,您必须确保它写入stdout而不是写入文件,因此请使用wget -O- ....

AFAIK,您不能使用scp从 复制stdin。但是,您可以ssh改为使用,并让它执行类似 的命令cat,该命令从 读取stdin

所以在一起你会得到类似的东西

wget -O- "$Select_Release_Version_ARTIFACT_URL" | ssh [email protected] 'cat > /etc/test/some_file'

请注意,只会下载和传输单个文件/网页。另请注意,用户test需要192.168.94.137创建和写入的权限/etc/test/some_file。使用sudobeforessh不会赋予远程用户test任何额外的权限。它将允许访问本地计算机上 root 的 ssh 密钥,因此如果这是意图,请保留它。

虽然这演示了如何在 上使用管道ssh,但在远程计算机上执行会更容易wget,除非有原因无法做到这一点。

答案2

您可以使用 来代替管道&&。这将确保scp运行时wget退出状态为 0(成功完成)。

wget“$Select_Release_Version_ARTIFACT_URL”&& sudo scp“$Select_Release_Version_ARTIFACT_URL”[电子邮件受保护]:/etc/测试/

其工作原理如下:

wget下载文件,如果成功,它将启动scp.

注意:由于您使用的是,因此每次运行此命令时sudo都会询问用户密码。test

相关内容