KnowHow

技術的なメモを中心にまとめます。
検索にて調べることができます。

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接続を試行することができます。