34 lines
1.6 KiB
Python
34 lines
1.6 KiB
Python
"""Local SSH harness; uses existing credential helper without copying credentials."""
|
|
import json
|
|
import sys
|
|
import tempfile
|
|
import time
|
|
from pathlib import Path
|
|
sys.path.insert(0, tempfile.gettempdir())
|
|
from vdi_ubuntu_remote import ROOT, box, guest, password, run
|
|
|
|
g, b = guest(), box()
|
|
env = 'DISPLAY=:0 XAUTHORITY=/run/user/1000/gdm/Xauthority XDG_RUNTIME_DIR=/run/user/1000 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus '
|
|
try:
|
|
s = g.open_sftp()
|
|
s.put(str(ROOT/'docs/evidence/ubuntu-drag-20261105/drag-source.py'), '/tmp/vdi-ubuntu-drag-source.py')
|
|
s.close()
|
|
i, o, e = g.exec_command('sudo -S -p "" loginctl unlock-sessions')
|
|
i.write(password()+'\n'); i.flush(); i.channel.shutdown_write()
|
|
assert o.channel.recv_exit_status() == 0, e.read().decode()
|
|
print(run(b, 'DISPLAY=:0 XAUTHORITY=/home/armbian/.Xauthority xdotool key Escape'))
|
|
print(run(g, env+'systemd-run --user --unit=vdi-deep-drag --collect /usr/bin/python3 /tmp/vdi-ubuntu-drag-source.py'))
|
|
time.sleep(4)
|
|
s = b.open_sftp()
|
|
s.put(str(ROOT/'docs/evidence/ubuntu-drag-20261105/drag-probe.py'), '/tmp/vdi-deep-drag-probe.py')
|
|
s.close()
|
|
result = run(b, 'python3 /tmp/vdi-deep-drag-probe.py', 30)
|
|
print(result['err'])
|
|
assert result['rc'] == 0, result
|
|
d = json.loads(result['out'])
|
|
(Path(__file__).parent/(sys.argv[1]+'.json')).write_text(json.dumps(d, indent=2), encoding='utf-8')
|
|
print({k: v for k, v in d.items() if k != 'frames'})
|
|
finally:
|
|
print(run(g, 'XDG_RUNTIME_DIR=/run/user/1000 systemctl --user stop vdi-deep-drag'))
|
|
g.close(); b.close()
|