TeamViewer läuft nur, wenn die GUI gestartet wurde

TeamViewer läuft nur, wenn die GUI gestartet wurde

Ich habe einen funktionierenden TeamViewer, zu dem ich erfolgreich eine Verbindung herstellen kann, nachdem ich die GUI von TeamViewer gestartet habe. Leider kann ich jedoch keine Verbindung zu meinem Computer herstellen, wenn die GUI von TeamViewer nicht gestartet ist. Alle verfügbaren Dokumentationen legen nahe, dass das Ausführen des TeamViewer-Daemons teamviewerdausreicht, um eine Remoteverbindung zu einem Computer herzustellen, aber bei mir scheint dies nicht der Fall zu sein.

Ohne TeamViewer-GUI (nur teamviewerd)

Ausgabe von teamviewer status:

 TeamViewer                           11.0.57095  (DEB) 

 teamviewerd status                   ● teamviewerd.service - TeamViewer remote control daemon
   Loaded: loaded (/etc/systemd/system/teamviewerd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sa 2016-04-30 17:01:55 CEST; 11min ago
  Process: 15518 ExecStart=/opt/teamviewer/tv_bin/teamviewerd -d (code=exited, status=0/SUCCESS)
 Main PID: 15521 (teamviewerd)
   CGroup: /system.slice/teamviewerd.service
           └─15521 /opt/teamviewer/tv_bin/teamviewerd -d

Apr 30 17:01:54 rvaio systemd[1]: Starting TeamViewer remote control daemon...
Apr 30 17:01:55 rvaio systemd[1]: teamviewerd.service: PID file /var/run/teamviewerd.pid not readable (yet?) after start: No such file or directory
Apr 30 17:01:55 rvaio systemd[1]: Started TeamViewer remote control daemon. 

 TeamViewer ID:                        123456789

Ausgabe von sudo netstat -ntap | grep teamviewer:

tcp        0      0 0.0.0.0:5938            0.0.0.0:*               LISTEN      1447/teamviewerd
tcp        0      0 127.0.0.1:5940          0.0.0.0:*               LISTEN      1447/teamviewerd
tcp6       0      0 :::5938                 :::*                    LISTEN      1447/teamviewerd

Mit TeamViewer GUI gestartet

Ausgabe von teamviewer status:

 TeamViewer                           11.0.57095  (DEB) 

 teamviewerd status                   ● teamviewerd.service - TeamViewer remote control daemon
   Loaded: loaded (/etc/systemd/system/teamviewerd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sa 2016-04-30 17:01:55 CEST; 18min ago
  Process: 15518 ExecStart=/opt/teamviewer/tv_bin/teamviewerd -d (code=exited, status=0/SUCCESS)
 Main PID: 15521 (teamviewerd)
   CGroup: /system.slice/teamviewerd.service
           └─15521 /opt/teamviewer/tv_bin/teamviewerd -d

Apr 30 17:01:54 rvaio systemd[1]: Starting TeamViewer remote control daemon...
Apr 30 17:01:55 rvaio systemd[1]: teamviewerd.service: PID file /var/run/teamviewerd.pid not readable (yet?) after start: No such file or directory
Apr 30 17:01:55 rvaio systemd[1]: Started TeamViewer remote control daemon. 

 TeamViewer ID:                        123456789

Ausgabe von sudo netstat -ntap | grep teamviewer:

tcp        0      0 0.0.0.0:5938            0.0.0.0:*               LISTEN      15521/teamviewerd
tcp        0      0 127.0.0.1:5940          0.0.0.0:*               LISTEN      15521/teamviewerd
tcp        0      0 127.0.0.1:5940          127.0.0.1:48475         ESTABLISHED 15521/teamviewerd
tcp6       0      0 :::5938                 :::*                    LISTEN      15521/teamviewerd
tcp6       0      0 2003:72:2d76:2701:46132 2a01:488:2001:1c01:5938 ESTABLISHED 15521/teamviewerd

Wie Sie sehen, werden beim Starten der GUI zwei Verbindungen hergestellt, anders als wenn nur der Daemon gestartet wird.

Antwort1

Ich habe dieses Problem auch und habe festgestellt, dass es möglicherweise am Programm selbst liegt. Meine Lösung bestand darin, ein in Ubuntu verfügbares Programm namens gDevilspie zu verwenden.

Sie müssen im Programm zwei Regeln einrichten, um das Hauptfenster und die Kontaktliste auszublenden. Bildbeschreibung hier eingeben

So richte ich TeamViewer ein

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

hier sind die Einstellungen, die ich verwendet habe:

Für TeamViewer:

application_name equals Computers & Contacts 
window_name      equals Computers & Contacts 

Der Screenshot zeigt die Aktionen für dieses Fenster

Für TeamViewer2:

application_name equals TeamViewer 
window_name      equals TeamViewer 

Die Aktionen, die ich für diese Regel verwendet habe, sind: Schließen

Dies liegt an der Art und Weise, wie mein TeamViewer eingerichtet ist. Dadurch wird das Hauptfenster geschlossen und es wird in meiner Taskleiste ausgeführt.

Obwohl es jetzt in der Taskleiste ausgeführt wird ... Wenn ich es anzeigen möchte, kann ich nicht auf das Symbol klicken und „TeamViewer anzeigen“ auswählen, da es sich sonst einfach öffnet und wieder schließt. Ich muss gDevilspie beenden, um das Programm zu öffnen/anzuzeigen. Denken Sie daran.

Antwort2

Erweiterung aufwas @JohnOrion gepostet hat, ich habe eine Lösung, die zuverlässiger ist. Anstatt die Fenster von TeamViewer immer zu beenden, schließt es die beiden Fenster einfach beim Programmstart und hört dann auf, sie in Zukunft zu schließen. So müssen Sie vorgehen:

  1. Installieren devilspieund procmail.

    sudo apt-get install devilspie procmail
    
  2. Schreiben Sie dies in ~/.devilspie/TeamViewer.ds:

    (if
        (or
            (and
                (is (application_name) "TeamViewer")
                (is (window_name) "TeamViewer")
            )
            (and
                (is (application_name) "Computers & Contacts")
                (is (window_name) "Computers & Contacts")
            )
        )
        (begin
            (close)
            (spawn_async "~/bin/teamviewer/tvwindow")
        )
    )
    
  3. Erstellen Sie ein Verzeichnis, in dem Sie einige Skripte ablegen möchten. Ich habe gewählt ~/bin/teamviewer, aber Sie können wählen, was Sie möchten. Wenn Sie dieses Verzeichnis ändern, stellen Sie sicher, dass Sie es auch im Skript in Schritt 2 ändern.

    mkdir -p ~/bin/teamviewer
    
  4. Schreiben Sie diesen Inhalt in ~/bin/teamviewer/tvwindow(ändern Sie bei Bedarf auch hier das Verzeichnis):

    #!/usr/bin/env bash
    
    source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/vars"
    
    lockfile teamviewerstartup.lock
    
    # read remaining windows
    REMAINING_WINDOWS=$(cat "$REMAINING_WINDOWS_FILE")
    REMAINING_WINDOWS_NOW=$(($REMAINING_WINDOWS - 1))
    
    if [ $REMAINING_WINDOWS_NOW -eq 0 ]; then
        # TeamViewer has started up completely, kill devilspie
        kill $(cat "$DEVILSPIE_PID_FILE")
        # Also remove temporary files
        rm -f "$DEVILSPIE_PID_FILE"
        rm -f "$REMAINING_WINDOWS_FILE"
    else
        # One or more windows to go, write the decremented value to the file
        echo -n "$REMAINING_WINDOWS_NOW" > "$REMAINING_WINDOWS_FILE"
    fi
    
    rm -f teamviewerstartup.lock
    
  5. Schreiben Sie diesen Inhalt in ~/bin/teamviewer/tvminimizedstart(ändern Sie bei Bedarf auch hier das Verzeichnis):

    #!/usr/bin/env bash
    
    source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/vars"
    
    nohup devilspie > /dev/null 2>&1 &
    DEVILSPIE_PID=$!
    
    lockfile teamviewerstartup.lock
    
    # Write PID of devilspie process
    echo -n "$DEVILSPIE_PID" > "$DEVILSPIE_PID_FILE"
    # Set remaining to be closed windows to 2
    echo -n "2" > "$REMAINING_WINDOWS_FILE"
    
    rm -f teamviewerstartup.lock
    
    nohup teamviewer >/dev/null 2>&1 &
    
  6. Schreiben Sie diesen Inhalt in ~/bin/teamviewer/vars(ändern Sie bei Bedarf auch hier das Verzeichnis):

    #!/usr/bin/env bash
    
    DEVILSPIE_PID_FILE="$HOME/bin/teamviewer/devilspiepid"
    REMAINING_WINDOWS_FILE="$HOME/bin/teamviewer/remaining-windows"
    
  7. Machen Sie sie ausführbar.

    chmod +x ~/bin/teamviewer/tvwindow ~/bin/teamviewer/tvminimizedstart ~/bin/teamviewer/vars
    

So verwenden Sie diese Lösung, führen Sie das tvminimizedstartSkript aus:

~/bin/teamviewer/tvminimizedstart

verwandte Informationen