diff --git a/transfer/transfer.py b/transfer/transfer.py index d016cf7..1f76cc8 100644 --- a/transfer/transfer.py +++ b/transfer/transfer.py @@ -71,14 +71,15 @@ def do_transfer(): if method == "scp": # scp использует заглавную -P для порта (строчная -p = preserve timestamps) - scp_opts = f"-P {port}" + # Добавляем SSH-опции чтобы избежать зависания и silent fail + scp_opts = f"-P {port} -o ConnectTimeout=10 -o StrictHostKeyChecking=accept-new -o BatchMode=yes" if key_path and os.path.isfile(key_path): scp_opts += f" -i '{key_path}'" info("Копируем архив через scp ...") - r = run(f"scp {scp_opts} {archive_path} {user}@{host}:{remote_path}", check=False) + r = run(f"scp {scp_opts} {archive_path} {user}@{host}:{remote_path}", check=False, timeout=60) else: info("Копируем архив через rsync ...") - r = run(f"rsync -avz --progress -e 'ssh {ssh_opts}' {archive_path} {user}@{host}:{remote_path}", check=False) + r = run(f"rsync -avz --progress -e 'ssh {ssh_opts}' {archive_path} {user}@{host}:{remote_path}", check=False, timeout=60) if r.returncode != 0: state.set_error(