Как просмотреть прогресс с помощью sshpass и scp в linux?

В моем терминале Linux я использую эту команду

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

для загрузки файла с паролем в нем. Без sshpass я вижу прогресс загрузки, но с ним он просто пуст, пока он не закончится, и я не вижу его.

Есть ли способ увидеть это с помощью sshpass?

  • Как загрузить файл из Windows в Linux?
  • ошибки, пытающиеся передать через SCP
  • Ошибка при использовании rsync и scp
  • Перенос файлов с разрывами строк в именах файлов на сервере Linux
  • Самое быстрое копирование файлов в каталоге sshfs (rsync?)
  • Копирование файлов с одного компьютера на другой без запроса пароля
  • scp stdin: не является tty, и запись не удалась, сброс соединения с помощью одноранговой сети
  • Как я могу напечатать некоторую строку до завершения команды?
  • One Solution collect form web for “Как просмотреть прогресс с помощью sshpass и scp в linux?”

    Я думаю, что то, что вы просите, нелегко, возможно, даже невозможно с базовыми сценариями bash.

    Поэтому следующее не отвечает на ваш вопрос, но предоставляет другой подход к вашей проблеме.

    Вместо использования sshpass вы можете использовать команду plain scp с аутентификацией публики без пароля. См. [1], если вы не знаете, что это такое.

    Если вы собираетесь использовать scp в сценариях для локального использования , это значит, что ИМО – путь:

    • генерировать публикацию без пароля
    • используйте ssh-copy-id для добавления вашего открытого ключа на сервер

    Этого достаточно, чтобы иметь возможность запускать вашу команду без каких-либо подсказок:

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

    Для сценариев, которые вы хотите распространять , sshpass с четким паролем, безусловно, не очень хорошая идея, вы должны хотя бы использовать флаг s-ssh-s и предоставить пользователю пароль в качестве переменной среды для лучшей безопасности.

    В этом случае подход publickey немного менее удобен, но это все еще возможно. Если вы не можете позволить себе попросить пользователя сценария создать открытый ключ, вы можете создать открытый ключ «на лету», скопировать его на сервер и выполнить scp без каких-либо подсказок:

      #!/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 

    Наконец, еще есть возможность использовать rsync чтобы сделать индикатор выполнения:

     $ 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

    Linux и Unix - лучшая ОС в мире.