Threadでタイムアウト例4(paramiko その2)
| 登録日 | :2024/04/11 04:35 |
|---|---|
| カテゴリ | :Python基礎 |
各ThreadがSSHコネクションを試みて、Timeout時間を設定したいのです。
各スレッドが独自のSSH接続を試行し、それぞれに異なるタイムアウト時間を設定するためには、スレッドごとにtimeoutパラメータを渡す方法があります。以下はその例です:
import threading
import paramiko
import socket
def ssh_connect(hostname, username, password, timeout):
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
client.connect(hostname, username=username, password=password, timeout=timeout)
print(f"SSH connection established for {hostname}")
except (paramiko.AuthenticationException, paramiko.SSHException, socket.timeout) as e:
print(f"Failed to connect to {hostname}: {e}")
finally:
client.close()
# 各スレッドごとに異なるタイムアウトを設定
t1 = threading.Thread(target=ssh_connect, args=("example1.com", "username", "password", 5))
t2 = threading.Thread(target=ssh_connect, args=("example2.com", "username", "password", 10))
t1.start()
t2.start()
t1.join()
t2.join()
print("All SSH connections finished")
この例では、ssh_connect関数にtimeoutパラメータを追加し、それを各スレッドで異なる値で呼び出しています。各スレッドは独立して実行されるため、異なるタイムアウト時間でSSH接続を試行することができます。