[Python] Python e SSH

Manlio Perillo manlio.perillo a gmail.com
Gio 11 Ago 2016 18:44:25 CEST


2016-08-11 18:11 GMT+02:00 Zanon Samuele <webs86 a gmail.com>:
>
> [...]
>
> Ciao,
> intanto grazie per le risposte. Cerco di essere più chiaro:
> ho la necessità di effettuare delle operazioni su dei server.
> Devo eseguire una serie di comandi, in sequenza, per poter eseguire
> correttamente
> queste operazioni (comandi tipo cd, eseguire script php...).
> Per scopo di verifica ho la necessita di avere l'output di ogni singolo
> comando, anche se vuoto.
> Tutte le operazioni, sulla classe che ho linkato, le salvo su
> SSHBaseCommand.commands
> che poi viene letto e crea i record su  un database postgres. Questo avviene
> attraverso una
> classe che estende SSHBaseCommand.
>
> Ho provato a modificare SSHBaseCommand secondo i consigli di Manlio, ma
> credo ci sia
> qualcosa che mi sfugge: se eseguo un comando, anche un semplice "ls -la",
> quello che
> recupero in output è un qualcosa che non è quello che mi aspetto.

Il problema è che tu esegui i comandi tramite la shell.
In questo modo non hai modo di sapere quando termina l'output di un comando.
La shell va usata solo se devi eseguire comandi in modalità interattiva.

Devi usare exec_command, invece di invoke_shell.
Vedi ad esempio:
https://gist.github.com/perillo/8c492a6a021e71034b1c33fb085a6679

Se vuoi anche l'exit status probabilmente (non ho mai usato paramiko)
devi fare qualcosa del genere:
https://gist.github.com/perillo/8c492a6a021e71034b1c33fb085a6679


Ciao  Manlio


Maggiori informazioni sulla lista Python