Qual è il modo più pitonico per scp un file in Python? L'unica via di cui sono a conoscenza è
os.system('scp "%s" "%s:%s"' % (localfile, remotehost, remotefile) )
che è un hack e che non funziona al di fuori dei sistemi simili a Linux e che necessita dell'aiuto del modulo Pexpect per evitare le richieste di password a meno che non si abbia già SSH senza password configurato per l'host remoto.
Sono a conoscenza di Twisted conch
, ma preferirei evitare di implementare scp da solo tramite moduli ssh di basso livello.
Sono a conoscenza di paramiko
un modulo Python che supporta SSH e SFTP; ma non supporta SCP.
Background: mi sto collegando a un router che non supporta SFTP ma supporta SSH / SCP, quindi SFTP non è un'opzione.
EDIT : questo è un duplicato di Come copiare un file su un server remoto in Python usando SCP o SSH? . Tuttavia , quella domanda non fornisce una risposta specifica per scp che si occupa delle chiavi all'interno di Python. Spero in un modo per eseguire il codice in qualche modo
import scp
client = scp.Client(host=host, user=user, keyfile=keyfile)
# or
client = scp.Client(host=host, user=user)
client.use_system_keys()
# or
client = scp.Client(host=host, user=user, password=password)
# and then
client.transfer('/etc/local/filename', '/etc/remote/filename')
scp
finisce per chiamare effettivamente lascp
riga di comando che funziona solo su * nix.