Remotezugriff mit Python(? )erkennen und darauf reagieren.

Gast #6664430
Lesenswert?

Guten Morgen,
ich würde gerne wissen ob euch eine Möglichkeit einfällt wie ich, 
beispielsweise mittels einem Pythonscript, überwachen kann ob sich ein 
Benutzer per Remotedesktopverbindung auf eine Maschine (Windows7/10) 
eingeloggt hat?

Ich gehe davon aus ich müsste einen Port überwachen der wenn niemand 
eingeloggt ist, aktiv ist. Aber diese Ports "lauschen" ja auch die ganze 
Zeit ob da jemand anklopft.

Wenn das Script dann einen Remotezugriff erkannt hat, möchte ich 
(vermutlich über einen Arduino etc.) einfach nur eine Lampe einschalten, 
so dass man von außen erkennen kann ob bereits jemand eingeloggt ist.

Ich würde mich über eine Antwort freuen und bedanke mich im Voraus.
Eric
Gast #6665906
Lesenswert?

Hallo,
ich habe es jetzt so gelöst:

          ergebnis=os.system('netstat -n | find "3389"')

Das "ergebnis", sprich ob der Port offen ist, ist entweder 0 oder 1 und 
wenn er 0 ist mache ich dieses und wenn er eins ist mache ich das andere 
:-)

Vielen Dank für eure Hilfe.
Gast #6670111
Lesenswert?

Eric schrieb:
> ich würde gerne wissen ob euch eine Möglichkeit einfällt wie ich,
> beispielsweise mittels einem Pythonscript, überwachen kann ob sich ein
> Benutzer per Remotedesktopverbindung auf eine Maschine (Windows7/10)
> eingeloggt hat?

Auch Windows wird wissen wer angemeldet ist. Unter Linux wäre das 
Kommando "who -T" unter Windows gibt es sicher was Ähnliches. Das 
Internet sagt: "query user" sollte das können.
Vielleicht macht es mehr Sinn sich das Kommando anzusehen. Statt mit 
os.system andauert netstat aufzurufen.

Ansonsten, wenn es deine Python/Netstat Lösung sein soll. os.system ist 
meistens das falsche, besser subprocess.popen benutzen.

Wenn du eine reine Python Implementierung willst das PIP Module psutils 
behauptet, auch unter Windows alle offenen Ports zurückgeben zu können.
Gast #6670129
Lesenswert?

Imonbln schrieb:
> Auch Windows wird wissen wer angemeldet ist. Unter Linux wäre das
> Kommando "who -T" unter Windows gibt es sicher was Ähnliches.

Es ist aber nicht gefragt, wer angemeldet ist, sondern ob jemand remote 
angemeldet ist.

Imonbln schrieb:
> os.system ist
> meistens das falsche, besser subprocess.popen benutzen.

Begründung? Meist? Vielleicht hier doch das richtige?
Gast #6670196
Lesenswert?

Karl schrieb:
> Imonbln schrieb:
>> Auch Windows wird wissen wer angemeldet ist. Unter Linux wäre das
>> Kommando "who -T" unter Windows gibt es sicher was Ähnliches.

...oder w(1)...

> Es ist aber nicht gefragt, wer angemeldet ist, sondern ob jemand remote
> angemeldet ist.

Das läßt sich unter Linux mit den ausgegebenen Daten von w(1) oder 
who(1) recht einfach herausfinden, wenn man denn so unelegant sein will, 
ein externes Programm aufzurufen. Wesentlich eleganter, weil pythonisch 
und plattformunabhängig, ist natürlich so etwas wie
1
import psutil
2
connected_users = filter(lambda x: x.host != 'localhost', psutil.users())

Dabei ist allerdings zu beachten, daß "psutil" kein Standardmodul ist, 
sondern separat installiert werden muß, etwa mit pip -- und das 
natürlich idealerweise isoliert von der systemweiten Installation in 
einer virtuellen Umgebung, wie sie mit "virtualenv" oder "venv" erstellt 
werden kann.

> Imonbln schrieb:
>> os.system ist
>> meistens das falsche, besser subprocess.popen benutzen.
>
> Begründung? Meist? Vielleicht hier doch das richtige?

Die Dokumentation von os.system: "The subprocess module provides more 
powerful facilities for spawning new processes and retrieving their 
results; using that module is preferable to using this function."

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren