我想使用线程并行打开多个SSH会话,并在连接失败时停止或终止线程。 这是我的代码:
x match {
case FooType.FooA.toString => println("success using match")
}
ScalaFiddle.scala:19: error: stable identifier required, but ScalaFiddle.this.FooType.FooA.toString found.
case FooType.FooA.toString => println("success using match")
^
这是输出:
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")
因此第一个线程(192.168.20.3)仍在运行,并且fail []为空,而它应该包含IP 192.168.20.3。
我在做什么错了?
谢谢