fix(ssh): build_fqdn elargi - Test/Dev/QA testent aussi .sanef-rec.fr (etait limite a 'recette') + log d'erreur ssh_connect detaille
This commit is contained in:
parent
92528043d0
commit
c23dda0a46
@ -661,13 +661,19 @@ def read_excel_servers(filepath, sheet_name=None):
|
|||||||
# SSH HELPERS
|
# SSH HELPERS
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
def build_fqdn(server, env):
|
def build_fqdn(server, env):
|
||||||
|
"""Genere les candidats FQDN a tester. Convention SANEF :
|
||||||
|
- .sanef-rec.fr pour env Recette/Test/Dev (les VMs non-prod sont en recette)
|
||||||
|
- .sanef.groupe pour env Prod / autres (AD interne)
|
||||||
|
Tente d'abord le hostname brut puis chaque suffixe."""
|
||||||
if "." in server:
|
if "." in server:
|
||||||
return [server]
|
return [server]
|
||||||
env_low = env.lower()
|
env_low = (env or "").lower()
|
||||||
if "recette" in env_low or "rec" in env_low:
|
is_nonprod = any(k in env_low for k in ("recette", "rec", "test", "tst", "dev", "qa"))
|
||||||
return [server, f"{server}.sanef-rec.fr"]
|
if is_nonprod:
|
||||||
else:
|
# Non-prod : recette en priorite, fallback groupe au cas ou
|
||||||
return [server, f"{server}.sanef.groupe"]
|
return [server, f"{server}.sanef-rec.fr", f"{server}.sanef.groupe"]
|
||||||
|
# Prod : groupe en priorite, fallback recette au cas ou
|
||||||
|
return [server, f"{server}.sanef.groupe", f"{server}.sanef-rec.fr"]
|
||||||
|
|
||||||
def load_key(keyfile):
|
def load_key(keyfile):
|
||||||
"""Charge une clé SSH privée. Retourne l'objet PKey ou None.
|
"""Charge une clé SSH privée. Retourne l'objet PKey ou None.
|
||||||
@ -809,7 +815,10 @@ def ssh_connect(server, env, settings, pkey, pkey2, cyb_password=None):
|
|||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
# SSH direct avec clé
|
# SSH direct avec clé
|
||||||
for key in [k for k in [pkey, pkey2] if k]:
|
keys = [k for k in [pkey, pkey2] if k]
|
||||||
|
if not keys:
|
||||||
|
print(f"[ssh_connect] {hostname}: AUCUNE CLE chargee (pkey/pkey2 = None) → check load_key.last_error")
|
||||||
|
for idx, key in enumerate(keys, 1):
|
||||||
try:
|
try:
|
||||||
client = paramiko.SSHClient()
|
client = paramiko.SSHClient()
|
||||||
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||||
@ -819,7 +828,9 @@ def ssh_connect(server, env, settings, pkey, pkey2, cyb_password=None):
|
|||||||
look_for_keys=False, allow_agent=False)
|
look_for_keys=False, allow_agent=False)
|
||||||
client._eff_host = hostname
|
client._eff_host = hostname
|
||||||
return client, hostname
|
return client, hostname
|
||||||
except Exception:
|
except Exception as ex_ssh:
|
||||||
|
print(f"[ssh_connect] {hostname} cle#{idx} ({type(key).__name__}) "
|
||||||
|
f"user={settings.get('target_user','?')} → {type(ex_ssh).__name__}: {ex_ssh}")
|
||||||
continue
|
continue
|
||||||
return None, None
|
return None, None
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user