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

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

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

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

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

  • Вам нужна оболочка для SCP?
  • Предотвращение scp и менее команд, читающих интерактивный скрипт tcsh
  • Исключить символы для SCP-файла
  • scp / path / to / local / file myusername@server.com создает новый файл в локальном каталоге?
  • Сценарий Bash для scp-интерпретации тильды (~) слишком рано
  • не может скопировать более 29 файлов на целевой сервер, используя сценарий оболочки
  • Копирование файла с использованием scp в несуществующий локальный каталог - вводящее в заблуждение сообщение об ошибке
  • scp не может загружать / скачивать файлы, даже если ssh работает
  • 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 - лучшая ОС в мире.