Ahoj, vím že na SSH - hlavně na správu serverů se hodně používá <a href="http://fabfile.org/">http://fabfile.org/</a> , možná bvy to fungovalo lépe<br><br><div class="gmail_quote">2012/8/12 "Ing. Vladislav Ludík" <span dir="ltr"><<a href="mailto:vlada@ludik.cz" target="_blank">vlada@ludik.cz</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Zdravím všechny,<br>
<br>
narazil jsem na problém, který se týká nespolehlivého ssh klienta z modulu paramiko.<br>
<br>
Když pomocí něj čtu data například z některých verzí Mikrotiku,<br>
například MikroTik RouterOS 5.17, stane se občas, že nedostanu kompletní data.<br>
Někdy načte vše, někdy jen něco. Jak kdy.<br>
Pokud se připojím přes PuTTy, je přenos vždy spolehlivý.<br>
Můj modul, který pak používám v mých programech je v příloze.<br>
Neví někdo kde bych měl hledat problém, popřípadě o spolehlivějším klientovi ?<br>
<br>
Děkuji V.L.<br>
<br>"""Modul pro zadavani prikazu pres ssh"""<br>
<br>
import paramiko<br>
import cmd<br>
import string<br>
<br>
class RunCommand(cmd.Cmd):<br>
        """ Jednoduchy shell pro zadavani prikazu na adresu host """<br>
<br>
        prompt = 'ssh > '<br>
<br>
        def __init__(self):<br>
                cmd.Cmd.__init__(self)<br>
                self.hosts = []<br>
                self.connections = []<br>
<br>
        def do_add_host(self, args):<br>
                """add_host <host,user,password,port><br>
                Prida adresu host do seznamu """<br>
                if args:<br>
                        self.hosts.append(args.split(','))<br>
                else:<br>
                        print "pouziti: host <hostip,user,password,port>"<br>
<br>
        def do_connect(self, args):<br>
                """ Pripoji se ke vsem adresam host ze seznamu """<br>
                for host in self.hosts:<br>
                        ipcko, user, pswd, port = host<br>
                        user = string.strip(user)<br>
                        pswd = string.strip(pswd)<br>
                        port = int(string.strip(port))<br>
<br>
                        client = paramiko.SSHClient()<br>
                        client.set_missing_host_key_policy(<br>
                                paramiko.AutoAddPolicy())<br>
                        client.connect(ipcko,<br>
                                username=user,<br>
                                password=pswd,<br>
                                port=port)<br>
                        self.connections.append(client)<br>
<br>
        def do_run(self, command):<br>
                """run <command><br>
                Provede tento prikaz pro vsechny pripojene adresy ze seznamu """<br>
                if command:<br>
                        for host, conn in zip(self.hosts, self.connections):<br>
                                stdin, stdout, stderr = conn.exec_command(command)<br>
                                out = stdout.read()<br>
                                err = stderr.read()<br>
                                stdout.close()<br>
                                stderr.close()<br>
                                return out, err<br>
                else:<br>
                        print "pouziti: run <command>"<br>
<br>
        def do_close(self, args):<br>
                for conn in self.connections:<br>
                        conn.close()<br>
<br>#!/usr/bin/python<br>
# -*- coding: utf-8 -*-<br>
<br>
from ssh import *<br>
<br>
def doSSH(host, cmd, user=_user, pswd=_pswd, port=_port):<br>
    'Provedeni prikazu SSH'<br>
<br>
    con = ['%s,%s,%s,%s' % (host, user, pswd, port)]<br>
    ssh = RunCommand()<br>
    ssh.do_add_host(con[0])<br>
    ssh.do_connect(con)<br>
    stdout, stderr = ssh.do_run(cmd)<br>
    ssh.do_close(con)<br>
<br>
    return stdout, stderr<br>
<br>
# atd.....<br>_______________________________________________<br>
Python mailing list<br>
<a href="mailto:Python@py.cz">Python@py.cz</a><br>
<a href="http://www.py.cz/mailman/listinfo/python" target="_blank">http://www.py.cz/mailman/listinfo/python</a><br></blockquote></div><br><br clear="all"><br>-- <br><font size="1"><a href="http://keyserver.pgp.com/vkd/SubmitSearch.event?SearchCriteria=visgean%40gmail.com" target="_blank">GPG pub key</a></font><font size="1"> |</font><font size="1"> </font><font size="1"><a href="http://github.com/Visgean" target="_blank">github/visgean</a> | <a href="mailto:visgean@jabber.cz" target="_blank">jabber</a></font><br>
<br>