curl bails no download no cygwin, mas não no os x

curl bails no download no cygwin, mas não no os x

Estou tentando baixar uma cópia de um banco de dados postgresql do Amazon S3 no cygwin. Mas produz zeros em geral, gerando um arquivo inútil. Este é o meu comando curl:

 curl `heroku.bat pgbackups:url` -o latest.dump --verbose

que produz: * STATE: INIT => CONNECT handle 0x60002de60; linha 1011 (conexão #-5000) * O nome do host NÃO foi encontrado no cache DNS * Tentando 54.231.1.232... * Adicionando identificador: conn: 0x600069f80 * Adicionando identificador: send: 0 * Adicionando identificador: recv: 0 * Curl_addHandleToPipeline: comprimento: 1 * 0x60002de60 está na cabeça do tubo de envio! * - Conexão 0 (0x600069f80) send_pipe: 1, recv_pipe: 0 * ESTADO: CONNECT => WAITCONNECT identificador 0x60002de60; linha 1058 (conexão # 0) % Total % Recebido % Xferd Velocidade Média Tempo Tempo Tempo Atual Dload Upload Total Gasto Velocidade Esquerda 0 0 0 0 0 0 0 0 --:--:-- --:--:-- - -:--:-- 0* Conectado a s3.amazonaws.com (54.231.1.232) porta 443 (#0) * local de verificação de certificado definido com sucesso: * CAfile: /usr/ssl/certs/ca-bundle.crt CApath : nenhum * SSLv3, handshake TLS, Olá do cliente (1): } [dados não mostrados] * ESTADO: WAITCONNECT => identificador PROTOCONNECT 0x60002de60; linha 1171 (conexão #0) * SSLv3, handshake TLS, Server hello (2): { [dados não mostrados] * SSLv3, handshake TLS, CERT (11): { [dados não mostrados] * SSLv3, handshake TLS, servidor finalizado (14): { [dados não mostrados] * SSLv3, handshake TLS, troca de chaves do cliente (16): } [dados não mostrados] * SSLv3, cifra de alteração TLS, Olá do cliente (1): } [dados não mostrados] * SSLv3 , Handshake TLS, Concluído (20): } [dados não mostrados] * SSLv3, cifra de alteração TLS, Olá do cliente (1): { [dados não mostrados] * SSLv3, handshake TLS, Concluído (20): { [dados não mostrados ] * Conexão SSL usando AES128-SHA * Certificado de servidor: Redigido * Certificado SSL verificado ok. * ESTADO: PROTOCONNECT => manipular 0x60002de60; linha 1190 (conexão #0)

OBTER /hkpgbackups/[e-mail protegido]/b007.dump?AWSA redigido User-Agent: curl/7.34.0 Host: s3.amazonaws.com Aceitar:/

 * STATE: DO => DO_DONE handle 0x60002de60; line 1263 (connection #0)
 * STATE: DO_DONE => WAITPERFORM handle 0x60002de60; line 1384 (connection #0)
 * STATE: WAITPERFORM => PERFORM handle 0x60002de60; line 1395 (connection #0)
 * HTTP 1.1 or later with persistent connection, pipelining supported
 < HTTP/1.1 400 Bad Request
 < Transfer-Encoding: chunked
 < Date: Wed, 02 Jul 2014 21:03:39 GMT
 < Connection: close
 * Server AmazonS3 is not blacklisted
 < Server: AmazonS3
 { [data not shown]
 * STATE: PERFORM => DONE handle 0x60002de60; line 1565 (connection #0)
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
 * Closing connection 0

Executar este comando no terminal OS X a partir da mesma sub-rede produz basicamente a mesma saída, exceto que recebo 200 para a solicitação http/1.1.

Então, por que eu compraria 200 para Mac, mas 400 para cygwin no Windows? Tentei eliminar outras variáveis ​​​​em potencial, mas o cygwin nesta máquina não está obtendo 200. Posso dizer que o URL redigido no cygwin corresponde ao URL na saída do comando heroku e o mesmo no mac, tanto quanto eu posso veja, exceto para a chave de acesso AWS. Não vejo por que eles seriam diferentes?

Por que isso seria diferente?

Para referência, este é o meurecurso.

Responder1

Isso deveria ter funcionado, mas a única maneira de executar é pular a avaliação do comando heroku e apenas copiar e colar a saída do URL E SOMENTE se eu colocar o URL entre aspas simples.

curl -o mais recente.dump 'https://example.com/reallyLongAndUglyUrl'

A razão pela qual funciona no OS X é porque a saída é muito longa e não é alterada. Mas isso acontece no cygwin porque estou usando o comando heroku.bat para obter a saída. Isso impõe restrições ao Windows – ou seja, adiciona um retorno de carro, etc. à linha muito longa que quebra a URL. A outra pista é que curl retorna um erro 400 que indica um URL alterado. A correção é canalizar a saída para o programa dos2unix e o curl responde como deveria.

curl -o last.dump heroku.bat pgbackups:url | dos2unixe a felicidade reina.

informação relacionada