Files
janssen/Python-runner/python_runner.md
T
2026-06-02 17:20:20 +02:00

4.0 KiB

python-runner — Docker kontejner na Tower

Základní info

Parametr Hodnota
Název python-runner
Image python-runner (vlastní)
Status running (unless-stopped)
Python 3.12.13
Spouštěcí cmd tail -f /dev/null — container jen běží, skripty se spouštějí ručně
Working dir /scripts
Vytvořen 2026-06-02

Tower — SSH přístup

Parametr Hodnota
Host tower / 192.168.1.76
Port 22
User root
Heslo 7309208104

Připojení přes Python (paramiko) — Docker CLI není lokálně dostupný:

import paramiko
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
c.connect('192.168.1.76', username='root', password='7309208104')
_, out, _ = c.exec_command('...')
print(out.read().decode())
c.close()

Volume mounty

Host (Unraid) Kontejner Popis
/mnt/user/Scripts /scripts Skripty, logy — working dir
/mnt/user/JNJEMAILS /mnt/JNJEMAILS .msg soubory emailů (JNJ)

Spouštění skriptů

# Interaktivně (vidíš výstup):
docker exec -it python-runner python /scripts/parse_emails_tower_v1.1.py --limit 50 --no-indexes

# Na pozadí (log do souboru):
docker exec -d python-runner bash -c \
  "python /scripts/parse_emails_tower_v1.1.py > /scripts/parse_emails.log 2>&1"

# Pokračování po přerušení (skip hotových):
docker exec -d python-runner bash -c \
  "python /scripts/parse_emails_tower_v1.1.py --skip-existing > /scripts/parse_emails.log 2>&1"

# Sledování průběhu:
docker exec -it python-runner tail -f /scripts/parse_emails.log

Aktuální skripty v /scripts

Soubor Popis
parse_emails_tower_v1.1.py Import .msg → MongoDB (db: emaily, kolekce: vbuzalka@its.jnj.com)
parse_emails_tower_v1.1.md Dokumentace ke skriptu
parse_emails.log Log průběhu importu
parse_emails_errors.log Log chyb (soubory které selhaly)

Lokální protějšek: EmailsImport/parse_emails_v1.0.py — identický kód, liší se jen cestou (\\tower\JNJEMAILS SMB vs. /mnt/JNJEMAILS lokální mount) a verzí hlavičky.


Nainstalované Python balíčky

extract-msg        0.55.0
pymongo            4.17.0
python-dateutil    2.9.0.post0
cryptography       48.0.0
beautifulsoup4     4.13.5
oletools           0.60.2
msoffcrypto-tool   6.0.0
olefile            0.47
RTFDE              0.1.2.2
compressed-rtf     1.0.7
lark               1.3.1
pcodedmp           1.2.6
tzlocal            5.3.1
six                1.17.0
pip                25.0.1

Přidání nového balíčku

docker exec python-runner pip install <balicek>

Pozor: instalace se ztratí při recreate kontejneru — je třeba přidat do Dockerfile nebo do setup skriptu.


Logika parse_emails (oba skripty)

  • Čte všechny .msg soubory z MSGS_DIR
  • Extrahuje: předmět, odesílatel, příjemci (To/CC/BCC), tělo (text+HTML), přílohy, internet headers, všechny raw MAPI properties
  • Ukládá do MongoDB: emailyvbuzalka@its.jnj.com
  • _id = Internet Message-ID (nebo filename:<stem> jako fallback)
  • Upsert → bezpečné opakování, --skip-existing pro pokračování
  • Indexy: received_at, sent_at, sender.email, filename (unique), full-text (subject+body+to+cc)