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>