z230
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user