Como visualizar o progresso com sshpass e scp no linux?


9

No meu terminal Linux, estou usando este comando

sshpass -p "pass" scp -r me8@host.ca:/cmshome/me/file /home/me/Desktop

para baixar um arquivo com uma senha. Sem o sshpass, posso ver o progresso do download, mas com ele fica em branco até terminar e não consigo vê-lo.

Existe uma maneira que eu possa vê-lo com sshpass?

Respostas:


4

Eu acho que o que você pede não é facilmente factível, talvez até impossível com scripts básicos do bash.

Portanto, o seguinte realmente não responde à sua pergunta, mas fornece outra abordagem para o seu problema.

Em vez de usar sshpass, você pode usar o scpcomando plain com uma autenticação de chave pública sem senha. Veja [1] se você não sabe o que é.

Se você pretende usar scp em scripts para uso local , este é o IMO a seguir:

  • gerar uma chave pública sem senha
  • use ssh-copy-idpara adicionar sua chave pública ao servidor

Isso já é suficiente para poder executar seu comando sem nenhum prompt:

scp -r me8@host.ca:/cmshome/me/file /home/me/Desktop

Para os scripts que você deseja distribuir , o sshpass com senha clara certamente não é uma boa idéia, você deve pelo menos usar o sinalizador "-e" do sshpass e permitir que o usuário forneça a senha como uma variável de ambiente para melhor segurança.

Nesse caso, a abordagem de chave pública é um pouco menos conveniente, mas ainda é possível. Se você não puder pedir ao usuário do script para criar uma chave pública, poderá criar uma chave pública em tempo real, copiá-la no servidor e executá-la scpsem aviso:

 #!/bin/bash
 KEY="$HOME/.ssh/id_rsa_example"
 if [ ! -e "$KEY" ]; then
     ssh-keygen -t rsa -N "" -f "$KEY"
     sshpass -e ssh-copy-id -i "${KEY}.pub" me8@host.ca
 fi
 scp -r me8@host.ca:/cmshome/me/file /home/me/Desktop

Finalmente, ainda existe a possibilidade de usar rsyncpara fazer a barra de progresso:

$ rsync -P --rsh="sshpass -p $PASSWORD ssh -l me8" host.ca:/cmshome/me/file /home/me/Desktop

[1] https://help.ubuntu.com/community/SSH/OpenSSH/Keys

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.