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


9

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

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

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

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

Ответы:


4

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

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

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

Если вы намереваетесь использовать scp в сценариях для локального использования , это IMO:

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

Этого уже достаточно для запуска вашей команды без всякого приглашения:

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

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

В этом случае подход с открытыми ключами немного менее удобен, но все же возможен. Если вы не можете попросить пользователя сценария создать открытый ключ, вы можете создать открытый ключ на лету, скопировать его на сервер и выполнить 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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.