Zdravím všechny,

narazil jsem na problém, který se týká nespolehlivého ssh klienta z modulu paramiko.

Když pomocí něj čtu data například z některých verzí Mikrotiku,
například MikroTik RouterOS 5.17, stane se občas, že nedostanu kompletní data.
Někdy načte vše, někdy jen něco. Jak kdy.
Pokud se připojím přes PuTTy, je přenos vždy spolehlivý.
Můj modul, který pak používám v mých programech je v příloze.
Neví někdo kde bych měl hledat problém, popřípadě o spolehlivějším klientovi ?

Děkuji V.L.
"""Modul pro zadavani prikazu pres ssh"""
 
import paramiko
import cmd
import string

class RunCommand(cmd.Cmd):
        """ Jednoduchy shell pro zadavani prikazu na adresu host """

        prompt = 'ssh > '

        def __init__(self):
                cmd.Cmd.__init__(self)
                self.hosts = []
                self.connections = []

        def do_add_host(self, args):
                """add_host <host,user,password,port>
                Prida adresu host do seznamu """
                if args:
                        self.hosts.append(args.split(','))
                else:
                        print "pouziti: host <hostip,user,password,port>"

        def do_connect(self, args):
                """ Pripoji se ke vsem adresam host ze seznamu """
                for host in self.hosts:
                        ipcko, user, pswd, port = host
                        user = string.strip(user)
                        pswd = string.strip(pswd)
                        port = int(string.strip(port))

                        client = paramiko.SSHClient()
                        client.set_missing_host_key_policy(
                                paramiko.AutoAddPolicy())
                        client.connect(ipcko,
                                username=user,
                                password=pswd,
                                port=port)
                        self.connections.append(client)

        def do_run(self, command):
                """run <command>
                Provede tento prikaz pro vsechny pripojene adresy ze seznamu """
                if command:
                        for host, conn in zip(self.hosts, self.connections):
                                stdin, stdout, stderr = 
conn.exec_command(command)
                                out = stdout.read()
                                err = stderr.read()
                                stdout.close()
                                stderr.close()
                                return out, err
                else:
                        print "pouziti: run <command>"

        def do_close(self, args):
                for conn in self.connections:
                        conn.close()
#!/usr/bin/python
# -*- coding: utf-8 -*-

from ssh import *

def doSSH(host, cmd, user=_user, pswd=_pswd, port=_port):
    'Provedeni prikazu SSH'
    
    con = ['%s,%s,%s,%s' % (host, user, pswd, port)]
    ssh = RunCommand()
    ssh.do_add_host(con[0])
    ssh.do_connect(con)
    stdout, stderr = ssh.do_run(cmd)
    ssh.do_close(con)
    
    return stdout, stderr
            
# atd.....
_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem