Im Hintergrund kopieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

@nezzcarth: es geht doch um einen geteilte Datenbank die modifiziert und dabei ein Passwort in das clipboard geschoben wird. Ein Prozess im Hintergrund verkompliziert das bestenfalls. Wirklich bringen tut er nix.
Mou10
User
Beiträge: 9
Registriert: Dienstag 8. Juni 2021, 23:25

@rogerb:Danke erstmal für den Code...
Aber ich kann irgendwie trotzdem währenddessen nicht im Terminal weiterarbeiten.....
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

Mou10 hat geschrieben: Mittwoch 9. Juni 2021, 22:32 @rogerb:Danke erstmal für den Code...
Aber ich kann irgendwie trotzdem währenddessen nicht im Terminal weiterarbeiten.....
Richtig, es ist nichts weiter als ein kleines Script welches, Tastatureingaben im Hintergrund in den Zwischenspeicher kopiert um sie dann an anderer Stelle einzufügen.
Es ist leider noch immer unklar was du erreichen möchtest. Du willst in der Konsole "arbeiten" ? und dann wenn du irgendwann ein Passwort eintippst soll das in den Zwischenspeicher kopiert werden, von wo es dann innerhalb von 45 Sekunden noch verfügbar ist.
Wie soll das Programm zwischen normalem Arbeiten in der Konsole und Passworteintippen unterscheiden? Wo werden die Passwörter denn eingetippt? In ein Browserformular?

Vielleicht brauchst du einen intelligenten Keylogger?
Sicher ein interessantes Hobbyprojekt, und ich würd mich da auch gerne mal tiefer reindenken, aber leider sind für mich jedenfalls immer noch zu viele Fragen offen.
Mou10
User
Beiträge: 9
Registriert: Dienstag 8. Juni 2021, 23:25

Ich versuche es mal dann genauer zu erklären.
Ich habe mit Argpaprse Befehle erstellt, die ich im Terminal dann benutzen kann. Die Befehle sind zum Beispiel add, display, delete.
Die Argumente sind dann Username und Passwort. Im Terminal schreibe ich dann zum Beispiel:
python3 Passwortmanager.py add --username usernamebeispiel1 --passwort Passwortbeispiel1. Demnach sollen dann das Username und das Passwort zunächst in einer Textdatei gespeichert werden. Das habe ich schon hinbekommen. Aber dazu soll eben nur das Passwort in der Zwischenablage für 45 Sekunden gespeichert werden.
Der Benutzer soll aber nicht die 45 Sekunden im Terminal abwarten. Es könnte ja auch sein, dass er in den 45 Sekunden einen anderen Befehl wie display benutzen möchte. Das kopieren des Passworts soll im Hintergrund passieren. Der Benutzer soll nichts davon mitbekommen. Auch wenn die Zwischenablage wieder geleert wird, soll er nichts mitbekommen. Es soll einfach im Hintergrund passieren.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Hättest Du das gleich gesagt, dann hätte man Dir auch gleich die passende Lösung bieten können:

Code: Alles auswählen

import os
import time
import pyperclip


def main():
    password = "geheim"

    pyperclip.copy(password)
    if os.fork() == 0:
        time.sleep(45)
        if pyperclip.paste() == password:
            pyperclip.copy(' ')

if __name__ == "__main__":
    main()
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Sirius3: Naja, das ist eine Lösung auf Betriebssystemen wo es `os.fork()` gibt. Und falls innerhalb der 45 Sekunden das gleiche noch mal gestartet wird, dann lungert da immer noch dieser Prozess der die Zwischenablage leert herum, den man dann eigentlich canceln wollen würde.

@Mou10: Insbesondere dieses Problem ist nicht so leicht zu lösen wenn man kein durchgehend laufendes Programm hat, sondern für jede Aktion einen neuen Prozess startet.

Anmerkungen zu den Argumenten: Benutzername und Passwort bei ``add`` sollten keine Optionen sein, denn die sind in dem Fall ja gar nicht optional. Das wäre also eher ``./Passwortmanager.py add usernamebeispiel1 Passwortbeispiel1``.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Mou10
User
Beiträge: 9
Registriert: Dienstag 8. Juni 2021, 23:25

@Sirius3: Danke.... es passiert jedenfalls genau das, was ich mir vorgestellt habe. Könntest du mir noch erklären was da genau jetzt passiert? Was passiert denn durch das os.fork()? Im Prinzip hatte ich das gleiche gemacht. Aber immer wenn time.sleep benutzt wurde, ist der Terminal irgendwie eingefroren. Wieso passiert es jetzt nicht? Und alles passiert im Hintergrund?
@__blackjack__: Danke daran hatte ich überhaupt nicht gedacht..... ich werde die Argumente anpassen.
Mou10
User
Beiträge: 9
Registriert: Dienstag 8. Juni 2021, 23:25

@Sirius3: Und was genau bewirkt die If Abfrage am Ende?
if pyperclip.paste() == password:
pyperclip.copy(' ')
Wenn nach 10 Sekunden in der Zwischenablage das Passwort steht, dann soll das Leerzeichen kopiert werden oder?
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@__blackjack__: natürlich schreibt man dafür einen Dämon, und schaut, ob der schon läuft, oder startet einen neuen und kommuniziert mit dem.
Das Plattformunabhängig hin zu bekommen ist dann die Fleißaufgabe.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Warum denn einen Dämon, wenn ein thread reichen würde?
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@__deets__: weil sich das eigentliche Programm beenden muß, damit man wieder auf die Konsole kommt.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Er will eine Konsolenanwendung. So verstehe ich das zumindest. Die eben per Eingaben operiert, wie fdisk oder Ähnliches.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@__deets__: Die Anforderung ist ``program.py add user password`` einzugeben und das Programm soll dann a) sofort enden um wieder mit dem Terminal arbeiten zu können *und* nach x Sekunden die Zwischenablage leeren. Es soll *nicht* x Sekunden laufen und das Terminal blockieren.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ah. Joa. Dann wird’s kompliziert.
Antworten