Sto tentando di eseguire un comando scp
(copia protetta) utilizzando subprocess.Popen
. Il login richiede che mando una password:Invio di una password tramite SSH o SCP con sottoprocesso.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()
Ciò restituisce immediatamente un errore:
[email protected]'s password:
Permission denied, please try again.
Sono certo la password è corretta. Lo posso verificare facilmente invocando manualmente scp
sulla shell. Quindi, perché non funziona?
Nota, ci sono molte domande simili a questo, chiedendo circa subprocess.Popen
e l'invio di una password per SSH automatizzato o login FTP:
How can I set a users password in linux from a python script?
Use subprocess to send a password
La risposta (s) a queste domande don' t lavoro e/o non si applicano perché sto usando Python 3.
non ho familiarità con questo codice ma si tenta di utilizzare il parametro -p? anche uno scambio di chiavi come metodo di validazione? – diego2k
Con -pi significa "-p mypassword [email protected]: /foo/bar/somefile.txt" non so se lo puoi fare – diego2k
@ diego2k Per quanto ne so, scp non accetta un passaggio a inserire la password sulla riga di comando (la sua pagina man non contiene nulla del genere). In generale, non è una buona pratica fornire una password sulla riga di comando perché verrà registrata in .bash_history – entropy