Nur um das mal vom Ablauf zusammenzufassen:
Der Mitarbeiter, der Unterstützung braucht, klickt einen Starter auf dem Desktop an und darauf hin soll dein Rechner eine VNC-Verbindung zum VNC-Server auf dem Rechner des Mitarbeiters aufbauen?
Eine Idee wäre ein Dienst auf deinem Rechner, der auf eingehende HTTP-Anfragen reagiert und dann die Verbindung initiiert - dann könntest du auf dem Client einen GET-Request über eine .desktop-Datei, ein Browser-Lesezeichen oder ähnliches verfügbar zu machen:
| #!/bin/bash
curl http://IP_DEIN_RECHNER:5000/vnc
|
Und auf deinem Rechner (mit installiertem Paket python3-flask) hast du dann z.B. eine vnc_connector.py:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 | #!/usr/bin/env python3
import subprocess
import sys
from concurrent.futures import ThreadPoolExecutor
from flask import Flask, request
executor = ThreadPoolExecutor()
app = Flask(__name__)
connections = set()
def open_vnc_client(addr):
global connections
if not addr in connections:
connections.add(addr)
cmd = ['/usr/local/bin/connect_vnc', addr]
print("executing", " ".join(cmd))
try:
r = subprocess.check_output(cmd)
except Exception as e:
print("executing", " ".join(cmd), "failed:", repr(e), file=sys.stderr)
try:
connections.remove(addr)
except KeyError: pass
@app.route('/vnc')
def init_vnc():
executor.submit(open_vnc_client, request.remote_addr)
return "ok", 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, threaded=True)
|
Dann brauchst du noch ein ausführbarer Skript /usr/local/bin/connect_vnc (wenn du einen anderen Pfad willst, kannst du das im Code anpassen), das als erstes Argument die IP-Addresse des Gegenüber nimmt und die Verbindung aufbaut (du solltest einen SSH-Agent eingerichtet haben und dich mit einem Public Key am Gegenüber authentifizieren können - vgl. Gesicherte VNC-Verbindung über SSH), also z.B. rudimentär falls du dich mit dem Benutzer user
am Client per SSH anmelden kannst:
| #!/bin/bash
vncviewer -via "user@$1" localhost:0
|
Das Python-Skript kannst ausführbar machen und dann z.B. aus einer Shell heraus so starten (natürlich kannst du dir dafür auch einen Starter basteln oder es als Hintergrunddienst in deiner Desktop-Sitzung einrichten):