Sono abbastanza nuovo per Python e programmazione. Sto provando a copiare un file tra due computer tramite uno script python. Tuttavia il codiceCopia protetta File dal server remoto tramite scp e modulo os in Python
non funziona. Penso che abbia bisogno di una password, come descritto in How to copy a file to a remote server in Python using SCP or SSH?. Non ho ricevuto alcun registro degli errori, il file non verrà mostrato nella mia attuale directory di lavoro.
Tuttavia ogni altro comando con os.system("ssh " + hostname + "command")
o os.popen("ssh " + hostname + "command")
funziona. ->command = e.g. ls
Quando provo ssh hostname scp file [email protected]:directory
nella riga di comando che funziona senza immettere una password.
Ho cercato di combinare os.popen
comandi con modulo getpass e pxssh per stabilire una connessione ssh al server remoto e utilizzarlo per inviare comandi direttamente (ho testato solo per un comando facile):
import pxssh
import getpass
ssh = pxssh.pxssh()
ssh.force_password = True
hostname = raw_input("Hostname: ")
user = raw_input("Username: ")
password = getpass.getpass("Password: ")
ssh.login(hostname, user, password)
test = os.popen("hostname")
print test
Ma Non sono in grado di inviare comandi al server remoto (show print test
, nomehost = locale e non server remoto), tuttavia sono sicuro che la connessione è stata stabilita. Ho pensato che sarebbe stato più facile stabilire una connessione che usare sempre "ssh " + hostname
nei comandi bash. Ho anche provato alcuni dei workaround in How to copy a file to a remote server in Python using SCP or SSH?, ma devo ammettere che a causa della mancanza di esperienza non li ho fatti funzionare.
Grazie mille per avermi aiutato.
Perché voi pensi di aver bisogno di fare 'ssh hostname scp'? Perché non solo "scp user @ hostname: file localdirectory"? –
Preferisco il modulo 'subprocess' su' os.system() 'per ragioni di sicurezza. – glglgl
Non ho pensato alla possibilità di copiare tramite 'scp user @ hostname: file localdirectory'. Funziona, ma solo quando annullo la parte 'user @'. – user1063572