<div dir="ltr">ciao Remo,<div class="gmail_extra"><br><div class="gmail_quote">2015-10-06 12:40 GMT+02:00 Remo Cosini <span dir="ltr"><<a href="mailto:redmine.csi@gmail.com" target="_blank">redmine.csi@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Salve a tutti,<div>sono nuovo di python e finora sono riuscito a cavarmela da autodidatta.</div><div>Ho trovato uno script (che fa uso di paramiko) e l'ho modificato secondo mie esigenze. Avevo necessità di testare degli accessi SSH (con user e pwd già cablata) partendo da un array e mettendo</div><div>il tutto dentro un ciclo, ma sembra non andare, l'errore che leggo è il seguente:</div><div><div><br></div><div>Could not SSH to ['localhost', '127.0.0.1'], waiting for it to start</div><div>Could not connect to ['localhost', '127.0.0.1']. Giving up</div></div><div><br></div><div>Sembra non prendere i valori host uno per volta, ma tutti insieme, ecco lo script:</div><div><br></div><div><div>import sys</div><div>import time</div><div>import select</div><div>import paramiko</div><div>i = 1</div><div>host = ['localhost', '127.0.0.1', '192.168.2.2']</div><div>for item in host:</div></div></div></blockquote><div><br></div><div>da questo momento in poi dovresti usare "item" e non "host" </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div>        while True:</div><div>                print 'Trying to connect to %s (%i/3)' % (host, i)</div><div>                try:</div><div>                        ssh = paramiko.SSHClient()</div><div>                        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())</div><div>                        ssh.connect(host, port=22, username='centos', password='reverse')</div></div></div></blockquote><div><br></div><div>qui usi "host", ma dovevi usare "item"</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div>                        print "Connected to %s" % host</div><div>                        break</div><div>                except paramiko.AuthenticationException:</div><div>                        print "Authentication failed when connecting to %s" % host</div><div>                        sys.exit(1)</div><div>                except:</div></div></div></blockquote><div><br></div><div>ti consiglio di evitare l'except "senza niente"</div><div><a href="https://realpython.com/blog/python/the-most-diabolical-python-antipattern/">https://realpython.com/blog/python/the-most-diabolical-python-antipattern/</a><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div>                        print "Could not SSH to %s, waiting for it to start" % host</div><div>                        i += 1</div><div>                        time.sleep(2)</div><div>                # If we could not connect within time limit</div><div>                if i == 3:</div><div>                        print "Could not connect to %s. Giving up" % host</div><div>                        sys.exit(1)</div><div>        # Send the command (non-blocking)</div><div>        stdin, stdout, stderr = ssh.exec_command("uname")</div><div>        # Wait for the command to terminate</div><div>        while not stdout.channel.exit_status_ready():</div><div>                # Only print data if there is data to read in the channel</div><div>                if stdout.channel.recv_ready():</div><div>                        rl, wl, xl = select.select([stdout.channel], [], [], 0.0)</div><div>                        if len(rl) > 0:</div><div>                                # Print data from stdout</div><div>                                print '-------------------------------'</div><div>                                print stdout.channel.recv(1024),</div><div>        # Send the command (non-blocking)</div><div>        stdin, stdout, stderr = ssh.exec_command("hostname")</div><div>        # Wait for the command to terminate</div><div>        while not stdout.channel.exit_status_ready():</div><div>                # Only print data if there is data to read in the channel</div><div>                if stdout.channel.recv_ready():</div><div>                        rl, wl, xl = select.select([stdout.channel], [], [], 0.0)</div><div>                        if len(rl) > 0:</div><div>                                # Print data from stdout</div><div>                                print stdout.channel.recv(1024),</div><div>        # Send the command (non-blocking)</div><div>        stdin, stdout, stderr = ssh.exec_command("hostname -I")</div><div>        # Wait for the command to terminate</div><div>        while not stdout.channel.exit_status_ready():</div><div>                # Only print data if there is data to read in the channel</div><div>                if stdout.channel.recv_ready():</div><div>                        rl, wl, xl = select.select([stdout.channel], [], [], 0.0)</div><div>                        if len(rl) > 0:</div><div>                                # Print data from stdout</div><div>                                print stdout.channel.recv(1024),</div><div>                        print '-------------------------------'</div><div>        #</div><div>        # Disconnect from the host</div><div>        #</div><div>        print "Command done, closing SSH connection."</div><div>        ssh.close()</div></div><div><br></div><div>Qualcuno mi illumina?</div></div></blockquote><div><br></div><div>ciao,</div><div>Marco</div><div><br></div></div></div></div>