Próbuję uruchomić polecenie scp
(bezpieczne kopiowanie) przy użyciu subprocess.Popen
. Login wymaga, aby wysłać hasło:Wysyłanie hasła przez SSH lub SCP z podprocesu.Popen
from subprocess import Popen, PIPE
proc = Popen(['scp', "[email protected]:/foo/bar/somefile.txt", "."], stdin = PIPE)
proc.stdin.write(b'mypassword')
proc.stdin.flush()
Ten natychmiast zwraca błąd:
[email protected]'s password:
Permission denied, please try again.
jestem pewną hasło jest prawidłowe. Łatwo to zweryfikować, ręcznie wywołując powłokę scp
. Dlaczego to nie działa?
Uwaga, istnieje wiele podobnych pytań do tego, prosząc o subprocess.Popen
i wysyłanie hasła do zautomatyzowanego SSH lub logowania FTP:
How can I set a users password in linux from a python script?
Use subprocess to send a password
odpowiedź (s) na te pytania don” t działa i/lub nie stosuje się, ponieważ używam Pythona 3.
Nie znam tego kodu, ale próbujesz użyć parametru -p? również wymiana kluczy jako metoda walidacji? – diego2k
Z -pi oznacza "-p mypassword uż[email protected]: /foo/bar/somefile.txt" nie wiem czy możesz to zrobić – diego2k
@ diego2k Z tego co mi wiadomo, scp nie akceptuje przełącznika wprowadź hasło za pomocą wiersza poleceń (jego strona podręcznika nie zawiera niczego w tym rodzaju). Ogólnie nie jest dobrą praktyką dostarczanie hasła w wierszu poleceń, ponieważ zostanie to zapisane w .bash_history – entropy