我可以使用从解压缩-p cmd传输的数据来使用SCP吗?

时间:2018-04-17 17:26:19

标签: linux pipe unzip scp

我们正在使用:

takeWhile

我想使用scp(安全复制程序)将数据从一台服务器发送到另一台服务器。

我们首先解压缩数据。此外,我们只解压缩数据并将其管道(因此解压缩-p)到服务器,而不是解压缩到本地服务器上的文件然后发送它。这是因为服务器是生产服务器,他们不希望我们在生产服务器上存储可能累积的任何其他文件。

初始概念命令如下所示;

Linux version 2.6.32-696.20.1.el6.x86_64 (gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) ) #1 SMP Fri Jan 12 15:07:59 EST 2018 x86_64 x86_64 x86_64 GNU/Linux

我试图告诉Linux要做的是:

  1. 仅解压缩来自zip文件car.zip的文件car1中的数据。
  2. 将信息传递给scp命令。
  3. 使用scp,将数据复制到以下服务器上的以下目录:

    鹰@ svamn14glbsalh:/ pacelog / AUTOSYS / upload_event_logs /数据/

  4. 我收到了使用错误:

    unzip -p car.zip car1 | scp eagle@svamn14glbsalh:/pacelog/AUTOSYS/upload_event_logs/data/car1
    

    所以我尝试使用以下命令进行不同的操作:

    usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
               [-l limit] [-o ssh_option] [-P port] [-S program]
               [[user@]host1:]file1 ... [[user@]host2:]file2
    

    我在考虑从解压缩命令获取数据流并将输出发送到scp命令......它没有工作。我收到以下错误:

    unzip -p car.zip car1 >  scp eagle@svamn14glbsalh:/pacelog/AUTOSYS/upload_event_logs/data/car1
    

    有人有什么想法吗?我错过了什么?

2 个答案:

答案 0 :(得分:2)

SCP并不适合您的目的。 SCP协议不支持向远程系统发送未知大小的字节流以保存为文件。用于发送文件的SCP协议消息需要首先发送文件的大小,然后是组成文件的字节。使用从管道读取的字节流,您通常不会知道管道将产生多少字节,因此无法发送包含正确大小的SCP协议消息。

(我所知道的SCP协议的最佳在线描述是here。请注意" C"消息。)

SFTP协议可以用于此类事情。据我所知,普通sftp命令行实用程序不支持读取管道并将其存储为远程文件。但是大多数现代编程语言都有SSH / SFTP库(perl,python,ruby,C#,Java,C等)。如果您知道如何使用这些语言之一,那么编写满足您需要的实用程序应该很简单。

如果您坚持使用shell脚本,则可能会欺骗足够的SCP协议来传输文件。这是一个例子:

#!/bin/bash
cmd='cat /etc/group'

size=$($cmd | wc -c)    
{
        echo C0644 $size some-file
        $cmd
        echo -n -e '\000'
} | ssh user@host scp -v -p -t /some/directory

这将在具有权限644的远程系统上的some-file中创建/some/directory。文件内容将是$cmd写入其标准输出的内容。请注意,您正在运行该命令两次,包括所暗示的任何资源消耗和副作用。并且命令必须每次输出相同数量的字节。

答案 1 :(得分:1)

只要您能够在服务器上运行任意命令,就可以使用ssh执行此操作:

unzip -p  car.zip car1 | 
  ssh eagle@svamn14glbsalh 'cat > /pacelog/AUTOSYS/upload_event_logs/data/car1'

如果你没有能力运行任意命令,只有scpscp -t与OpenSSH)的服务器端模式,它理论上仍然可行,但我不知道如何,因为没有记录该模式,请参阅Creating your own activity logging in GAE/P

相关问题