[python] ssh klient pro python
Visgean Skeloru
visgean na gmail.com
Neděle Srpen 12 14:21:35 CEST 2012
Ahoj, vím že na SSH - hlavně na správu serverů se hodně používá
http://fabfile.org/ , možná bvy to fungovalo lépe
2012/8/12 "Ing. Vladislav Ludík" <vlada na ludik.cz>
> 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 na py.cz
> http://www.py.cz/mailman/listinfo/python
>
--
GPG pub key<http://keyserver.pgp.com/vkd/SubmitSearch.event?SearchCriteria=visgean%40gmail.com>
| github/visgean <http://github.com/Visgean> | jabber <visgean na jabber.cz>
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://www.py.cz/pipermail/python/attachments/20120812/d8b95597/attachment.html>
Další informace o konferenci Python