Я хочу открыть несколько сеансов 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.
Что я делаю не так?
Спасибо