60 lines
2.1 KiB
Python
60 lines
2.1 KiB
Python
"""Send the SANEF Qualys V3 xlsx to khalid.moutaouakil-ext@sanef.com via Gmail SMTP.
|
|
|
|
App Password lu depuis variable d'env GMAIL_APP_PASSWORD (jamais en dur dans le script).
|
|
"""
|
|
import os
|
|
import smtplib
|
|
import ssl
|
|
from email.message import EmailMessage
|
|
from pathlib import Path
|
|
|
|
SENDER = "kalid.moutaouakil@gmail.com"
|
|
RECIPIENT = "khalid.moutaouakil-ext@sanef.com"
|
|
ATTACHMENT = Path(r"C:\Claude\sanef\QL\docs\SANEF_Qualys_Tags_V3_RuleTypes_v2.xlsx")
|
|
|
|
password = os.environ.get("GMAIL_APP_PASSWORD")
|
|
if not password:
|
|
raise SystemExit("GMAIL_APP_PASSWORD non defini dans l'environnement")
|
|
|
|
password = password.replace(" ", "") # Gmail App Password sans espaces
|
|
|
|
msg = EmailMessage()
|
|
msg["From"] = SENDER
|
|
msg["To"] = RECIPIENT
|
|
msg["Subject"] = "SANEF Qualys - Tags V3 (taxonomie complete + descriptions)"
|
|
msg.set_content(
|
|
"Bonjour Khalid,\n\n"
|
|
"En piece jointe le tableau de reference de la taxonomie Qualys V3 :\n"
|
|
" - Feuille 1 : 23 tags dynamiques (OS, EQT, ENV, POS, NOM-LEGACY, TAG-EMV, TAG-OBS) avec couleurs, descriptions et requetes QQL\n"
|
|
" - Feuille 2 : 7 tags statiques (TAG-SED, TAG-SEI, TAG-ELS, TAG-DEC, TAG-INT, TAG-SIC, TAG-SIA)\n"
|
|
" - Feuille 3 : prefixes a creer manuellement (APP, BDD, VRF, MID, VULN)\n\n"
|
|
"Mises a jour de cette version :\n"
|
|
" - Renommage TYP -> EQT (Equipement)\n"
|
|
" - Descriptions OS-* et EQT-* harmonisees\n"
|
|
" - ENV-TST corrige : exclusion des postes Superviseur Peage (svp*)\n"
|
|
" - EQT-SRV idem (and not asset.name:svp*)\n\n"
|
|
"Cordialement,\n"
|
|
"SECOPS\n"
|
|
)
|
|
|
|
if not ATTACHMENT.exists():
|
|
raise SystemExit(f"Fichier introuvable : {ATTACHMENT}")
|
|
|
|
with ATTACHMENT.open("rb") as f:
|
|
msg.add_attachment(
|
|
f.read(),
|
|
maintype="application",
|
|
subtype="vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
filename=ATTACHMENT.name,
|
|
)
|
|
|
|
ctx = ssl.create_default_context()
|
|
with smtplib.SMTP("smtp.gmail.com", 587, timeout=30) as s:
|
|
s.ehlo()
|
|
s.starttls(context=ctx)
|
|
s.ehlo()
|
|
s.login(SENDER, password)
|
|
s.send_message(msg)
|
|
|
|
print(f"Mail envoye a {RECIPIENT} avec piece jointe {ATTACHMENT.name} ({ATTACHMENT.stat().st_size} bytes)")
|