Fish-shell: Rsync dan sftp tidak berfungsi jika host jarak jauh menggunakan cangkang ikan

Dibuat pada 18 Okt 2016  ·  3Komentar  ·  Sumber: fish-shell/fish-shell

OS: Debian Jessie
ikan: 2.2.0

OS: Maui Linux
ikan: 2.3.1

Bagaimana cara mereproduksi?

  1. atur pada host jarak jauh skrip apa pun untuk dijalankan saat masuk (skrip harus mencetak pesan apa pun pada baris perintah)
  2. Coba login ke remote host melalui sftp -> Gagal
  3. Coba sinkronkan direktori apa pun melalui rsync. Rsync harus menggunakan ssh untuk menyinkronkan dir pada host jarak jauh. -> Gagal

Ketika remote host menggunakan fish shell, pengguna tidak dapat menggunakan rsync dan sftp (sftp pada baris perintah dan di dalam mc). Remote host menggunakan skrip login untuk menampilkan beberapa informasi.
Tautan ke skrip: https://blog.pawel.mydevil.net/index.php/2014/02/20/wyswietlanie-danych-przy-logowaniu-skrypt/

Saya menguji pada dua host. Host pertama adalah Debian Jessie (ikan, versi 2.2.0) dan kedua adalah Maui Linux (ikan, versi 2.3.1).

sftp
sftp root @ remoteHost
password root @ remoteHost :
Menerima pesan terlalu panjang 539831597

bagian dari log auth.log
Kata sandi yang diterima untuk root dari port localHost 48460 ssh2
18 Okt 19:18:59 bpi sshd [7502]: pam_unix (sshd: session): sesi dibuka untuk root pengguna oleh (uid = 0)
18 Okt 19:19:00 bpi sshd [7502]: Menerima pemutusan dari localHost: 11: terputus oleh pengguna
18 Okt 19:19:00 bpi sshd [7502]: pam_unix (sshd: sesi): sesi ditutup untuk root pengguna

rsync:
~ $ sudo rsync -av --delete -e ssh / home / pawel pawel @ remoteHost : / mnt / backup
[sudo] hasło użytkownika pawel:
sandi pawel @ remoteHost :
versi protokol tidak cocok - apakah shell Anda bersih?
(lihat halaman manual rsync untuk penjelasan)
kesalahan rsync: ketidakcocokan protokol (kode 2) di compat.c (176) [pengirim = 3.1.1]

Saya membaca manual dan Internet dan saya menjalankan perintah
"ssh pawel @RemoteIP / bin / true> out.dat"
file "out.dat" berisi hasil script yang dijalankan saat login.

Ketika saya mengomentari tautan ke skrip di file /etc/fish/config.fish, semuanya berfungsi dengan benar.

question

Komentar yang paling membantu

Bekerja untuk saya. Jenis kegagalan ini biasanya disebabkan oleh file konfigurasi shell yang menulis ke stdout saat sesi tidak interaktif. Dalam kasus ikan Anda harus memastikan bahwa apa pun di _ ~ / .config / fish / config.fish_ (dan skrip sumbernya) yang mungkin menulis ke stdout (atau membaca dari stdin tetapi itu kurang umum) dibungkus dengan if status --is-interactive ... end blok.

Semua 3 komentar

Bekerja untuk saya. Jenis kegagalan ini biasanya disebabkan oleh file konfigurasi shell yang menulis ke stdout saat sesi tidak interaktif. Dalam kasus ikan Anda harus memastikan bahwa apa pun di _ ~ / .config / fish / config.fish_ (dan skrip sumbernya) yang mungkin menulis ke stdout (atau membaca dari stdin tetapi itu kurang umum) dibungkus dengan if status --is-interactive ... end blok.

Terima kasih banyak atas bantuannya. Saya meletakkan sesuatu seperti ini

jika status --is-interaktif
/ path / ke / script / yang / print / on / console
akhir

ke /etc/fish/config.fish dan bekerja dengan sempurna. Script hanya berjalan ketika shell dipanggil oleh pengguna, bukan oleh script.
Saya mencoba untuk meletakkan "jika" di dalam skrip ,. tapi saya tidak tahu cara mencampur skrip bash dan skrip ikan.

Mengapa tidak memasukkan petunjuk ini ke FAQ? Saya telah menderita masalah ini untuk beberapa waktu, karena tidak dapat menggunakan rsync dengan cangkang ikan.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

rwz picture rwz  ·  3Komentar

mqudsi picture mqudsi  ·  3Komentar

euclio picture euclio  ·  3Komentar

andrewhowdencom picture andrewhowdencom  ·  3Komentar

Limeth picture Limeth  ·  3Komentar