4.0 KiB
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
.msgsoubory 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:
emaily→vbuzalka@its.jnj.com _id= Internet Message-ID (nebofilename:<stem>jako fallback)- Upsert → bezpečné opakování,
--skip-existingpro pokračování - Indexy: received_at, sent_at, sender.email, filename (unique), full-text (subject+body+to+cc)