remote-desktop - wer ist connected

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Zack
User
Beiträge: 47
Registriert: Dienstag 24. April 2007, 11:19

Dienstag 24. April 2007, 11:25

Hi,
ich würde gerne wissen, obs eine möglichkeit gibt, die IP des jenigen herauszubekommen, der gerade mit der aktiven remote-desktop-Session verbunden ist.
Ich hab schon überlegt, ob ich mit die IP aus der "netstat" auswertung auslesen lassen soll. Aber das ist relativ umständlich und unelegant.
Wäre super, wenn da jemand einen Ansatz oder eine Idee hätte.
gruß Zack
Zuletzt geändert von Zack am Mittwoch 25. April 2007, 12:37, insgesamt 1-mal geändert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Dienstag 24. April 2007, 13:45

Zack hat geschrieben:Hi,
ich würde gerne wissen, obs eine möglichkeit gibt, die IP des jenigen herauszubekommen, der gerade mit der aktiven remote-desktop-Session verbunden ist.
Ich hab schon überlegt, ob ich mit die IP aus der "netstat" auswertung auslesen lassen soll. Aber das ist relativ umständlich und unelegant.
Wäre super, wenn da jemand einen Ansatz oder eine Idee hätte.
gruß Zack
Hallo Zack!

Willkommen im Python-Forum!

Ich weiß jetzt nicht welche Einträge ins Windows-Log geschrieben werden wenn sich jemand über Remote Desktop zum Computer verbindet. Aber wenn man die Gruppenrichtlinien richtig einstellt, dann gibt es auf jeden Fall einen Eintrag. Vielleicht steht also im Eventlog von Windows auch drinnen, wer und von welchem Computer aus die Verbindung initiiert wurde.

Das Eventlog kann man auslesen. --> mit ``win32evtlog``.

Mehr fällt mir dazu im Moment nicht ein.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Zack
User
Beiträge: 47
Registriert: Dienstag 24. April 2007, 11:19

Dienstag 24. April 2007, 16:10

jo, vielen dank für die begrüßung erstmal.
Habe bei mir bezüglich der eventlog leider keinen Eintrag finden können, welche dieses Protokolieren.

Ich hab jetzt versucht die "netstat"-Lösung umzusetzen.
Folgendes kahm dabei raus:

Code: Alles auswählen

import os
import string
import win32net

for x in os.popen('netstat').readlines():
    i = x
    if i.find("3389"):
        ori = i
        ip = i[i.find(":3389")+5:i.rfind(":")].strip()
print ip
print ori
print win32net.NetWkstaGetInfo(ip,100) #hier steckt der computername drin
Soweit klappt das alles auch ganz gut bei der ausführung. Testweise habe ich die prints dringelassen.
Das Problem ist aber, dass er bei schnellen wiederholten ausführen die falsche netstat-zeile nimmt. Ich kann mir absolut nicht erklären warum er das tut. Ich hab aber so das Gefühl, dass durch den win32net.NetWkstaGetInfo eine neue netstat-zeile am ende ensteht und aus irrgendeinem mir unerfindlichen Grund diese in meiner Schleife verwändet wird.

Normale Compiler-Ausgabe:
192.168.11.217
TCP zack:3389 192.168.11.217:1574 HERGESTELLT
{'platform_id': 500, 'ver_major': 5, 'computername': u'zacknotebook', 'ver_minor': 1, 'langroup': u'ARBEITSGRUPPE'}
2te Compiler-Ausgabe:
P zack:2468 192.168.11.217
TCP zack:2468 192.168.11.217:netbios-ssn SYN_GESENDET
---Errors---
Netstat vorm Ausführen:
TCP zack:2460 va6.orb.com:85 SCHLIESSEN_WARTEN
TCP zack:3389 192.168.11.217:1574 HERGESTELLT
Netstat nach dem "Normale Compiler-Ausgabe"-Vorgang:
TCP zack:2460 va6.orb.com:85 SCHLIESSEN_WARTEN
TCP zack:2473 192.168.11.217:microsoft-ds WARTEND
TCP zack:2476 192.168.11.217:microsoft-ds HERGESTELLT
TCP zack:3389 192.168.11.217:1574 HERGESTELLT
TCP zack:2478 192.168.11.217:netbios-ssn SYN_GESENDET
Offensichtlich nimmt er nun bei 2te Compiler-Ausgabe die unterste Netstat-Zeile.

Habs versucht etwas übersichtlicher zu machen.
Hoffe jemand kann mir dabei weiterhelfen.
gruss Zack
BlackJack

Dienstag 24. April 2007, 16:28

`str.find()` liefert -1 zurück falls nichts gefunden wird und -1 ist *wahr*, das heisst der ``if``-Zweig in der Schleife wird *immer* ausgeführt. Es sei denn '3389' steht am Anfang einer Zeile.

Mach daraus ein ``if '3389' in line:``.
Zack
User
Beiträge: 47
Registriert: Dienstag 24. April 2007, 11:19

Mittwoch 25. April 2007, 08:16

Ihr seid die Größten \o/
Ich hätte schon stutzig werden sollen, als ich testweise eine print-funktion in der schleife hatte, die x-mal ausgeführt wurde.
Klappt aber alles wunderbar.
Vielen dank
Antworten