Bagaimana cara melihat kemajuan dengan sshpass dan scp di linux?

9

Di terminal Linux saya, saya menggunakan perintah ini

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

untuk mengunduh file dengan kata sandi di dalamnya. Tanpa sshpass, saya dapat melihat progres pengunduhan, tetapi dengan itu, hanya kosong sampai selesai dan saya tidak dapat melihatnya.

Apakah ada cara saya bisa melihatnya dengan sshpass?

akhir
sumber

Jawaban:

4

Saya pikir apa yang Anda minta tidak mudah dilakukan, bahkan mungkin tidak mungkin dengan scripting bash dasar.

Karenanya, berikut ini tidak benar-benar menjawab pertanyaan Anda tetapi memberikan pendekatan lain untuk masalah Anda.

Alih-alih menggunakan sshpass, Anda bisa menggunakan scpperintah biasa dengan otentikasi publickey tanpa kata sandi. Lihat [1] jika Anda tidak tahu apa itu.

Jika Anda bermaksud menggunakan skrip dalam skrip untuk penggunaan lokal , inilah, IMO cara untuk melakukannya:

  • buat publickey tanpa kata sandi
  • gunakan ssh-copy-iduntuk menambahkan kunci publik Anda ke server

Itu sudah cukup untuk dapat menjalankan perintah Anda tanpa prompt:

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

Untuk skrip yang ingin Anda bagikan , sshpass dengan kata sandi yang jelas tentu bukan ide yang baik, Anda setidaknya harus menggunakan bendera "-e" sshpass dan membiarkan pengguna memberikan kata sandi sebagai variabel lingkungan untuk keamanan yang lebih baik.

Dalam hal ini, pendekatan publickey sedikit kurang nyaman tetapi masih mungkin. Jika Anda tidak mampu meminta pengguna skrip untuk membuat kunci publik, Anda dapat membuat kunci publik dengan cepat, menyalinnya di server dan menjalankannya scptanpa diminta:

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

Akhirnya, masih ada kemungkinan untuk digunakan rsyncuntuk membuat bilah kemajuan:

$ 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
sumber