41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""Spusti blokujici ingest na serveru (docker exec drzeny pres paramiko).
|
|
Loguje progress kazdych 30s. Idempotentni - hotove slozky preskoci."""
|
|
import sys
|
|
import time
|
|
import paramiko
|
|
|
|
c = paramiko.SSHClient()
|
|
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
|
c.connect("192.168.1.76", username="root", password="7309208104", timeout=10)
|
|
|
|
cmd = (
|
|
"docker exec -e PYTHONIOENCODING=utf-8 python-runner "
|
|
"python -u /scripts/MailStore/mailstore_ingest_v1.0.py "
|
|
"vladimir.buzalka@buzalka.cz --since 2020 "
|
|
"--log-file /scripts/MailStore/ingest_full.log "
|
|
"--checkpoint /scripts/MailStore/ingest_done.txt"
|
|
)
|
|
|
|
tr = c.get_transport()
|
|
ch = tr.open_session()
|
|
ch.exec_command(cmd)
|
|
|
|
t0 = time.time()
|
|
buf = b""
|
|
while not ch.exit_status_ready():
|
|
while ch.recv_ready():
|
|
buf += ch.recv(65536)
|
|
time.sleep(30)
|
|
mins = (time.time() - t0) / 60
|
|
print("[%5.1f min] bezi..." % mins, flush=True)
|
|
|
|
while ch.recv_ready():
|
|
buf += ch.recv(65536)
|
|
rc = ch.recv_exit_status()
|
|
print("=== EXIT %d po %.1f min ===" % (rc, (time.time() - t0) / 60), flush=True)
|
|
sys.stdout.buffer.write(buf[-2000:])
|
|
c.close()
|
|
sys.exit(rc)
|