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

123 lines
4.0 KiB
Markdown

# 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ý:
```python
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ů
```bash
# 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
```bash
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: `emaily``vbuzalka@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)