"Fichier à jour avec connexion SSH"
This commit is contained in:
@@ -9,35 +9,53 @@ load_dotenv()
|
|||||||
HOST = os.getenv("SSH_HOST")
|
HOST = os.getenv("SSH_HOST")
|
||||||
USER = os.getenv("SSH_USER")
|
USER = os.getenv("SSH_USER")
|
||||||
KEY = os.getenv("SSH_KEY")
|
KEY = os.getenv("SSH_KEY")
|
||||||
|
PASSPHRASE = os.getenv("SSH_KEY_PASSPHRASE")
|
||||||
|
|
||||||
|
root = tk.Tk()
|
||||||
|
root.withdraw()
|
||||||
|
|
||||||
|
# 🛡 Vérifie que le fichier existe
|
||||||
|
if not os.path.exists(KEY):
|
||||||
|
messagebox.showerror("❌ Erreur", f"Clé SSH introuvable :\n{KEY}")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
# 🛡 Vérifie que la clé est lisible par paramiko
|
||||||
|
try:
|
||||||
|
paramiko.RSAKey.from_private_key_file(KEY, password=PASSPHRASE)
|
||||||
|
except paramiko.PasswordRequiredException:
|
||||||
|
messagebox.showerror("❌ Clé protégée", "La clé est protégée par une passphrase, mais aucune n'a été fournie.")
|
||||||
|
exit(1)
|
||||||
|
except paramiko.SSHException:
|
||||||
|
messagebox.showerror("❌ Erreur de format", "Le fichier de clé n’est pas au format OpenSSH.\n\nSolution : Exporter depuis PuTTYgen → Conversions > Export OpenSSH key")
|
||||||
|
exit(1)
|
||||||
|
except Exception as e:
|
||||||
|
messagebox.showerror("❌ Autre erreur", f"{e}")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
# ✅ Si la clé est valide, on continue
|
||||||
client = paramiko.SSHClient()
|
client = paramiko.SSHClient()
|
||||||
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||||
|
|
||||||
try:
|
try:
|
||||||
client.connect(hostname=HOST, username=USER, key_filename=KEY)
|
client.connect(
|
||||||
|
hostname=HOST,
|
||||||
|
username=USER,
|
||||||
|
key_filename=KEY,
|
||||||
|
passphrase=PASSPHRASE
|
||||||
|
)
|
||||||
|
|
||||||
stdin, stdout, stderr = client.exec_command("bash ~/travail/Gestion_sondes/scripts/deploy_all.sh")
|
stdin, stdout, stderr = client.exec_command("bash ~/travail/Gestion_sondes/scripts/deploy_all.sh")
|
||||||
|
|
||||||
output = stdout.read().decode()
|
output = stdout.read().decode()
|
||||||
errors = stderr.read().decode()
|
errors = stderr.read().decode()
|
||||||
|
|
||||||
if "Déploiement complet terminé avec succès" in output:
|
if "Déploiement complet terminé avec succès" in output:
|
||||||
success = True
|
messagebox.showinfo("✅ Déploiement réussi", "Le déploiement s'est bien déroulé.")
|
||||||
else:
|
else:
|
||||||
success = False
|
messagebox.showwarning("⚠️ Déploiement incomplet", f"Vérifie les logs :\n\n{errors}")
|
||||||
|
|
||||||
# Affichage de la notification visuelle
|
|
||||||
root = tk.Tk()
|
|
||||||
root.withdraw() # cache la fenêtre principale
|
|
||||||
|
|
||||||
if success:
|
|
||||||
messagebox.showinfo("Déploiement terminé", "✅ Le déploiement s'est bien déroulé !")
|
|
||||||
else:
|
|
||||||
messagebox.showwarning("Déploiement partiel", f"⚠️ Déploiement incomplet. Vérifiez les logs.\n\n{errors}")
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
root = tk.Tk()
|
messagebox.showerror("❌ Erreur SSH", f"{e}")
|
||||||
root.withdraw()
|
|
||||||
messagebox.showerror("Erreur SSH", f"❌ Erreur : {e}")
|
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
client.close()
|
client.close()
|
||||||
|
|||||||
Reference in New Issue
Block a user