123 lines
4.0 KiB
Markdown
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)
|