2010-01-25 16 views
3

J'ai besoin d'une méthode de transfert de fichiers basé sur paramiko avec un serveur léger SSH2 (dropbear) qui ne prend pas en charge SCP ou SFTP. Est-il possible de parvenir à un chat et rediriger le transfert de fichiers de style, tels que:Paramiko equvalent des contrôles de pipeline et des tuyaux d'entrée/sortie

ssh server "cat remote_file" > local_file 

avec paramiko canaux?

Est-ce que paramiko.Transport.open_channel() ou Message() peut faire le travail? Je ne suis pas sûr de la façon de procéder.

Répondre

3

Les éléments suivants peuvent être utiles en tant que point de départ (par exemple "commande" ./sshpipe hôte):

#! /usr/bin/env python 

import sys 
import paramiko 

def sshpipe(host, line) : 
    client = paramiko.SSHClient() 
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    client.connect(host) 
    stdin, stdout, stderr = client.exec_command(line) 
    output = stdout.read() 
    sys.stdout.write(output) 
    stdin.close() 
    stdout.close() 
    stderr.close() 
    client.close() 

sshpipe(sys.argv[1], sys.argv[2])