Saya ingin menggunakan rsync dalam skrip python. Saya menyebutnya menggunakan subprocess
modul, dan mengautentikasi menggunakan kunci publik yang tersimpan di authorized_key
file pada mesin jarak jauh.
Satu-satunya masalah adalah ketika saya menggunakan rsync menggunakan nama pengguna jarak jauh yang salah, saya dimintai kata sandi, yang jelas menghentikan skrip cadangan selamanya.
Bisakah saya memaksa rsync
untuk keluar dengan kesalahan jika tidak bisa mengautentikasi, daripada meminta kata sandi?
Udi
re: Saran James (tidak memberikannya tty), untuk subproses, coba letakkan stdin = Tidak ada sebagai parameter untuk Popen.
sumber
Pertama dapatkan rsync untuk bekerja dari shell, perintahnya akan terlihat seperti.
Jika itu gagal men-debug perintah ssh dengan sendirinya. Ketika itu semua berhasil maka lihat apa yang terjadi untuk skrip python
Ini bukan tutorial yang buruk
sumber
Bergantung pada bagaimana Anda meluncurkan rsync, tidak memberikan TTY atau PTY dapat membantu.
Banyak program memeriksa apakah mereka memiliki TTY yang mengontrol sebelum memutuskan untuk meminta input dari pengguna. Perilaku default sistem () dan panggilan serupa adalah untuk menyediakan tty ke sub-program, tetapi Anda dapat menonaktifkannya.
Dimungkinkan juga untuk menonaktifkan otentikasi kata sandi sepenuhnya di sisi jarak jauh jika Anda mengendalikan kedua sistem dan ingin melepaskan diri dari otentikasi kata sandi untuk manfaat keamanan sambil menyelesaikan masalah ini.
Jika Anda melakukan rsync melalui SSH, Anda dapat menambahkan berikut ini ke file ssh_config Anda untuk host yang dimaksud, atau melalui saklar baris perintah -o:
Pada tes cepat (hanya ssh, bukan rsync) yang menyebabkan SSH segera keluar ketika kunci publik saya tidak diterima tanpa meminta saya untuk kata sandi.
sumber