Comment voir les progrès avec sshpass et scp sous linux?

9

Dans mon terminal Linux, j'utilise cette commande

sshpass -p "pass" scp -r [email protected]:/cmshome/me/file /home/me/Desktop

pour télécharger un fichier contenant un mot de passe. Sans le sshpass, je peux voir la progression du téléchargement, mais avec lui, il est juste vide jusqu'à ce qu'il se termine et je ne peux pas le voir.

Existe-t-il un moyen de le voir avec sshpass?

oméga
la source

Réponses:

4

Je pense que ce que vous demandez n'est pas facilement réalisable, voire impossible avec les scripts bash basiques.

Par conséquent, ce qui suit ne répond pas vraiment à votre question mais fournit une autre approche de votre problème.

Au lieu d'utiliser sshpass, vous pouvez utiliser la scpcommande plain avec une authentification publickey sans mot de passe. Voir [1] si vous ne savez pas ce que c'est.

Si vous avez l'intention d'utiliser scp dans des scripts pour une utilisation locale , c'est IMO la voie à suivre:

  • générer un publickey sans mot de passe
  • utiliser ssh-copy-idpour ajouter votre clé publique au serveur

C'est déjà suffisant pour pouvoir exécuter votre commande sans aucune invite:

scp -r [email protected]:/cmshome/me/file /home/me/Desktop

Pour les scripts que vous souhaitez distribuer , sshpass avec un mot de passe clair n'est certainement pas une bonne idée, vous devez au moins utiliser l'indicateur "-e" de sshpass et laisser l'utilisateur fournir le mot de passe comme variable d'environnement pour une meilleure sécurité.

Dans ce cas, l'approche publickey est un peu moins pratique mais elle reste possible. Si vous ne pouvez pas vous permettre de demander à l'utilisateur du script de créer une clé publique, vous pouvez créer une clé publique à la volée, la copier sur le serveur et l'exécuter scpsans aucune invite:

 #!/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" [email protected]
 fi
 scp -r [email protected]:/cmshome/me/file /home/me/Desktop

Enfin il y a encore la possibilité d'utiliser rsyncpour faire la barre de progression à la place:

$ 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

nimai
la source