Не могу остановить / убить поток в исключении - Python - PullRequest
0 голосов
/ 29 апреля 2020

Я хочу открыть несколько сеансов S SH параллельно, используя поток, и остановить или прекратить поток, если не удается установить соединение. вот мой код:

import threading
import paramiko

def connSSH(num,num2):
    """thread connSSH function"""
    print ('Thread ', num,num2)

    try:
        print("\n \nOpen session in: " + num + "...")
        ssh.connect(num, username='root', password=num2)
        print("listing /tmp..")
        stdin, stdout, stderr = ssh.exec_command("ls /tmp/")
        lang_response=stdout.readlines()
        print(lang_response)
        ssh.close()
    except:
        # Stop/kill the thread if connection fails
        print("Connection Failed")
        ssh.close()
        failed.append(num)
        t._stop()
    return  

ip_list=["192.168.20.3","192.168.20.1"]
ip_pass=["aaa","bbb"]

failed=[]
threads = []

ssh = paramiko.client.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())


for i,l in zip(ip_list,ip_pass):
    t = threading.Thread(target=connSSH, args=(i,l))
    threads.append(t)
    t.start()

t.join()

#ssh.close()
print("failed connection",failed)
print("\n\n***********************End execution***********************\n\n")

Это вывод:

Thread  192.168.20.3 aaa    

Open session in: 192.168.20.3...
Thread  192.168.20.1 bbb    

Open session in: 192.168.20.1...
listing /tmp..
['TZ\n',  'state\n', 'sysinfo\n', 'tmp_sd\n']

failed connection []    

***********************End execution***********************   

>>> Connection Failed

Таким образом, первый поток (192.168.20.3) все еще работает, и также не удалось [] пуст, пока он должен содержать IP 192.168.20.3.

Что я делаю не так?

Спасибо

...