この質問に対する答えは、単に「parallel-sshの使用をやめ、netmiko/paramikoを使って独自のコードを書いてください。また、既にpython 3にアップグレードしてください。パラレルSSH - 一定時間後にsshチャネルを閉じる方法は?
私の問題は次のとおりです。parallel-sshを使用して一度に80台までのデバイスにヒットしようとしています。これらのデバイスは、信頼性が低いと知られています.1〜2行の出力を与えた後、時折フリーズします。それから、並列sshコードが数時間停止し、スクリプトが実行されたままになります。私は週末の後にスクリプトを実行しているVMに飛び乗って、52時間立ち往生している仕事を見ました。
私の最初のコードの関連部分、ハング1:私はそれがコマンド出力を得るために4分以上かかる場合ので、私は、channel_timoutオプション次いで試してみました
from pssh.pssh2_client import ParallelSSHClient
def remote_ssh(ip_list, ssh_user, ssh_pass, cmd):
client = ParallelSSHClient(ip_list, user=ssh_user, password=ssh_pass, timeout=180, retry_delay=60, pool_size=100, allow_agent=False)
result = client.run_command(cmd, stop_on_errors=False)
return result
次の事デバイスが凍結したことを知っている、と私はスクリプトで、後でそれを上に移動し、サイクルする必要があります。
はfrom pssh.pssh_client import ParallelSSHClient
def remote_ssh(ip_list, ssh_user, ssh_pass, cmd):
client = ParallelSSHClient(ip_list, user=ssh_user, password=ssh_pass, channel_timeout=180, retry_delay=60, pool_size=100, allow_agent=False)
result = client.run_command(cmd, stop_on_errors=False)
return result
このバージョンでは、決して実際には何に接続します。何かアドバイス?私はchannel_timeout以外の何かを見つけることができず、一定の時間がたつとsshセッションを終了しようとしました。