wget e scp como pipeline

0

Podemos usar wget e scp como um pipeline? Eu quero wget um arquivo de um servidor e copie para outro servidor. Eu usei o comando abaixo, mas não está funcionando.

wget "$Select_Release_Version_ARTIFACT_URL" | sudo scp [email protected]:/etc/test/
    
por Janith 15.11.2018 / 06:25

2 respostas

1

Para usar wget em um canal, você deve garantir que ele grave em stdout em um arquivo, portanto, use wget -O- ... .

AFAIK, não é possível usar scp para copiar de stdin . No entanto, você pode usar ssh e executá-lo como cat , que lê stdin .

Então, juntos, você recebe algo como

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

Observe que somente será feito o download e a transferência de um único arquivo / página da web. Observe também que o usuário test on 192.168.94.137 precisa de direitos para criar e gravar em /etc/test/some_file . Usar sudo antes de ssh não concederá ao usuário remoto test quaisquer direitos adicionais. Ele permitirá acessar as chaves ssh do root na máquina local, então, se essa for a intenção, mantenha-a.

Embora isso demonstre como usar um pipe acima de ssh , seria mais fácil executar wget na máquina remota, a menos que haja motivos pelos quais isso não seja possível.

    
por 15.11.2018 / 08:28
0

Em vez de pipe, você pode usar && . Isso garantirá que scp seja executado se wget tiver status de saída 0 (concluído com êxito).

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

Isso funciona da seguinte maneira:

wget baixa o arquivo e SE SUCEDIDO, iniciará scp .

NOTA: Como você está usando sudo , isso pedirá a senha test user toda vez que este comando for executado.

    
por 15.11.2018 / 06:31